diff --git a/src/starboard/.gitignore b/src/starboard/.gitignore
new file mode 100644
index 0000000..69fbb00
--- /dev/null
+++ b/src/starboard/.gitignore
@@ -0,0 +1,7 @@
+*.pyc
+*.sublime-workspace
+*.swp
+xcuserdata
+.DS_Store
+keyboxes
+keyboxes-dev
diff --git a/src/starboard/BUILD.gn b/src/starboard/BUILD.gn
index b421b3e..0902779 100644
--- a/src/starboard/BUILD.gn
+++ b/src/starboard/BUILD.gn
@@ -37,10 +37,10 @@
     deps += [ "//$starboard_path/platform_targets" ]
   }
 
-  if (has_platform_tests) {
-    deps += [ "//$starboard_path/starboard_platform_tests" ]
-  } else {
+  if (platform_tests_path == "") {
     deps += [ ":starboard_platform_tests" ]
+  } else {
+    deps += [ platform_tests_path ]
   }
 
   if (sb_filter_based_player) {
@@ -147,7 +147,7 @@
   ]
 }
 
-if (!has_platform_tests) {
+if (platform_tests_path == "") {
   # If 'starboard_platform_tests' is not defined by the platform, then an
   # empty 'starboard_platform_tests' target is defined.
   target(gtest_target_type, "starboard_platform_tests") {
diff --git a/src/starboard/_env.py b/src/starboard/_env.py
index f091f9e..332eabc 100644
--- a/src/starboard/_env.py
+++ b/src/starboard/_env.py
@@ -15,7 +15,7 @@
 #
 """Ask the parent directory to load the project environment."""
 
-from imp import load_source
+from imp import load_source  # pylint: disable=deprecated-module
 from os import path
 import sys
 
diff --git a/src/starboard/android/apk/.gitignore b/src/starboard/android/apk/.gitignore
new file mode 100644
index 0000000..a521b8d
--- /dev/null
+++ b/src/starboard/android/apk/.gitignore
@@ -0,0 +1,8 @@
+*.iml
+.gradle
+/local.properties
+/.idea
+.DS_Store
+/build
+/captures
+build.id
diff --git a/src/starboard/android/apk/app/.gitignore b/src/starboard/android/apk/app/.gitignore
new file mode 100644
index 0000000..bda32a5
--- /dev/null
+++ b/src/starboard/android/apk/app/.gitignore
@@ -0,0 +1,2 @@
+/.cobaltrc
+/build
diff --git a/src/starboard/android/apk/app/src/main/java/dev/cobalt/coat/CobaltSystemConfigChangeReceiver.java b/src/starboard/android/apk/app/src/main/java/dev/cobalt/coat/CobaltSystemConfigChangeReceiver.java
index 5207655..9f2c5d9 100644
--- a/src/starboard/android/apk/app/src/main/java/dev/cobalt/coat/CobaltSystemConfigChangeReceiver.java
+++ b/src/starboard/android/apk/app/src/main/java/dev/cobalt/coat/CobaltSystemConfigChangeReceiver.java
@@ -31,18 +31,39 @@
   CobaltSystemConfigChangeReceiver(Context appContext, Runnable stopRequester) {
     this.isForeground = true;
     this.stopRequester = stopRequester;
-    appContext.registerReceiver(this, new IntentFilter(Intent.ACTION_LOCALE_CHANGED));
+    IntentFilter filter = new IntentFilter();
+    filter.addAction(Intent.ACTION_LOCALE_CHANGED);
+    filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
+    filter.addAction(Intent.ACTION_TIME_CHANGED);
+    filter.addAction(Intent.ACTION_DATE_CHANGED);
+    appContext.registerReceiver(this, filter);
   }
 
   @Override
   public void onReceive(Context context, Intent intent) {
-    if ((!Intent.ACTION_LOCALE_CHANGED.equals(intent.getAction())) || isForeground) return;
+    if (isForeground) {
+      return;
+    }
 
-    Log.w(TAG, "System locale settings have changed.");
-    stopRequester.run();
+    switch (intent.getAction()) {
+      case Intent.ACTION_TIMEZONE_CHANGED:
+      case Intent.ACTION_TIME_CHANGED:
+      case Intent.ACTION_DATE_CHANGED:
+        Log.w(TAG, "System Date or Time have changed.");
+        nativeDateTimeConfigurationChanged();
+        break;
+      case Intent.ACTION_LOCALE_CHANGED:
+        Log.w(TAG, "System locale settings have changed.");
+        stopRequester.run();
+        break;
+      default:
+        Log.w(TAG, "Unknown intent.");
+    }
   }
 
   public void setForeground(final boolean isForeground) {
     this.isForeground = isForeground;
   }
+
+  private native void nativeDateTimeConfigurationChanged();
 }
diff --git a/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/CobaltMediaSession.java b/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/CobaltMediaSession.java
index c31e017..ba0329d 100644
--- a/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/CobaltMediaSession.java
+++ b/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/CobaltMediaSession.java
@@ -521,6 +521,10 @@
   }
 
   private void updateMetadata(boolean resetMetadataWithEmptyBuilder) {
+    if (mediaSession == null) {
+      return;
+    }
+
     MediaMetadataCompat.Builder metadataBuilder = new MediaMetadataCompat.Builder();
     // Reset the metadata to make sure the artwork update correctly.
     if (resetMetadataWithEmptyBuilder) mediaSession.setMetadata(metadataBuilder.build());
diff --git a/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/MediaCodecBridge.java b/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/MediaCodecBridge.java
index 2473e28..fc7752e 100644
--- a/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/MediaCodecBridge.java
+++ b/src/starboard/android/apk/app/src/main/java/dev/cobalt/media/MediaCodecBridge.java
@@ -365,7 +365,7 @@
       }
 
       // This logic is inspired by
-      // https://github.com/google/ExoPlayer/blob/deb9b301b2c7ef66fdd7d8a3e58298a79ba9c619/library/core/src/main/java/com/google/android/exoplayer2/extractor/mkv/MatroskaExtractor.java#L1803.
+      // https://cs.android.com/android/_/android/platform/external/exoplayer/+/3423b4bbfffbb62b5f2d8f16cfdc984dc107cd02:tree/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mkv/MatroskaExtractor.java;l=2200-2215;drc=9af07bc62f8115cbaa6f1178ce8aa3533d2b9e29.
       ByteBuffer hdrStaticInfo = ByteBuffer.allocateDirect(25);
       // Force big endian in case the HDR metadata causes problems in production.
       if (forceBigEndianHdrMetadata) {
diff --git a/src/starboard/android/shared/BUILD.gn b/src/starboard/android/shared/BUILD.gn
index a84353e..a56739f 100644
--- a/src/starboard/android/shared/BUILD.gn
+++ b/src/starboard/android/shared/BUILD.gn
@@ -12,6 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import("//starboard/shared/starboard/media/media_tests.gni")
 import("//starboard/shared/starboard/player/buildfiles.gni")
 
 config("starboard_platform_config") {
@@ -179,7 +180,6 @@
     "//starboard/shared/signal/crash_signals_sigaction.cc",
     "//starboard/shared/signal/suspend_signals.cc",
     "//starboard/shared/signal/suspend_signals.h",
-    "//starboard/shared/signal/system_request_conceal.cc",
     "//starboard/shared/starboard/application.cc",
     "//starboard/shared/starboard/application.h",
     "//starboard/shared/starboard/audio_sink/audio_sink_create.cc",
@@ -284,6 +284,9 @@
     "atomic_public.h",
     "audio_decoder.cc",
     "audio_decoder.h",
+    "audio_decoder_passthrough.h",
+    "audio_renderer_passthrough.cc",
+    "audio_renderer_passthrough.h",
     "audio_sink_get_max_channels.cc",
     "audio_sink_get_min_buffer_size_in_frames.cc",
     "audio_sink_get_nearest_supported_sample_frequency.cc",
@@ -293,6 +296,8 @@
     "audio_sink_min_required_frames_tester.h",
     "audio_track_audio_sink_type.cc",
     "audio_track_audio_sink_type.h",
+    "audio_track_bridge.cc",
+    "audio_track_bridge.h",
     "bionic/bionic_netlink.cpp",
     "bionic/bionic_netlink.h",
     "bionic/ifaddrs.cpp",
@@ -380,6 +385,7 @@
     "system_has_capability.cc",
     "system_network_is_disconnected.cc",
     "system_platform_error.cc",
+    "system_request_conceal.cc",
     "system_request_freeze_no_freezedone_callback.cc",
     "system_request_stop.cc",
     "system_request_suspend.cc",
@@ -468,6 +474,25 @@
   public_deps = [ "//starboard/elf_loader:evergreen_info" ]
 }
 
+target(gtest_target_type, "starboard_platform_tests") {
+  testonly = true
+
+  sources = media_tests_sources + [
+              "//starboard/common/test_main.cc",
+              "jni_env_ext_test.cc",
+              "model_year_test.cc",
+            ]
+
+  configs += [ "//starboard/build/config:starboard_implementation" ]
+
+  deps = [
+    "//starboard",
+    "//starboard/shared/starboard/player/filter/testing:test_util",
+    "//testing/gmock",
+    "//testing/gtest",
+  ]
+}
+
 copy("ndk_sources") {
   sources = [ "$android_ndk_path/sources/android/cpufeatures/cpu-features.c" ]
   outputs = [ "$target_gen_dir/ndk-sources/{{source_file_part}}" ]
diff --git a/src/starboard/android/shared/application_android.cc b/src/starboard/android/shared/application_android.cc
index 598bed7..9d52d26 100644
--- a/src/starboard/android/shared/application_android.cc
+++ b/src/starboard/android/shared/application_android.cc
@@ -261,14 +261,14 @@
         env->CallStarboardVoidMethodOrAbort("beforeStartOrResume", "()V");
 #if SB_API_VERSION >= 13
         DispatchStart(GetAppStartTimestamp());
-#else  // SB_API_VERSION >= 13
+#else   // SB_API_VERSION >= 13
         DispatchStart();
 #endif  // SB_API_VERSION >= 13
       } else if (state() == kStateConcealed || state() == kStateFrozen) {
 #if SB_API_VERSION >= 13
-        DispatchAndDelete(new Event(kSbEventTypeReveal, SbTimeGetMonotonicNow(),
-                                    NULL, NULL));
-#else  // SB_API_VERSION >= 13
+        DispatchAndDelete(
+            new Event(kSbEventTypeReveal, SbTimeGetMonotonicNow(), NULL, NULL));
+#else   // SB_API_VERSION >= 13
         DispatchAndDelete(new Event(kSbEventTypeReveal, NULL, NULL));
 #endif  // SB_API_VERSION >= 13
       } else {
@@ -286,13 +286,13 @@
         // (rather than to the Activity lifecycle). The service should be
         // started after window being destroyed.
         StartMediaPlaybackService();
-        // Cobalt can't keep running without a window, even if the Activity
-        // hasn't stopped yet. DispatchAndDelete() will inject events as needed
-        // if we're not already paused.
+// Cobalt can't keep running without a window, even if the Activity
+// hasn't stopped yet. DispatchAndDelete() will inject events as needed
+// if we're not already paused.
 #if SB_API_VERSION >= 13
-        DispatchAndDelete(new Event(kSbEventTypeConceal, SbTimeGetMonotonicNow(),
-                                    NULL, NULL));
-#else  // SB_API_VERSION >= 13
+        DispatchAndDelete(new Event(kSbEventTypeConceal,
+                                    SbTimeGetMonotonicNow(), NULL, NULL));
+#else   // SB_API_VERSION >= 13
         DispatchAndDelete(new Event(kSbEventTypeConceal, NULL, NULL));
 #endif  // SB_API_VERSION >= 13
         if (window_) {
@@ -349,9 +349,9 @@
         } else {
           SB_LOG(INFO) << "ApplicationAndroid Inject: kSbEventTypeLink";
 #if SB_API_VERSION >= 13
-          Inject(new Event(kSbEventTypeLink, SbTimeGetMonotonicNow(),
-              deep_link, SbMemoryDeallocate));
-#else  // SB_API_VERSION >= 13
+          Inject(new Event(kSbEventTypeLink, SbTimeGetMonotonicNow(), deep_link,
+                           SbMemoryDeallocate));
+#else   // SB_API_VERSION >= 13
           Inject(new Event(kSbEventTypeLink, deep_link, SbMemoryDeallocate));
 #endif  // SB_API_VERSION >= 13
         }
@@ -359,37 +359,37 @@
       break;
   }
 
-  // If there's a window, sync the app state to the Activity lifecycle, letting
-  // DispatchAndDelete() inject events as needed if we missed a state.
+// If there's a window, sync the app state to the Activity lifecycle, letting
+// DispatchAndDelete() inject events as needed if we missed a state.
 #if SB_API_VERSION >= 13
-if (native_window_) {
+  if (native_window_) {
     switch (sync_state) {
       case AndroidCommand::kStart:
-        DispatchAndDelete(new Event(kSbEventTypeReveal, SbTimeGetMonotonicNow(),
-                                    NULL, NULL));
+        DispatchAndDelete(
+            new Event(kSbEventTypeReveal, SbTimeGetMonotonicNow(), NULL, NULL));
         break;
       case AndroidCommand::kResume:
-        DispatchAndDelete(new Event(kSbEventTypeFocus, SbTimeGetMonotonicNow(),
-                                    NULL, NULL));
+        DispatchAndDelete(
+            new Event(kSbEventTypeFocus, SbTimeGetMonotonicNow(), NULL, NULL));
         break;
       case AndroidCommand::kPause:
-        DispatchAndDelete(new Event(kSbEventTypeBlur, SbTimeGetMonotonicNow(),
-                                    NULL, NULL));
+        DispatchAndDelete(
+            new Event(kSbEventTypeBlur, SbTimeGetMonotonicNow(), NULL, NULL));
         break;
       case AndroidCommand::kStop:
         if (state() != kStateConcealed && state() != kStateFrozen) {
           // We usually conceal when losing the window above, but if the window
           // wasn't destroyed (e.g. when Daydream starts) then we still have to
           // conceal when the Activity is stopped.
-          DispatchAndDelete(new Event(kSbEventTypeConceal, SbTimeGetMonotonicNow(),
-                                      NULL, NULL));
+          DispatchAndDelete(new Event(kSbEventTypeConceal,
+                                      SbTimeGetMonotonicNow(), NULL, NULL));
         }
         break;
       default:
         break;
     }
   }
-#else  // SB_API_VERSION >= 13
+#else   // SB_API_VERSION >= 13
   if (native_window_) {
     switch (sync_state) {
       case AndroidCommand::kStart:
@@ -671,8 +671,7 @@
 SbTimeMonotonic ApplicationAndroid::GetAppStartTimestamp() {
   JniEnvExt* env = JniEnvExt::Get();
   jlong app_start_timestamp =
-      env->CallStarboardLongMethodOrAbort("getAppStartTimestamp",
-                                          "()J");
+      env->CallStarboardLongMethodOrAbort("getAppStartTimestamp", "()J");
   return app_start_timestamp;
 }
 
@@ -684,6 +683,19 @@
   return SbTimeGetMonotonicNow();
 }
 
+void ApplicationAndroid::SendDateTimeConfigurationChangedEvent() {
+  // Set the timezone to allow SbTimeZoneGetName() to return updated timezone.
+  tzset();
+  Inject(new Event(kSbEventDateTimeConfigurationChanged, NULL, NULL));
+}
+
+extern "C" SB_EXPORT_PLATFORM void
+Java_dev_cobalt_coat_CobaltSystemConfigChangeReceiver_nativeDateTimeConfigurationChanged(
+    JNIEnv* env,
+    jobject jcaller) {
+  ApplicationAndroid::Get()->SendDateTimeConfigurationChangedEvent();
+}
+
 }  // namespace shared
 }  // namespace android
 }  // namespace starboard
diff --git a/src/starboard/android/shared/application_android.h b/src/starboard/android/shared/application_android.h
index 1c8dde4..6e5a458 100644
--- a/src/starboard/android/shared/application_android.h
+++ b/src/starboard/android/shared/application_android.h
@@ -94,6 +94,8 @@
   void OsNetworkStatusChange(bool became_online);
   SbTimeMonotonic GetAppStartTimestamp();
 
+  void SendDateTimeConfigurationChangedEvent();
+
  protected:
   // --- Application overrides ---
   void Initialize() override;
diff --git a/src/starboard/android/shared/gyp_configuration.py b/src/starboard/android/shared/gyp_configuration.py
index 69a6787..83e55d2 100644
--- a/src/starboard/android/shared/gyp_configuration.py
+++ b/src/starboard/android/shared/gyp_configuration.py
@@ -15,7 +15,7 @@
 
 from __future__ import print_function
 
-import imp
+import imp  # pylint: disable=deprecated-module
 import os
 import subprocess
 
@@ -113,8 +113,8 @@
     # example src/out/android-arm64/devel/cobalt.apk
     return ['*.apk']
 
-  def GetGeneratorVariables(self, configuration):
-    _ = configuration
+  def GetGeneratorVariables(self, config_name):
+    _ = config_name
     generator_variables = {
         'qtcreator_session_name_prefix': 'cobalt',
     }
diff --git a/src/starboard/android/shared/install_target.gni b/src/starboard/android/shared/install_target.gni
index 4111a06..1442c9f 100644
--- a/src/starboard/android/shared/install_target.gni
+++ b/src/starboard/android/shared/install_target.gni
@@ -89,6 +89,8 @@
       "-P",
       "cobaltProductDir=$root_out_dir",
       "-P",
+      "cobaltLibraryDir=$root_out_dir",
+      "-P",
       "cobaltTarget=$installable_target_name",
       "-P",
       "enableVulkan=$enable_vulkan",
diff --git a/src/starboard/android/shared/media_is_video_supported.cc b/src/starboard/android/shared/media_is_video_supported.cc
index 095a698..01c23d2 100644
--- a/src/starboard/android/shared/media_is_video_supported.cc
+++ b/src/starboard/android/shared/media_is_video_supported.cc
@@ -98,14 +98,16 @@
   // Check extended parameters for correctness and return false if any invalid
   // invalid params are found.
   MimeType mime_type(content_type);
-  // Allows for enabling tunneled playback. Disabled by default.
-  // https://source.android.com/devices/tv/multimedia-tunneling
-  mime_type.RegisterBoolParameter("tunnelmode");
-  // Override endianness on HDR Info header. Defaults to little.
-  mime_type.RegisterStringParameter("hdrinfoendianness", "big|little");
+  if (strlen(content_type) > 0) {
+    // Allows for enabling tunneled playback. Disabled by default.
+    // https://source.android.com/devices/tv/multimedia-tunneling
+    mime_type.RegisterBoolParameter("tunnelmode");
+    // Override endianness on HDR Info header. Defaults to little.
+    mime_type.RegisterStringParameter("hdrinfoendianness", "big|little");
 
-  if (!mime_type.is_valid()) {
-    return false;
+    if (!mime_type.is_valid()) {
+      return false;
+    }
   }
 
   bool must_support_tunnel_mode =
diff --git a/src/starboard/android/shared/platform_configuration/configuration.gni b/src/starboard/android/shared/platform_configuration/configuration.gni
index f1c28dd..1b25e6b 100644
--- a/src/starboard/android/shared/platform_configuration/configuration.gni
+++ b/src/starboard/android/shared/platform_configuration/configuration.gni
@@ -52,3 +52,4 @@
 install_target_path = "//starboard/android/shared/install_target.gni"
 
 sb_widevine_platform = "android"
+platform_tests_path = "//starboard/android/shared:starboard_platform_tests"
diff --git a/src/starboard/android/shared/starboard_platform.gypi b/src/starboard/android/shared/starboard_platform.gypi
index 6e61339..e8579cb 100644
--- a/src/starboard/android/shared/starboard_platform.gypi
+++ b/src/starboard/android/shared/starboard_platform.gypi
@@ -164,6 +164,7 @@
         'system_has_capability.cc',
         'system_network_is_disconnected.cc',
         'system_platform_error.cc',
+        'system_request_conceal.cc',
         'system_request_freeze_no_freezedone_callback.cc',
         'system_request_stop.cc',
         'system_request_suspend.cc',
@@ -357,7 +358,6 @@
         '<(DEPTH)/starboard/shared/signal/crash_signals_sigaction.cc',
         '<(DEPTH)/starboard/shared/signal/suspend_signals.cc',
         '<(DEPTH)/starboard/shared/signal/suspend_signals.h',
-        '<(DEPTH)/starboard/shared/signal/system_request_conceal.cc',
         '<(DEPTH)/starboard/shared/starboard/application.cc',
         '<(DEPTH)/starboard/shared/starboard/application.h',
         '<(DEPTH)/starboard/shared/starboard/audio_sink/audio_sink_create.cc',
diff --git a/src/starboard/android/shared/system_request_conceal.cc b/src/starboard/android/shared/system_request_conceal.cc
new file mode 100644
index 0000000..ebfeb4a
--- /dev/null
+++ b/src/starboard/android/shared/system_request_conceal.cc
@@ -0,0 +1,24 @@
+// Copyright 2021 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "starboard/system.h"
+
+#include "starboard/android/shared/jni_env_ext.h"
+
+using starboard::android::shared::JniEnvExt;
+
+void SbSystemRequestConceal() {
+  JniEnvExt* env = JniEnvExt::Get();
+  env->CallStarboardVoidMethodOrAbort("requestSuspend", "()V");
+}
diff --git a/src/starboard/android/shared/system_request_freeze_no_freezedone_callback.cc b/src/starboard/android/shared/system_request_freeze_no_freezedone_callback.cc
index d245e9e..1231877 100644
--- a/src/starboard/android/shared/system_request_freeze_no_freezedone_callback.cc
+++ b/src/starboard/android/shared/system_request_freeze_no_freezedone_callback.cc
@@ -14,12 +14,9 @@
 
 #include "starboard/system.h"
 
-#include "starboard/android/shared/jni_env_ext.h"
 #include "starboard/shared/signal/signal_internal.h"
 #include "starboard/shared/starboard/application.h"
 
-using starboard::android::shared::JniEnvExt;
-
 #if SB_IS(EVERGREEN_COMPATIBLE) && !SB_IS(EVERGREEN_COMPATIBLE_LITE)
 #include "starboard/loader_app/pending_restart.h"
 #endif  // SB_IS(EVERGREEN_COMPATIBLE) && !SB_IS(EVERGREEN_COMPATIBLE_LITE)
@@ -35,19 +32,11 @@
     // There is no FreezeDone callback for stopping all thread execution
     // after fully transitioning into Frozen.
     starboard::shared::starboard::Application::Get()->Freeze(NULL, NULL);
-
-    // Let Android platform directly transit into Frozen.
-    JniEnvExt* env = JniEnvExt::Get();
-    env->CallStarboardVoidMethodOrAbort("requestSuspend", "()V");
   }
 #else
   // There is no FreezeDone callback for stopping all thread execution
   // after fully transitioning into Frozen.
   starboard::shared::starboard::Application::Get()->Freeze(NULL, NULL);
-
-  // Let Android platform directly transit into Frozen.
-  JniEnvExt* env = JniEnvExt::Get();
-  env->CallStarboardVoidMethodOrAbort("requestSuspend", "()V");
 #endif  // SB_IS(EVERGREEN_COMPATIBLE) && !SB_IS(EVERGREEN_COMPATIBLE_LITE)
 }
 #endif  // SB_API_VERSION >= 13
diff --git a/src/starboard/build/config/BUILDCONFIG.gn b/src/starboard/build/config/BUILDCONFIG.gn
index 38169b8..b3356ca 100644
--- a/src/starboard/build/config/BUILDCONFIG.gn
+++ b/src/starboard/build/config/BUILDCONFIG.gn
@@ -26,6 +26,9 @@
   cobalt_fastbuild = getenv("IS_CI") == 1
 
   is_internal_build = false
+
+  # TODO: Remove this flag when the affected targets can be built.
+  can_build_evergreen_loader_apps = true
 }
 
 is_debug = build_type == "debug"
diff --git a/src/starboard/build/config/base_configuration.gni b/src/starboard/build/config/base_configuration.gni
index 6523033..ed0dc54 100644
--- a/src/starboard/build/config/base_configuration.gni
+++ b/src/starboard/build/config/base_configuration.gni
@@ -82,8 +82,8 @@
   # Where the Starboard ABI file for this platform can be found.
   sabi_path = "starboard/sabi/default/sabi.json"
 
-  # Whether the platform implements platforms tests.
-  has_platform_tests = false
+  # Set to the starboard_platform_tests target if the platform implements them.
+  platform_tests_path = ""
 
   # Whether the platform has platform-specific targets to depend on.
   has_platform_targets = false
@@ -98,4 +98,7 @@
   static_library_configs = []
   source_set_configs = []
   loadable_module_configs = []
+
+  # Whether or not to build drm test suites.
+  has_drm_support = true
 }
diff --git a/src/starboard/build/config/sabi/BUILD.gn b/src/starboard/build/config/sabi/BUILD.gn
index 081e595..96b4185 100644
--- a/src/starboard/build/config/sabi/BUILD.gn
+++ b/src/starboard/build/config/sabi/BUILD.gn
@@ -49,6 +49,9 @@
     "SB_SABI_JSON_ID=R\"($sabi_id)\"",
     "SB_API_VERSION=$sb_api_version",
 
+    "SB_SABI_TARGET_ARCH=\"${target_cpu}\"",
+    "SB_SABI_WORD_SIZE=\"${word_size}\"",
+
     "SB_IS_ARCH_${arch_uppercase}=1",
     "SB_HAS_${calling_convention_uppercase}_CALLING=1",
     "SB_HAS_${floating_point_abi_uppercase}_FLOATS=1",
diff --git a/src/starboard/build/doc/migrating_gyp_to_gn.md b/src/starboard/build/doc/migrating_gyp_to_gn.md
index 1a3d4bb..c6d06b6 100644
--- a/src/starboard/build/doc/migrating_gyp_to_gn.md
+++ b/src/starboard/build/doc/migrating_gyp_to_gn.md
@@ -203,20 +203,25 @@
 comparison tool, i.e. [meld](https://meldmerge.org/). This will allow you to see
 any changes in commands, i.e. with flags or otherwise.
 
-The name of the intermediate .o, .d files is different in both cases: this
-doesn't cause any issues. Keep this in mind while comparing the ninja flags for
-GYP vs GN. Here is an example for raspi2 while compiling the same source file
-```
-starboard/common/new.cc
-```
-GYP generates:
-```
-obj/starboard/common/common.new.cc.o
-```
-GN generates:
-```
-obj/starboard/common/common/new.o
-```
+The following differences for ninja flags between GYP and GN don't cause any
+issues:
+
+1. The name of the intermediate .o, .d files is different in both cases: Here is
+   an example while compiling the same source file
+   ```
+   starboard/common/new.cc
+   ```
+   GYP generates:
+   ```
+   obj/starboard/common/common.new.cc.o
+   ```
+   GN generates:
+   ```
+   obj/starboard/common/common/new.o
+   ```
+2. The `-x` flag for specifying language is not present in GN migration.
+   For example GYP specifies `-x c` flag while building c language files for
+   certain targets. This flag is not specified while building any GN targets.
 
 ### Validating a Platform
 
diff --git a/src/starboard/build/nasm_assemble.gni b/src/starboard/build/nasm_assemble.gni
new file mode 100644
index 0000000..eb1989c
--- /dev/null
+++ b/src/starboard/build/nasm_assemble.gni
@@ -0,0 +1,135 @@
+# Copyright 2021 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# This provides the nasm_assemble() template which uses NASM to
+# assemble assembly files.
+#
+# Files to be assembled with NASM should have an extension of .asm
+#
+# Example:
+#
+#   nasm_assemble("my_nasm_target") {
+#     source = [
+#       "example.asm",
+#     ]
+#     include_dirs = [ "assembly_include" ]
+#   }
+
+if (is_mac || is_ios) {
+  if (current_cpu == "x86") {
+    _nasm_flags = [ "-fmacho32" ]
+  } else if (current_cpu == "x64") {
+    _nasm_flags = [ "-fmacho64" ]
+  }
+} else if (is_posix || is_fuchsia) {
+  if (current_cpu == "x86") {
+    _nasm_flags = [ "-felf32" ]
+  } else if (current_cpu == "x64") {
+    _nasm_flags = [ "-felf64" ]
+  }
+} else if (is_win) {
+  if (current_cpu == "x86") {
+    _nasm_flags = [
+      "-DPREFIX",
+      "-fwin32",
+    ]
+  } else if (current_cpu == "x64") {
+    _nasm_flags = [ "-fwin64" ]
+  }
+}
+
+template("nasm_assemble") {
+  assert(defined(invoker.sources), "Need sources defined for $target_name")
+  assert(current_cpu == "x86" || current_cpu == "x64")
+
+  action_name = "${target_name}_action"
+  source_set_name = target_name
+
+  action_foreach(action_name) {
+    # Only the source set can depend on this.
+    visibility = [ ":$source_set_name" ]
+
+    script = "//starboard/build/run_bash.py"
+    forward_variables_from(invoker,
+                           [
+                             "sources",
+                             "inputs",
+                             "deps",
+                           ])
+
+    # Flags.
+    args = [ "$path_to_yasm" ]
+    args += _nasm_flags
+    if (defined(invoker.nasm_flags)) {
+      args += invoker.nasm_flags
+    }
+
+    # User defined include dirs go first.
+    if (defined(invoker.include_dirs)) {
+      foreach(include, invoker.include_dirs) {
+        # NASM does not append path separators when processing the -I flags,
+        # so -Ifoo means includes of bar look up "foobar" rather than "foo/bar".
+        # Add the trailing slash for it.
+        args += [ "-I" + rebase_path(include, root_build_dir) + "/" ]
+      }
+    }
+
+    # Default nasm include dirs. Make it match the native build (source root
+    # and root generated code directory).
+    # This goes to the end of include list. Note that, as above, we must
+    # append path separators because NASM does not do it itself.
+    args += [
+      "-I./",
+
+      # rebase_path("//") already includes a trailing slash.
+      "-I" + rebase_path("//", root_build_dir),
+      "-I" + rebase_path(root_gen_dir, root_build_dir) + "/",
+    ]
+
+    # Extra defines.
+    if (defined(invoker.defines)) {
+      foreach(def, invoker.defines) {
+        args += [ "-D$def" ]
+      }
+    }
+
+    # Output file.
+    outputs = [
+      "$root_out_dir/obj/third_party/libjpeg-turbo/{{source_name_part}}.asm.o",
+    ]
+    args += [
+      "-o",
+      rebase_path(outputs[0], root_build_dir),
+      "{{source}}",
+    ]
+
+    depfile = outputs[0] + ".d"
+  }
+
+  # Gather the .o files into a linkable thing. This doesn't actually link
+  # anything (a source set just compiles files to link later), but will pass
+  # the object files generated by the action up the dependency chain.
+  static_library(source_set_name) {
+    if (defined(invoker.visibility)) {
+      visibility = invoker.visibility
+    }
+
+    sources = get_target_outputs(":$action_name")
+
+    # Do not publicize any header to remove build dependency
+    public = []
+
+    deps = [ ":$action_name" ]
+  }
+}
diff --git a/src/starboard/build/platform_configuration.py b/src/starboard/build/platform_configuration.py
index f04b9e7..2cf158c 100644
--- a/src/starboard/build/platform_configuration.py
+++ b/src/starboard/build/platform_configuration.py
@@ -13,7 +13,7 @@
 # limitations under the License.
 """Base platform build configuration."""
 
-import imp
+import imp  # pylint: disable=deprecated-module
 import inspect
 import logging
 import os
diff --git a/src/starboard/contrib/linux/README.md b/src/starboard/contrib/linux/README.md
index 8c3fd94..12b5b66 100644
--- a/src/starboard/contrib/linux/README.md
+++ b/src/starboard/contrib/linux/README.md
@@ -5,7 +5,7 @@
   Sample commands:
 
 ```bash
-$ cp starboard/contrib/linux/stadia starboard/linux/
+$ cp -r starboard/contrib/linux/stadia starboard/linux/
 $ ./cobalt/build/gyp_cobalt linux-stadia
 $ ninja -C out/linux-stadia_devel cobalt
 ```
diff --git a/src/starboard/contrib/linux/stadia/atomic_public.h b/src/starboard/contrib/linux/stadia/atomic_public.h
index 6c07e70..f714dec 100644
--- a/src/starboard/contrib/linux/stadia/atomic_public.h
+++ b/src/starboard/contrib/linux/stadia/atomic_public.h
@@ -12,6 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+// This file is meant to live under starboard/linux/stadia/ (see ../README.md),
+// so we disable the header guard check.
+// NOLINT(build/header_guard)
+
 #ifndef STARBOARD_LINUX_STADIA_ATOMIC_PUBLIC_H_
 #define STARBOARD_LINUX_STADIA_ATOMIC_PUBLIC_H_
 
diff --git a/src/starboard/contrib/linux/stadia/configuration_public.h b/src/starboard/contrib/linux/stadia/configuration_public.h
index 8fb5278..6c54147 100644
--- a/src/starboard/contrib/linux/stadia/configuration_public.h
+++ b/src/starboard/contrib/linux/stadia/configuration_public.h
@@ -19,6 +19,10 @@
 // Other source files should never include this header directly, but should
 // include the generic "starboard/configuration.h" instead.
 
+// This file is meant to live under starboard/linux/stadia/ (see ../README.md),
+// so we disable the header guard check.
+// NOLINT(build/header_guard)
+
 #ifndef STARBOARD_LINUX_STADIA_CONFIGURATION_PUBLIC_H_
 #define STARBOARD_LINUX_STADIA_CONFIGURATION_PUBLIC_H_
 
diff --git a/src/starboard/contrib/linux/stadia/thread_types_public.h b/src/starboard/contrib/linux/stadia/thread_types_public.h
index 96dc485..44599a0 100644
--- a/src/starboard/contrib/linux/stadia/thread_types_public.h
+++ b/src/starboard/contrib/linux/stadia/thread_types_public.h
@@ -12,6 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+// This file is meant to live under starboard/linux/stadia/ (see ../README.md),
+// so we disable the header guard check.
+// NOLINT(build/header_guard)
+
 #ifndef STARBOARD_LINUX_STADIA_THREAD_TYPES_PUBLIC_H_
 #define STARBOARD_LINUX_STADIA_THREAD_TYPES_PUBLIC_H_
 
diff --git a/src/starboard/contrib/stadia/clients/vendor/public/stadia_plugin.h b/src/starboard/contrib/stadia/clients/vendor/public/stadia_plugin.h
index 4b5e699..e35c408 100644
--- a/src/starboard/contrib/stadia/clients/vendor/public/stadia_plugin.h
+++ b/src/starboard/contrib/stadia/clients/vendor/public/stadia_plugin.h
@@ -39,6 +39,7 @@
                         StadiaPluginReceiveFromCallback callback,
                         void* user_data));
 
+// clang-format off
 STADIA_EXPORT_FUNCTION(void,
                        StadiaPluginSendTo,
                        (StadiaPlugin* plugin,
@@ -46,5 +47,6 @@
                         size_t length));
 
 STADIA_EXPORT_FUNCTION(void, StadiaPluginClose, (StadiaPlugin* plugin));
+// clang-format on
 }
 #endif  // STARBOARD_CONTRIB_STADIA_CLIENTS_VENDOR_PUBLIC_STADIA_PLUGIN_H_
diff --git a/src/starboard/contrib/stadia/x11/application_stadia_x11.cc b/src/starboard/contrib/stadia/x11/application_stadia_x11.cc
index fb2fc76..dde9300 100644
--- a/src/starboard/contrib/stadia/x11/application_stadia_x11.cc
+++ b/src/starboard/contrib/stadia/x11/application_stadia_x11.cc
@@ -15,7 +15,6 @@
 #include "starboard/contrib/stadia/x11/application_stadia_x11.h"
 
 #include "starboard/contrib/stadia/services/vendor/linux/public/stadia_lifecycle.h"
-#include "starboard/shared/x11/application_x11.cc"
 #include "starboard/shared/x11/window_internal.h"
 
 namespace starboard {
diff --git a/src/starboard/contrib/stadia/x11/application_stadia_x11.h b/src/starboard/contrib/stadia/x11/application_stadia_x11.h
index 3d40274..c682cab 100644
--- a/src/starboard/contrib/stadia/x11/application_stadia_x11.h
+++ b/src/starboard/contrib/stadia/x11/application_stadia_x11.h
@@ -37,4 +37,4 @@
 }  // namespace contrib
 }  // namespace starboard
 
-#endif  // STARBOARD_CONRTIB_STADIA_X11_APPLICATION_STADIA_X11_H_
+#endif  // STARBOARD_CONTRIB_STADIA_X11_APPLICATION_STADIA_X11_H_
diff --git a/src/starboard/doc/abstract-toolchain.md b/src/starboard/doc/abstract-toolchain.md
index 8c5d8e1..0a7e5bd 100644
--- a/src/starboard/doc/abstract-toolchain.md
+++ b/src/starboard/doc/abstract-toolchain.md
@@ -10,7 +10,7 @@
 `src/tools/gyp/pylib/gyp/generator/ninja.py`.
 Modifications to this file were required for replacing any of the toolchain
 components, adding platform-specific tooling, adding new toolchains, or
-accomodating platform-specific flavor of reference tool. Doing this in a
+accommodating platform-specific flavor of reference tool. Doing this in a
 shared file does not scale with the number of ports.
 
 ## Overview
diff --git a/src/starboard/doc/c99.md b/src/starboard/doc/c99.md
index 0030329..b23ef3b 100644
--- a/src/starboard/doc/c99.md
+++ b/src/starboard/doc/c99.md
@@ -59,10 +59,12 @@
 * strcat
 * strchr
 * strcmp
+* strcpy
 * strcspn
 * strlen
 * strncmp
 * strncat
+* strncpy
 * strrchr
 * strstr
 * strspn
diff --git a/src/starboard/doc/evergreen/cobalt_evergreen_overview.md b/src/starboard/doc/evergreen/cobalt_evergreen_overview.md
index 51130f1..001f324 100644
--- a/src/starboard/doc/evergreen/cobalt_evergreen_overview.md
+++ b/src/starboard/doc/evergreen/cobalt_evergreen_overview.md
@@ -503,16 +503,17 @@
 
 ### Fonts
 The system font directory `kSbSystemPathFontDirectory` should be configured to
-point to the `standard` (23MB) or the `limited` (3.1MB) cobalt font packages. An
-easy way to do that is to use the `kSbSystemPathContentDirectory` to contain
-the system font directory and setting the `cobalt_font_package` to `standard` or
-`limited` in your port.
+point to either the system fonts on the device or the Cobalt `standard` (23MB)
+or the Cobalt `limited` (3.1MB) font packages. An easy way to use the Cobalt
+fonts is to set `kSbSystemPathFontDirectory` to point to
+`kSbSystemPathContentDirectory/fonts` and configure `cobalt_font_package` to
+`standard` or `limited` in your port.
 
 Cobalt Evergreen (built by Google), will by default use the `empty` font
 package to minimize storage requirements. A separate
 `cobalt_font_package` variable is set to `empty` in the Evergreen platform.
 
-On Raspberry Pi this is:
+On Raspberry Pi the Cobalt fonts are configured the following way:
 
 `empty` set of fonts under:
 ```
diff --git a/src/starboard/doc/howto_decode_to_texture.md b/src/starboard/doc/howto_decode_to_texture.md
index 3bb46bc..993d50a 100644
--- a/src/starboard/doc/howto_decode_to_texture.md
+++ b/src/starboard/doc/howto_decode_to_texture.md
@@ -84,7 +84,7 @@
    texture/surface handle to render the video frame as it wishes.
 
 5. When the application is finished using the `SbDecodeTarget` that it has
-   aquired through the `SbPlayerGetCurrentFrame()` function, it will call
+   acquired through the `SbPlayerGetCurrentFrame()` function, it will call
    `SbDecodeTargetRelease()` on it.  The Starboard platform implementation
    should ensure that the `SbDecodeTarget` object returned by
    `SbPlayerGetCurrentFrame()` remains valid until the corresponding call to
@@ -133,4 +133,4 @@
 to cache those frames (along with their timestamps) so that they can be
 passed on to the application when `SbPlayerGetCurrentFrame()` is called.
 This same strategy applies if the player pushes frames only when they are meant
-to be rendered.
\ No newline at end of file
+to be rendered.
diff --git a/src/starboard/doc/principles.md b/src/starboard/doc/principles.md
index a58fba7..d24877d 100644
--- a/src/starboard/doc/principles.md
+++ b/src/starboard/doc/principles.md
@@ -150,4 +150,3 @@
   * [Joshua Bloch's presentation about API design](https://www.youtube.com/watch?v=aAb7hSCtvGw)
   * [Joshua Bloch's bumper sticker API design rules](http://www.infoq.com/articles/API-Design-Joshua-Bloch)
   * [digithead's collection of API design links (I didn't read them all)](http://digitheadslabnotebook.blogspot.com/2010/07/how-to-design-good-apis.html)
-
diff --git a/src/starboard/doc/resources/decode_to_texture_sequence.txt b/src/starboard/doc/resources/decode_to_texture_sequence.txt
index 5118f0b..ac5127b 100644
--- a/src/starboard/doc/resources/decode_to_texture_sequence.txt
+++ b/src/starboard/doc/resources/decode_to_texture_sequence.txt
@@ -11,4 +11,3 @@
 Note over a: Extracts GLES texture(s) from the\nSbDecodeTarget object and\nrenders a scene with them. [fillcolor="white"]
 a->s: SbDecodeTargetRelease()
 Note over a: Goto: Start of render loop [fillcolor="#ffffd0"]
-
diff --git a/src/starboard/doc/starboard_split.md b/src/starboard/doc/starboard_split.md
index cab325c..a222d83 100644
--- a/src/starboard/doc/starboard_split.md
+++ b/src/starboard/doc/starboard_split.md
@@ -55,4 +55,4 @@
 
 ##### Notes
 
-For migrating from macros, partners will have to treat their use differently! I.e. string literal vs const char* in their implementations. Add an overview of all of the cases of this migration in runtime code.
\ No newline at end of file
+For migrating from macros, partners will have to treat their use differently! I.e. string literal vs const char* in their implementations. Add an overview of all of the cases of this migration in runtime code.
diff --git a/src/starboard/doc/style.md b/src/starboard/doc/style.md
index f14aa33..546618e 100644
--- a/src/starboard/doc/style.md
+++ b/src/starboard/doc/style.md
@@ -105,7 +105,7 @@
     name of the module following the `Sb`.
       * `file.h` contains `SbFile`, `SbFileInfo`, `SbFileWhence`, etc...
   * Every seemingly-allocatable, platform-specific Starboard type should be
-    defined as an opaque handle to a publically undefined struct with the
+    defined as an opaque handle to a publicly undefined struct with the
     `Private` suffix. Follow this pattern for all such type declarations.
       * `struct SbFilePrivate` is declared, but not defined in the public header.
       * `SbFilePrivate` is `typedef`'d to `struct SbFilePrivate`. This is a C
diff --git a/src/starboard/elf_loader/BUILD.gn b/src/starboard/elf_loader/BUILD.gn
index 9ce393b..eff2b9e 100644
--- a/src/starboard/elf_loader/BUILD.gn
+++ b/src/starboard/elf_loader/BUILD.gn
@@ -97,31 +97,33 @@
   ]
 }
 
-target(final_executable_type, "elf_loader_sys_sandbox") {
-  # To properly function the system loader requires the starboard
-  # symbols to be exported from the binary.
-  # To allow symbols to be exported remove the '-fvisibility=hidden' flag
-  # from your compiler_flags.gypi. For Linux this would be:
-  #   starboard/linux/shared/compiler_flags.gypi
-  # Example run:
-  # export LD_LIBRARY_PATH=.
-  # ./elf_loader_sys_sandbox --evergreen_library=app/cobalt/lib/libcobalt.so --evergreen_content=app/cobalt/content
-  sources = [ "sandbox.cc" ]
-  configs += [ ":elf_loader_config" ]
+if (can_build_evergreen_loader_apps) {
+  target(final_executable_type, "elf_loader_sys_sandbox") {
+    # To properly function the system loader requires the starboard
+    # symbols to be exported from the binary.
+    # To allow symbols to be exported remove the '-fvisibility=hidden' flag
+    # from your compiler_flags.gypi. For Linux this would be:
+    #   starboard/linux/shared/compiler_flags.gypi
+    # Example run:
+    # export LD_LIBRARY_PATH=.
+    # ./elf_loader_sys_sandbox --evergreen_library=app/cobalt/lib/libcobalt.so --evergreen_content=app/cobalt/content
+    sources = [ "sandbox.cc" ]
+    configs += [ ":elf_loader_config" ]
 
-  starboard_syms_path =
-      rebase_path("//starboard/starboard.syms", root_build_dir)
-  ldflags = [
-    "-Wl,--dynamic-list=$starboard_syms_path",
-    "-ldl",
-  ]
+    starboard_syms_path =
+        rebase_path("//starboard/starboard.syms", root_build_dir)
+    ldflags = [
+      "-Wl,--dynamic-list=$starboard_syms_path",
+      "-ldl",
+    ]
 
-  deps = [
-    ":elf_loader_sys",
-    ":evergreen_info",
-    ":sabi_string",
-    "//starboard",
-  ]
+    deps = [
+      ":elf_loader_sys",
+      ":evergreen_info",
+      ":sabi_string",
+      "//starboard",
+    ]
+  }
 }
 
 target(gtest_target_type, "elf_loader_test") {
diff --git a/src/starboard/evergreen/testing/linux/stop_process.sh b/src/starboard/evergreen/testing/linux/stop_process.sh
new file mode 100644
index 0000000..ace0eca
--- /dev/null
+++ b/src/starboard/evergreen/testing/linux/stop_process.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# Copyright 2021 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+function stop_process() {
+  if [[ $# -ne 1 ]]; then
+    log "error" " stop_process only accepts a single argument"
+    return 1
+  fi
+
+  kill -9 "${1}" 1> /dev/null
+}
diff --git a/src/starboard/evergreen/testing/raspi/clean_up.sh b/src/starboard/evergreen/testing/raspi/clean_up.sh
index 50d3792..6c2d9ad 100755
--- a/src/starboard/evergreen/testing/raspi/clean_up.sh
+++ b/src/starboard/evergreen/testing/raspi/clean_up.sh
@@ -14,5 +14,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-source $1/../linux/clean_up.sh
+function clean_up() {
+  echo " Clearing loader app process id storage"
+  eval "${SSH}\"rm -rf ${PID_STORAGE_DIR}\"" 1> /dev/null
 
+  clear_storage
+}
diff --git a/src/starboard/evergreen/testing/raspi/setup.sh b/src/starboard/evergreen/testing/raspi/setup.sh
index 3292873..65c263a 100755
--- a/src/starboard/evergreen/testing/raspi/setup.sh
+++ b/src/starboard/evergreen/testing/raspi/setup.sh
@@ -21,6 +21,7 @@
 CONTENT="/home/pi/coeg/content/app/cobalt/content"
 STORAGE_DIR="/home/pi/.cobalt_storage"
 STORAGE_DIR_TMPFS="${STORAGE_DIR}.tmpfs"
+PID_STORAGE_DIR="/tmp/cobalt_loader_pids"
 
 ID="id"
 TAIL="tail"
@@ -69,3 +70,12 @@
     fi
   fi
 fi
+
+eval "${SSH}\"test -d /tmp\"" 1> /dev/null
+if [[ $? -ne 0 ]]; then
+  echo " The '/tmp' directory is required on the Raspberry Pi 2 to persist data"
+  exit 1
+fi
+
+echo " Making a directory on the Raspberry Pi 2 to store loader app process ids"
+run_command "mkdir -p ${PID_STORAGE_DIR}"
diff --git a/src/starboard/evergreen/testing/raspi/start_cobalt.sh b/src/starboard/evergreen/testing/raspi/start_cobalt.sh
index a1ea738..f64e0da 100755
--- a/src/starboard/evergreen/testing/raspi/start_cobalt.sh
+++ b/src/starboard/evergreen/testing/raspi/start_cobalt.sh
@@ -44,9 +44,26 @@
 
   log "info" " Logs will be output to '${LOG_PATH}/${LOG}'"
 
-  eval "${SSH}\"/home/pi/coeg/loader_app --url=\"\"${URL}\"\" ${ARGS} \" 2>&1 | tee \"${LOG_PATH}/${LOG}\"" &
+  # A file name unique to the process, provided by the current time in
+  # milliseconds, isn't strictly needed but is used out of caution.
+  declare pid_storage_path="${PID_STORAGE_DIR}/$(date +%s%3N)"
 
-  loader_pid_ref=$!
+  # The stored process ID initially points to a remote shell process but that
+  # process image is quickly replaced, via exec, with a new one executing the
+  # loader app. This approach enables the local machine to obtain the loader
+  # app's process ID without interfering with its stdout/stderr, which must be
+  # piped to tee.
+  declare store_pid_cmd="echo \\$\\$ > ${pid_storage_path}"
+  declare replace_with_loader_cmd="exec /home/pi/coeg/loader_app --url=\"\"${URL}\"\" ${ARGS}"
+  eval "${SSH}\"${store_pid_cmd};${replace_with_loader_cmd}\" 2>&1 | tee \"${LOG_PATH}/${LOG}\"" &
+
+  # The device's filesystem is polled to avoid a race condition since the
+  # previous eval command is necessarily run in the background.
+  eval "${SSH}\"while [[ ! -f ${pid_storage_path} ]] ; do sleep 1 ; done\""
+
+  loader_pid_ref=$(eval "${SSH}\"cat ${pid_storage_path}\"")
+
+  delete_file "${pid_storage_path}"
 
   log "info" " Cobalt process ID is ${loader_pid_ref}"
 }
diff --git a/src/starboard/evergreen/testing/raspi/stop_process.sh b/src/starboard/evergreen/testing/raspi/stop_process.sh
new file mode 100644
index 0000000..aee05a3
--- /dev/null
+++ b/src/starboard/evergreen/testing/raspi/stop_process.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# Copyright 2021 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+function stop_process() {
+  if [[ $# -ne 1 ]]; then
+    log "error" " stop_process only accepts a single argument"
+    return 1
+  fi
+
+  eval "${SSH}\"kill -9 ${1}\"" 1> /dev/null
+}
diff --git a/src/starboard/evergreen/testing/setup.sh b/src/starboard/evergreen/testing/setup.sh
index 7820281..0cf60da 100755
--- a/src/starboard/evergreen/testing/setup.sh
+++ b/src/starboard/evergreen/testing/setup.sh
@@ -57,7 +57,8 @@
          "${DIR}/${1}/deploy_cobalt.sh"       \
          "${DIR}/${1}/run_command.sh"         \
          "${DIR}/${1}/start_cobalt.sh"        \
-         "${DIR}/${1}/stop_cobalt.sh")
+         "${DIR}/${1}/stop_cobalt.sh"         \
+         "${DIR}/${1}/stop_process.sh")
 
 for script in "${SCRIPTS[@]}"; do
   if [[ ! -f "${script}" ]]; then
diff --git a/src/starboard/evergreen/testing/shared/cycle_cobalt.sh b/src/starboard/evergreen/testing/shared/cycle_cobalt.sh
index 9b26cf7..276b321 100755
--- a/src/starboard/evergreen/testing/shared/cycle_cobalt.sh
+++ b/src/starboard/evergreen/testing/shared/cycle_cobalt.sh
@@ -85,9 +85,9 @@
   watch_cobalt "${LOG}" "${PAT}"
   RES=$?
 
-  log "info" " Stopping with 'kill -9 ${LOADER}'"
+  log "info" " Stopping ${LOADER}"
 
-  kill -9 "${LOADER}" 1> /dev/null
+  stop_process "${LOADER}"
 
   sleep 1
 
diff --git a/src/starboard/linux/shared/BUILD.gn b/src/starboard/linux/shared/BUILD.gn
index 9ef03b9..07cc2eb 100644
--- a/src/starboard/linux/shared/BUILD.gn
+++ b/src/starboard/linux/shared/BUILD.gn
@@ -12,6 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import("//starboard/shared/starboard/media/media_tests.gni")
 import("//starboard/shared/starboard/player/buildfiles.gni")
 
 group("starboard_platform") {
@@ -366,7 +367,6 @@
     "//starboard/shared/stub/system_get_total_gpu_memory.cc",
     "//starboard/shared/stub/system_get_used_gpu_memory.cc",
     "//starboard/shared/stub/system_hide_splash_screen.cc",
-    "//starboard/shared/stub/system_network_is_disconnected.cc",
     "//starboard/shared/stub/system_raise_platform_error.cc",
     "//starboard/shared/stub/system_sign_with_certification_secret_key.cc",
     "//starboard/shared/stub/thread_create_priority.cc",
@@ -447,3 +447,18 @@
     ]
   }
 }
+
+target(gtest_target_type, "starboard_platform_tests") {
+  testonly = true
+
+  sources = media_tests_sources + [ "//starboard/common/test_main.cc" ]
+
+  configs += [ "//starboard/build/config:starboard_implementation" ]
+
+  deps = [
+    "//starboard",
+    "//starboard/shared/starboard/player/filter/testing:test_util",
+    "//testing/gmock",
+    "//testing/gtest",
+  ]
+}
diff --git a/src/starboard/linux/shared/gyp_configuration.py b/src/starboard/linux/shared/gyp_configuration.py
index b408b63..319cdc2 100644
--- a/src/starboard/linux/shared/gyp_configuration.py
+++ b/src/starboard/linux/shared/gyp_configuration.py
@@ -113,6 +113,7 @@
       ],
   }
 
+  # pylint: disable=line-too-long
   __FILTERED_TESTS = {  # pylint: disable=invalid-name
       'player_filter_tests': [
           # libdav1d crashes when fed invalid data
@@ -120,9 +121,11 @@
       ],
   }
   # Conditionally disables tests that require ipv6
-  if os.getenv('IPV6_AVAILABLE', 1) == '0':
+  if os.getenv('IPV6_AVAILABLE', '1') == '0':
     __FILTERED_TESTS['nplb'] = [
         'SbSocketAddressTypes/SbSocketGetInterfaceAddressTest.SunnyDayDestination/1',
         'SbSocketAddressTypes/SbSocketGetInterfaceAddressTest.SunnyDaySourceForDestination/1',
         'SbSocketAddressTypes/SbSocketGetInterfaceAddressTest.SunnyDaySourceNotLoopback/1',
     ]
+
+  # pylint: enable=line-too-long
diff --git a/src/starboard/linux/shared/platform_configuration/configuration.gni b/src/starboard/linux/shared/platform_configuration/configuration.gni
index eda9b87..5d6af1b 100644
--- a/src/starboard/linux/shared/platform_configuration/configuration.gni
+++ b/src/starboard/linux/shared/platform_configuration/configuration.gni
@@ -33,3 +33,6 @@
     "//starboard/linux/shared/platform_configuration:no_pedantic_warnings"
 
 sb_widevine_platform = "linux"
+
+has_drm_support = is_internal_build
+platform_tests_path = "//starboard/linux/shared:starboard_platform_tests"
diff --git a/src/starboard/linux/x64x11/shared/BUILD.gn b/src/starboard/linux/x64x11/shared/BUILD.gn
index 3238904a..8407ab2 100644
--- a/src/starboard/linux/x64x11/shared/BUILD.gn
+++ b/src/starboard/linux/x64x11/shared/BUILD.gn
@@ -19,7 +19,7 @@
     "//starboard/linux/shared:starboard_platform",
   ]
 
-  deps = [ "//third_party/libjpeg" ]
+  deps = [ "//third_party/libjpeg-turbo:libjpeg" ]
 }
 
 static_library("starboard_platform_sources") {
diff --git a/src/starboard/loader_app/BUILD.gn b/src/starboard/loader_app/BUILD.gn
index 481ccc8..cc35c66 100644
--- a/src/starboard/loader_app/BUILD.gn
+++ b/src/starboard/loader_app/BUILD.gn
@@ -42,22 +42,24 @@
   }
 }
 
-target(final_executable_type, "loader_app_sys") {
-  if (target_cpu == "x86" || target_cpu == "x64" || target_cpu == "arm" ||
-      target_cpu == "arm64") {
-    sources = _common_loader_app_sources
+if (can_build_evergreen_loader_apps) {
+  target(final_executable_type, "loader_app_sys") {
+    if (target_cpu == "x86" || target_cpu == "x64" || target_cpu == "arm" ||
+        target_cpu == "arm64") {
+      sources = _common_loader_app_sources
 
-    starboard_syms_path =
-        rebase_path("//starboard/starboard.syms", root_build_dir)
-    ldflags = [
-      "-Wl,--dynamic-list=$starboard_syms_path",
-      "-ldl",
-    ]
-    deps = [
-      ":common_loader_app_dependencies",
-      "//cobalt/content/fonts:copy_font_data",
-      "//starboard/elf_loader:elf_loader_sys",
-    ]
+      starboard_syms_path =
+          rebase_path("//starboard/starboard.syms", root_build_dir)
+      ldflags = [
+        "-Wl,--dynamic-list=$starboard_syms_path",
+        "-ldl",
+      ]
+      deps = [
+        ":common_loader_app_dependencies",
+        "//cobalt/content/fonts:copy_font_data",
+        "//starboard/elf_loader:elf_loader_sys",
+      ]
+    }
   }
 }
 
diff --git a/src/starboard/nplb/BUILD.gn b/src/starboard/nplb/BUILD.gn
index a53df6a..20e502d 100644
--- a/src/starboard/nplb/BUILD.gn
+++ b/src/starboard/nplb/BUILD.gn
@@ -107,6 +107,7 @@
     "drm_helpers.cc",
     "drm_helpers.h",
     "drm_is_server_certificate_updatable_test.cc",
+    "drm_session_test.cc",
     "drm_update_server_certificate_test.cc",
     "egl_test.cc",
     "extern_c_test.cc",
@@ -294,7 +295,7 @@
     "window_get_size_test.cc",
   ]
 
-  if (is_internal_build) {
+  if (has_drm_support) {
     sources += [
       "drm_create_system_test.cc",
       "media_can_play_mime_and_key_system_test.cc",
@@ -303,6 +304,10 @@
 
   deps = [ "//starboard/nplb/testdata/file_tests:nplb_file_tests_data" ]
 
+  if (is_internal_build) {
+    deps += [ "//starboard/private/nplb:nplb_private" ]
+  }
+
   public_deps = [
     "//starboard",
     "//starboard/common",
diff --git a/src/starboard/raspi/2/gyp_configuration.py b/src/starboard/raspi/2/gyp_configuration.py
index 7cf32e4..5f5b245 100644
--- a/src/starboard/raspi/2/gyp_configuration.py
+++ b/src/starboard/raspi/2/gyp_configuration.py
@@ -17,6 +17,7 @@
 
 
 class Raspi2PlatformConfig(shared_configuration.RaspiPlatformConfig):
+  """Starboard raspi-2 platform configuration."""
 
   def __init__(self,
                platform,
@@ -24,8 +25,8 @@
     super(Raspi2PlatformConfig, self).__init__(
         platform, sabi_json_path=sabi_json_path)
 
-  def GetVariables(self, config_name):
-    variables = super(Raspi2PlatformConfig, self).GetVariables(config_name)
+  def GetVariables(self, configuration):
+    variables = super(Raspi2PlatformConfig, self).GetVariables(configuration)
     return variables
 
 
diff --git a/src/starboard/raspi/shared/BUILD.gn b/src/starboard/raspi/shared/BUILD.gn
index 3828973..2cc3d1c 100644
--- a/src/starboard/raspi/shared/BUILD.gn
+++ b/src/starboard/raspi/shared/BUILD.gn
@@ -375,6 +375,17 @@
 
   sources += common_player_sources
 
+  if (sb_api_version == 12) {
+    sources += [
+      "//starboard/shared/stub/speech_recognizer_cancel.cc",
+      "//starboard/shared/stub/speech_recognizer_create.cc",
+      "//starboard/shared/stub/speech_recognizer_destroy.cc",
+      "//starboard/shared/stub/speech_recognizer_is_supported.cc",
+      "//starboard/shared/stub/speech_recognizer_start.cc",
+      "//starboard/shared/stub/speech_recognizer_stop.cc",
+    ]
+  }
+
   configs += [
     "//starboard/build/config:pedantic_warnings",
     "//starboard/build/config:starboard_implementation",
diff --git a/src/starboard/raspi/shared/platform_configuration/BUILD.gn b/src/starboard/raspi/shared/platform_configuration/BUILD.gn
index 98d7b28..fe181d1 100644
--- a/src/starboard/raspi/shared/platform_configuration/BUILD.gn
+++ b/src/starboard/raspi/shared/platform_configuration/BUILD.gn
@@ -182,8 +182,7 @@
     # This decision should be revisited after raspi toolchain is upgraded.
     "-Wno-maybe-uninitialized",
 
-    #TODO: Renable -Werror after fixing all warnings.
-    #"-Werror",
+    "-Werror",
     "-Wno-expansion-to-defined",
     "-Wno-implicit-fallthrough",
   ]
diff --git a/src/starboard/raspi/shared/platform_configuration/configuration.gni b/src/starboard/raspi/shared/platform_configuration/configuration.gni
index fd4a3ce..4ceaa77 100644
--- a/src/starboard/raspi/shared/platform_configuration/configuration.gni
+++ b/src/starboard/raspi/shared/platform_configuration/configuration.gni
@@ -15,12 +15,12 @@
 import("//starboard/build/config/base_configuration.gni")
 
 arm_float_abi = "hard"
+has_drm_support = false
 sb_pedantic_warnings = true
 sb_static_contents_output_data_dir = "$root_out_dir/content"
 
-pedantic_warnings_config_path =
-    "//starboard/raspi/shared/platform_configuration:pedantic_warnings"
 no_pedantic_warnings_config_path =
     "//starboard/raspi/shared/platform_configuration:no_pedantic_warnings"
-
+pedantic_warnings_config_path =
+    "//starboard/raspi/shared/platform_configuration:pedantic_warnings"
 sabi_path = "//starboard/sabi/arm/hardfp/sabi-v$sb_api_version.json"
diff --git a/src/starboard/sabi/_env.py b/src/starboard/sabi/_env.py
index f091f9e..332eabc 100644
--- a/src/starboard/sabi/_env.py
+++ b/src/starboard/sabi/_env.py
@@ -15,7 +15,7 @@
 #
 """Ask the parent directory to load the project environment."""
 
-from imp import load_source
+from imp import load_source  # pylint: disable=deprecated-module
 from os import path
 import sys
 
diff --git a/src/starboard/shared/starboard/media/media_tests.gni b/src/starboard/shared/starboard/media/media_tests.gni
new file mode 100644
index 0000000..38c8042
--- /dev/null
+++ b/src/starboard/shared/starboard/media/media_tests.gni
@@ -0,0 +1,21 @@
+# Copyright 2021 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+media_tests_sources = [
+  "//starboard/shared/starboard/media/avc_util_test.cc",
+  "//starboard/shared/starboard/media/codec_util_test.cc",
+  "//starboard/shared/starboard/media/mime_type_test.cc",
+  "//starboard/shared/starboard/media/video_capabilities_test.cc",
+  "//starboard/shared/starboard/media/vp9_util_test.cc",
+]
diff --git a/src/starboard/shared/starboard/player/filter/filter_based_player_worker_handler.cc b/src/starboard/shared/starboard/player/filter/filter_based_player_worker_handler.cc
index 64f94ab..6a4b15e 100644
--- a/src/starboard/shared/starboard/player/filter/filter_based_player_worker_handler.cc
+++ b/src/starboard/shared/starboard/player/filter/filter_based_player_worker_handler.cc
@@ -161,7 +161,7 @@
     player_components_ =
         factory->CreateComponents(creation_parameters, error_message);
     if (!player_components_) {
-      SB_LOG(ERROR) << "Failed to create renderer with error: "
+      SB_LOG(ERROR) << "Failed to create player components with error: "
                     << *error_message;
       return false;
     }
@@ -399,8 +399,7 @@
     // only log when the other members of |bounds| have been changed to avoid
     // spamming the log.
     bounds_.z_index = bounds.z_index;
-    bool bounds_changed =
-        memcmp(&bounds_, &bounds, sizeof(bounds_)) != 0;
+    bool bounds_changed = memcmp(&bounds_, &bounds, sizeof(bounds_)) != 0;
     SB_LOG_IF(INFO, bounds_changed)
         << "Set bounds to "
         << "x: " << bounds.x << ", y: " << bounds.y
diff --git a/src/starboard/shared/starboard/player/testdata/.gitignore b/src/starboard/shared/starboard/player/testdata/.gitignore
new file mode 100644
index 0000000..f1136ab
--- /dev/null
+++ b/src/starboard/shared/starboard/player/testdata/.gitignore
@@ -0,0 +1,2 @@
+*.dmp
+
diff --git a/src/starboard/stub/gyp_configuration.py b/src/starboard/stub/gyp_configuration.py
index 6329189..dc2a4b2 100644
--- a/src/starboard/stub/gyp_configuration.py
+++ b/src/starboard/stub/gyp_configuration.py
@@ -39,9 +39,6 @@
 class StubConfiguration(config.base.PlatformConfigBase):
   """Starboard stub platform configuration."""
 
-  def __init__(self, platform):
-    super(StubConfiguration, self).__init__(platform)
-
   def GetVariables(self, configuration):
     variables = super(StubConfiguration, self).GetVariables(
         configuration, use_clang=1)
@@ -59,7 +56,7 @@
     })
     return env_variables
 
-  def GetTargetToolchain(self, **kwargs):
+  def GetTargetToolchain(self, **kwargs):  # pylint: disable=unused-argument
     environment_variables = self.GetEnvironmentVariables()
     cc_path = environment_variables['CC']
     cxx_path = environment_variables['CXX']
@@ -77,7 +74,7 @@
         bash.Shell(),
     ]
 
-  def GetHostToolchain(self, **kwargs):
+  def GetHostToolchain(self, **kwargs):  # pylint: disable=unused-argument
     environment_variables = self.GetEnvironmentVariables()
     cc_path = environment_variables['CC_host']
     cxx_path = environment_variables['CXX_host']
diff --git a/src/starboard/tools/doc/abstract_launcher.md b/src/starboard/tools/doc/abstract_launcher.md
index 062ade4..c612081 100644
--- a/src/starboard/tools/doc/abstract_launcher.md
+++ b/src/starboard/tools/doc/abstract_launcher.md
@@ -34,4 +34,4 @@
 the executable is still running, have it start "Run()" in a separate thread;
 this will allow the main thread to easily read from the Launcher's output file.
 For an example of creating and using a Launcher, see
-[this example](../../example/app_launcher_client.py).
\ No newline at end of file
+[this example](../../example/app_launcher_client.py).
diff --git a/src/starboard/tools/doc/testing.md b/src/starboard/tools/doc/testing.md
index d675e09..e26e6fb 100644
--- a/src/starboard/tools/doc/testing.md
+++ b/src/starboard/tools/doc/testing.md
@@ -78,7 +78,7 @@
 
     test_filter.TestFilter('math_test', 'Vector3dTest.IsZero', 'debug')
 
-If a configuration is not provided, then the test will be exluded from all
+If a configuration is not provided, then the test will be excluded from all
 configurations.
 
 To filter out all tests for a particular target, provide
diff --git a/src/starboard/tools/testing/test_runner.py b/src/starboard/tools/testing/test_runner.py
index 1ae0133..a4db330 100755
--- a/src/starboard/tools/testing/test_runner.py
+++ b/src/starboard/tools/testing/test_runner.py
@@ -402,8 +402,9 @@
       test_params.append("--gtest_filter=" + gtest_filter_value)
 
     if self.log_xml_results:
-      # Log the xml results
-      test_params.append("--gtest_output=xml:log")
+      # Log the xml results in the current working directory.
+      xml_filename = "{}_testoutput.xml".format(target_name)
+      test_params.append("--gtest_output=xml:{}".format(xml_filename))
       logging.info("Xml results for this test will be logged.")
     elif self.xml_output_dir:
       # Have gtest create and save a test result xml
