diff --git a/src/cobalt/base/tokens.h b/src/cobalt/base/tokens.h
index c460d60..bfe8fee 100644
--- a/src/cobalt/base/tokens.h
+++ b/src/cobalt/base/tokens.h
@@ -56,6 +56,7 @@
     MacroOpWithNameOnly(focus)                                       \
     MacroOpWithNameOnly(focusin)                                     \
     MacroOpWithNameOnly(focusout)                                    \
+    MacroOpWithNameOnly(freeze)                                      \
     MacroOpWithNameOnly(gotpointercapture)                           \
     MacroOpWithNameOnly(hashchange)                                  \
     MacroOpWithNameOnly(hide)                                        \
diff --git a/src/cobalt/browser/application.cc b/src/cobalt/browser/application.cc
index e478a82..de5abe0 100644
--- a/src/cobalt/browser/application.cc
+++ b/src/cobalt/browser/application.cc
@@ -487,15 +487,6 @@
 
 Application::AppStatus Application::app_status_ =
     Application::kUninitializedAppStatus;
-int Application::app_pause_count_ = 0;
-int Application::app_unpause_count_ = 0;
-int Application::app_suspend_count_ = 0;
-int Application::app_resume_count_ = 0;
-
-Application::NetworkStatus Application::network_status_ =
-    Application::kDisconnectedNetworkStatus;
-int Application::network_connect_count_ = 0;
-int Application::network_disconnect_count_ = 0;
 
 Application::Application(const base::Closure& quit_closure, bool should_preload)
     : message_loop_(base::MessageLoop::current()),
@@ -1125,21 +1116,18 @@
     case kSbEventTypePause:
       DLOG(INFO) << "Got pause event.";
       app_status_ = kPausedAppStatus;
-      ++app_pause_count_;
       browser_module_->Pause();
       DLOG(INFO) << "Finished pausing.";
       break;
     case kSbEventTypeUnpause:
       DLOG(INFO) << "Got unpause event.";
       app_status_ = kRunningAppStatus;
-      ++app_unpause_count_;
       browser_module_->Unpause();
       DLOG(INFO) << "Finished unpausing.";
       break;
     case kSbEventTypeSuspend:
       DLOG(INFO) << "Got suspend event.";
       app_status_ = kSuspendedAppStatus;
-      ++app_suspend_count_;
       browser_module_->Suspend();
 #if SB_IS(EVERGREEN)
       updater_module_->Suspend();
@@ -1150,7 +1138,6 @@
       DCHECK(SbSystemSupportsResume());
       DLOG(INFO) << "Got resume event.";
       app_status_ = kPausedAppStatus;
-      ++app_resume_count_;
       browser_module_->Resume();
 #if SB_IS(EVERGREEN)
       updater_module_->Resume();
diff --git a/src/cobalt/browser/application.h b/src/cobalt/browser/application.h
index afc8c34..599ceb3 100644
--- a/src/cobalt/browser/application.h
+++ b/src/cobalt/browser/application.h
@@ -210,14 +210,6 @@
   static int64 lifetime_in_ms_;
 
   static AppStatus app_status_;
-  static int app_suspend_count_;
-  static int app_resume_count_;
-  static int app_pause_count_;
-  static int app_unpause_count_;
-
-  static NetworkStatus network_status_;
-  static int network_connect_count_;
-  static int network_disconnect_count_;
 
   CValStats c_val_stats_;
 
diff --git a/src/cobalt/browser/browser_module.cc b/src/cobalt/browser/browser_module.cc
index 0c285df..e3ab124 100644
--- a/src/cobalt/browser/browser_module.cc
+++ b/src/cobalt/browser/browser_module.cc
@@ -1314,8 +1314,7 @@
 
 bool BrowserModule::FilterKeyEventForHotkeys(
     base::Token type, const dom::KeyboardEventInit& event) {
-#if !defined(ENABLE_DEBUGGER)
-#else
+#if defined(ENABLE_DEBUGGER)
   if (event.key_code() == dom::keycode::kF1 ||
       (event.ctrl_key() && event.key_code() == dom::keycode::kO)) {
     if (type == base::Tokens::keydown()) {
diff --git a/src/cobalt/build/build.id b/src/cobalt/build/build.id
index b1d084f..9eaba4f 100644
--- a/src/cobalt/build/build.id
+++ b/src/cobalt/build/build.id
@@ -1 +1 @@
-272029
\ No newline at end of file
+272474
\ No newline at end of file
diff --git a/src/cobalt/dom/lottie_player.cc b/src/cobalt/dom/lottie_player.cc
index efd6ebb..5992e3c 100644
--- a/src/cobalt/dom/lottie_player.cc
+++ b/src/cobalt/dom/lottie_player.cc
@@ -435,6 +435,14 @@
   properties_.onenterframe_callback = base::Bind(
       &LottiePlayer::CallOnEnterFrame, callback_task_runner_,
       base::Bind(&LottiePlayer::OnEnterFrame, base::AsWeakPtr(this)));
+  properties_.onfreeze_callback =
+      base::Bind(base::IgnoreResult(&base::SingleThreadTaskRunner::PostTask),
+                 callback_task_runner_, FROM_HERE,
+                 base::Bind(&LottiePlayer::OnFreeze, base::AsWeakPtr(this)));
+  properties_.onunfreeze_callback =
+      base::Bind(base::IgnoreResult(&base::SingleThreadTaskRunner::PostTask),
+                 callback_task_runner_, FROM_HERE,
+                 base::Bind(&LottiePlayer::OnUnfreeze, base::AsWeakPtr(this)));
 }
 
 void LottiePlayer::OnPlay() { ScheduleEvent(base::Tokens::play()); }
@@ -467,5 +475,19 @@
       FROM_HERE, base::Bind(enter_frame_callback, frame, seeker));
 }
 
+void LottiePlayer::OnFreeze() {
+  if (properties_.FreezeAnimationState()) {
+    ScheduleEvent(base::Tokens::freeze());
+    UpdateLottieObjects();
+  }
+}
+
+void LottiePlayer::OnUnfreeze() {
+  if (properties_.UnfreezeAnimationState()) {
+    ScheduleEvent(base::Tokens::play());
+    UpdateLottieObjects();
+  }
+}
+
 }  // namespace dom
 }  // namespace cobalt
diff --git a/src/cobalt/dom/lottie_player.h b/src/cobalt/dom/lottie_player.h
index bd3358b..569bee7 100644
--- a/src/cobalt/dom/lottie_player.h
+++ b/src/cobalt/dom/lottie_player.h
@@ -137,6 +137,8 @@
       scoped_refptr<base::SingleThreadTaskRunner> callback_task_runner,
       base::Callback<void(double, double)> enter_frame_callback, double frame,
       double seeker);
+  void OnFreeze();
+  void OnUnfreeze();
 
   scoped_refptr<loader::image::CachedImage> cached_image_;
   std::unique_ptr<loader::image::CachedImage::OnLoadedCallbackHandler>
diff --git a/src/cobalt/layout/box_generator.cc b/src/cobalt/layout/box_generator.cc
index c72355d..c622e99 100644
--- a/src/cobalt/layout/box_generator.cc
+++ b/src/cobalt/layout/box_generator.cc
@@ -451,6 +451,12 @@
     // This behavior cannot be overridden by setting the "display" property on
     // the descendants.
     //   https://www.w3.org/TR/CSS21/visuren.html#display-prop
+
+    // A LottiePlayer element with "display: none" should potentially trigger
+    // a freeze event.
+    if (!lottie_player->GetProperties().onfreeze_callback.is_null()) {
+      lottie_player->GetProperties().onfreeze_callback.Run();
+    }
     return;
   }
 
diff --git a/src/cobalt/layout/intersection_observer_target.cc b/src/cobalt/layout/intersection_observer_target.cc
index a82d1f2..26d863d 100644
--- a/src/cobalt/layout/intersection_observer_target.cc
+++ b/src/cobalt/layout/intersection_observer_target.cc
@@ -69,17 +69,17 @@
   // Let intersectionArea be intersectionRect's area.
   float intersection_area = intersection_rect.size().GetArea();
 
+  // Let isIntersecting be true if targetRect and rootBounds intersect or are
+  // edge-adjacent, even if the intersection has zero area (because rootBounds
+  // or targetRect have zero area); otherwise, let isIntersecting be false.
+  bool is_intersecting =
+      intersection_rect.width() != 0 || intersection_rect.height() != 0;
+
   // If targetArea is non-zero, let intersectionRatio be intersectionArea
   // divided by targetArea. Otherwise, let intersectionRatio be 1 if
-  // targetRect and rootBounds are edge-adjacent (in the case that targetRect or
-  // rootbounds have zero area), and 0 otherwise.
-  float intersection_ratio =
-      (intersection_rect.width() != 0 || intersection_rect.height() != 0)
-          ? 1.0f
-          : 0.0f;
-  if (target_area != 0) {
-    intersection_ratio = intersection_area / target_area;
-  }
+  // isIntersecting is true, or 0 if isIntersecting is false.
+  float intersection_ratio = target_area > 0 ? intersection_area / target_area
+                                             : is_intersecting ? 1.0f : 0.0f;
 
   // Let thresholdIndex be the index of the first entry in observer.thresholds
   // whose value is greater than intersectionRatio, or the length of
@@ -91,13 +91,15 @@
   for (threshold_index = 0; threshold_index < thresholds.size();
        ++threshold_index) {
     if (thresholds.at(threshold_index) > intersection_ratio) {
+      // isIntersecting is false if intersectionRatio is less than all
+      // thresholds, sorted ascending. Not in spec but follows Chrome behavior.
+      if (threshold_index == 0) {
+        is_intersecting = false;
+      }
       break;
     }
   }
 
-  // Set isIntersecting to true if |threshold_index| > 0, and false otherwise.
-  bool is_intersecting = threshold_index > 0;
-
   // If thresholdIndex does not equal previousThresholdIndex or if
   // isIntersecting does not equal previousIsIntersecting, queue an
   // IntersectionObserverEntry, passing in observer, time, rootBounds,
diff --git a/src/cobalt/layout/replaced_box.cc b/src/cobalt/layout/replaced_box.cc
index 6a8850d..c420851 100644
--- a/src/cobalt/layout/replaced_box.cc
+++ b/src/cobalt/layout/replaced_box.cc
@@ -297,7 +297,7 @@
   render_tree::LottieAnimation* lottie =
       base::polymorphic_downcast<render_tree::LottieAnimation*>(
           animation.get());
-  lottie->SetProperties(lottie_properties);
+  lottie->BeginRenderFrame(lottie_properties);
   node_builder->animation = lottie;
   node_builder->destination_rect = destination_rect;
   node_builder->animation_time = time_elapsed;
diff --git a/src/cobalt/layout_tests/testdata/intersection-observer/layout_tests.txt b/src/cobalt/layout_tests/testdata/intersection-observer/layout_tests.txt
index 6f3f547..1236809 100644
--- a/src/cobalt/layout_tests/testdata/intersection-observer/layout_tests.txt
+++ b/src/cobalt/layout_tests/testdata/intersection-observer/layout_tests.txt
@@ -5,7 +5,8 @@
 intersection-ratio-is-nonzero-but-is-intersecting-is-false
 multiple-observers-with-different-roots-and-targets
 no-intersection-when-root-is-not-in-containing-block-chain-of-target
-observers-should-update-when-elements-move
+observers-should-update-when-elements-move-with-threshold
+observers-should-update-when-elements-move-without-threshold
 previous-threshold-index-and-is-intersecting-fields-should-be-updated
 root-has-nonzero-padding-and-border
 root-has-nonzero-padding-and-border-and-overflow-clip
diff --git a/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-expected.png b/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-with-threshold-expected.png
similarity index 100%
rename from src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-expected.png
rename to src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-with-threshold-expected.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move.html b/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-with-threshold.html
similarity index 66%
rename from src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move.html
rename to src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-with-threshold.html
index eb74022..6e72540 100644
--- a/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move.html
+++ b/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-with-threshold.html
@@ -50,6 +50,9 @@
             entry.target.style.backgroundColor = "green";
           }
         });
+        if (window.testRunner) {
+          window.testRunner.DoNonMeasuredLayout();
+        }
       }
 
       var options = {
@@ -65,15 +68,25 @@
         window.testRunner.DoNonMeasuredLayout();
       }
 
-      // Move the target element so that the intersection ratio now crosses
-      // the threshold value. An intersection observer update should be
-      // triggered and the callback should run.
-      targetElement.style.top = "-30px";
+      // Without waiting for requestAnimationFrame, only the movement is observed.
+      requestAnimationFrame(() => {
+        window.setTimeout(() => {
+          // Move the target element so that the intersection ratio now crosses
+          // the threshold value. An intersection observer update should be
+          // triggered and the callback should run.
+          targetElement.style.top = "-30px";
 
-      if (window.testRunner) {
-        window.testRunner.DoNonMeasuredLayout();
-        window.setTimeout(function() { window.testRunner.notifyDone(); }, 0);
-      }
+          if (window.testRunner) {
+            window.testRunner.DoNonMeasuredLayout();
+            window.setTimeout(function() { window.testRunner.notifyDone(); }, 0);
+          }
+        }, 0);
+      });
+
+      // Fail after 3 seconds if requestAnimationFrame never triggered.
+      window.setTimeout(function() {
+        window.testRunner.notifyDone();
+      }, 3000);
     });
   </script>
 
diff --git a/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-without-threshold-expected.png b/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-without-threshold-expected.png
new file mode 100644
index 0000000..40b311f
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-without-threshold-expected.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-without-threshold.html b/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-without-threshold.html
new file mode 100644
index 0000000..7d982cf
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/intersection-observer/observers-should-update-when-elements-move-without-threshold.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<!--
+ | This test checks that the observer objects get updated when the elements
+ | themselves move around.
+ | The color of the target element is blue if there is an intersection and
+ | green if there is not. In this test, the initial observation turns the
+ | target blue, but when the target moves above the root, it turns green.
+ |   https://www.w3.org/TR/intersection-observer/
+ -->
+<html>
+<head>
+  <style>
+    div {
+      position: absolute;
+    }
+    #root {
+      margin: 100px;
+      background-color: red;
+      width: 250px;
+      height: 150px;
+    }
+    #target {
+      width: 150px;
+      height: 50px;
+      top: 50px;
+      left: 50px;
+    }
+  </style>
+</head>
+<body>
+  <div id="root">
+    <div id="target"></div>
+  </div>
+
+  <script>
+    if (window.testRunner) {
+      window.testRunner.waitUntilDone();
+    }
+
+    window.addEventListener("load", function() {
+      var rootElement = document.querySelector('#root');
+      var targetElement = document.querySelector('#target');
+
+      function handleIntersect(entries, observer) {
+        entries.forEach(function(entry) {
+          if (entry.isIntersecting) {
+            entry.target.style.backgroundColor = "blue";
+          } else {
+            entry.target.style.backgroundColor = "green";
+          }
+        });
+        if (window.testRunner) {
+            window.testRunner.DoNonMeasuredLayout();
+        }
+      }
+
+      var options = {
+        root: rootElement,
+        rootMargin: "0px",
+      };
+
+      var observer = new IntersectionObserver(handleIntersect, options);
+      observer.observe(targetElement);
+
+      if (window.testRunner) {
+        window.testRunner.DoNonMeasuredLayout();
+      }
+
+      // Without waiting for requestAnimationFrame, only the movement is observed. 
+      requestAnimationFrame(() => {
+        window.setTimeout(() => {
+          // Move the target element so that it is clearly no longer
+          // intersecting. An intersection observer update should be
+          // triggered and the callback should run.
+          targetElement.style.top = "-60px";
+
+          if (window.testRunner) {
+            window.testRunner.DoNonMeasuredLayout();
+            window.setTimeout(function() { window.testRunner.notifyDone(); }, 0);
+          }
+
+        }, 0);
+      });
+
+      // Fail after 3 seconds if requestAnimationFrame never triggered.
+      window.setTimeout(function() {
+        window.testRunner.notifyDone();
+      }, 3000);
+    });
+  </script>
+
+</body>
+</html>
diff --git a/src/cobalt/render_tree/lottie_animation.h b/src/cobalt/render_tree/lottie_animation.h
index 9cab513..39cefb9 100644
--- a/src/cobalt/render_tree/lottie_animation.h
+++ b/src/cobalt/render_tree/lottie_animation.h
@@ -30,7 +30,7 @@
 // LottieAnimation object.
 class LottieAnimation : public Image {
  public:
-  enum class LottieState { kPlaying, kPaused, kStopped };
+  enum class LottieState { kPlaying, kPaused, kStopped, kFrozen };
 
   enum class LottieMode { kNormal, kBounce };
 
@@ -69,6 +69,26 @@
       return true;
     }
 
+    // Return true if we can freeze the animation, i.e. the animation is
+    // currently playing.
+    bool FreezeAnimationState() {
+      if (state == LottieState::kPlaying) {
+        state = LottieState::kFrozen;
+        return true;
+      }
+      return false;
+    }
+
+    // Return true if we can unfreeze the animation, i.e. the animation is
+    // currently frozen.
+    bool UnfreezeAnimationState() {
+      if (state == LottieState::kFrozen) {
+        state = LottieState::kPlaying;
+        return true;
+      }
+      return false;
+    }
+
     // Return true if |count| is updated to a new & valid number.
     bool UpdateCount(int new_count) {
       // |count| must be positive.
@@ -199,17 +219,44 @@
     base::Closure oncomplete_callback;
     base::Closure onloop_callback;
     base::Callback<void(double, double)> onenterframe_callback;
+    base::Closure onfreeze_callback;
+    base::Closure onunfreeze_callback;
   };
 
-  virtual void SetProperties(LottieProperties properties) = 0;
+  void BeginRenderFrame(const LottieProperties& properties) {
+    // Trigger callback if playback state changed.
+    if (played_this_frame_ && properties.state == LottieState::kFrozen &&
+        !properties_.onunfreeze_callback.is_null()) {
+      properties_.onunfreeze_callback.Run();
+    }
+    if (!played_this_frame_ && properties.state == LottieState::kPlaying &&
+        !properties_.onfreeze_callback.is_null()) {
+      properties_.onfreeze_callback.Run();
+    }
+    played_this_frame_ = false;
+    properties_ = properties;
+  }
 
-  virtual void SetAnimationTime(base::TimeDelta animate_function_time) = 0;
+  void SetAnimationTime(base::TimeDelta animate_function_time) {
+    played_this_frame_ = true;
+    SetAnimationTimeInternal(animate_function_time);
+  }
 
  protected:
   virtual ~LottieAnimation() {}
 
   // Allow the reference counting system access to our destructor.
   friend class base::RefCountedThreadSafe<LottieAnimation>;
+
+  virtual void SetAnimationTimeInternal(
+      base::TimeDelta animate_function_time) = 0;
+
+  LottieProperties properties_;
+
+ private:
+  // A flag that will be set to true only if the animation is visible onscreen
+  // and is rendered.
+  bool played_this_frame_ = false;
 };
 
 }  // namespace render_tree
diff --git a/src/cobalt/renderer/rasterizer/egl/render_tree_node_visitor.cc b/src/cobalt/renderer/rasterizer/egl/render_tree_node_visitor.cc
index 07b7cea..3301a4b 100644
--- a/src/cobalt/renderer/rasterizer/egl/render_tree_node_visitor.cc
+++ b/src/cobalt/renderer/rasterizer/egl/render_tree_node_visitor.cc
@@ -613,6 +613,10 @@
 }
 
 void RenderTreeNodeVisitor::Visit(render_tree::LottieNode* lottie_node) {
+  if (!IsVisible(lottie_node->GetBounds())) {
+    return;
+  }
+
   // Use Skottie to render Lottie animations.
   FallbackRasterize(lottie_node);
 }
diff --git a/src/cobalt/renderer/rasterizer/pixel_test.cc b/src/cobalt/renderer/rasterizer/pixel_test.cc
index 55ab832..ae27062 100644
--- a/src/cobalt/renderer/rasterizer/pixel_test.cc
+++ b/src/cobalt/renderer/rasterizer/pixel_test.cc
@@ -4137,7 +4137,7 @@
           reinterpret_cast<char*>(&animation_data[0]), animation_data.size());
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4154,7 +4154,7 @@
           reinterpret_cast<char*>(&animation_data[0]), animation_data.size());
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4171,7 +4171,7 @@
           reinterpret_cast<char*>(&animation_data[0]), animation_data.size());
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4190,7 +4190,7 @@
   // An animation must start playing before it can be paused.
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPaused);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4207,7 +4207,7 @@
           reinterpret_cast<char*>(&animation_data[0]), animation_data.size());
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kStopped);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4224,7 +4224,7 @@
           reinterpret_cast<char*>(&animation_data[0]), animation_data.size());
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.SeekFrame(10);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4241,7 +4241,7 @@
           reinterpret_cast<char*>(&animation_data[0]), animation_data.size());
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.SeekPercent(50);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4259,7 +4259,7 @@
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateDirection(-1);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4277,7 +4277,7 @@
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateLoop(true);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4297,7 +4297,7 @@
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateLoop(false);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4318,7 +4318,7 @@
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateLoop(true);
   lottie_properties.UpdateCount(2);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4339,7 +4339,7 @@
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateLoop(true);
   lottie_properties.UpdateCount(2);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4360,7 +4360,7 @@
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateLoop(true);
   lottie_properties.UpdateMode(LottieAnimation::LottieMode::kBounce);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4380,7 +4380,7 @@
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateSpeed(2);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4399,7 +4399,7 @@
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateLoop(false);
   lottie_properties.ToggleLooping();
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4420,7 +4420,7 @@
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateLoop(true);
   lottie_properties.ToggleLooping();
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4440,7 +4440,7 @@
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kStopped);
   lottie_properties.TogglePlay();
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4459,7 +4459,7 @@
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPaused);
   lottie_properties.TogglePlay();
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4478,7 +4478,7 @@
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.TogglePlay();
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4497,7 +4497,7 @@
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateLoop(true);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
@@ -4515,7 +4515,7 @@
   LottieAnimation::LottieProperties lottie_properties;
   lottie_properties.UpdateState(LottieAnimation::LottieState::kPlaying);
   lottie_properties.UpdateLoop(true);
-  animation->SetProperties(lottie_properties);
+  animation->BeginRenderFrame(lottie_properties);
 
   LottieNode::Builder node_builder =
       LottieNode::Builder(animation, RectF(output_surface_size()));
diff --git a/src/cobalt/renderer/rasterizer/skia/skottie_animation.cc b/src/cobalt/renderer/rasterizer/skia/skottie_animation.cc
index 71af29e..679c4af 100644
--- a/src/cobalt/renderer/rasterizer/skia/skottie_animation.cc
+++ b/src/cobalt/renderer/rasterizer/skia/skottie_animation.cc
@@ -30,11 +30,8 @@
   json_size_in_bytes_ = builder.getStats().fJsonSize;
 }
 
-void SkottieAnimation::SetProperties(LottieProperties properties) {
-  properties_ = properties;
-}
-
-void SkottieAnimation::SetAnimationTime(base::TimeDelta animate_function_time) {
+void SkottieAnimation::SetAnimationTimeInternal(
+    base::TimeDelta animate_function_time) {
   // Seeking to a particular frame takes precedence over normal playback.
   // Check whether "seek()" has been called but has yet to occur.
   if (seek_counter_ != properties_.seek_counter) {
@@ -75,7 +72,6 @@
     return;
   }
 
-  DCHECK(properties_.state == LottieState::kPlaying);
   base::TimeDelta current_animation_time = last_updated_animation_time_;
   base::TimeDelta time_elapsed =
       animate_function_time - last_updated_animate_function_time_;
diff --git a/src/cobalt/renderer/rasterizer/skia/skottie_animation.h b/src/cobalt/renderer/rasterizer/skia/skottie_animation.h
index f6cd6eb..3d5531c 100644
--- a/src/cobalt/renderer/rasterizer/skia/skottie_animation.h
+++ b/src/cobalt/renderer/rasterizer/skia/skottie_animation.h
@@ -37,9 +37,7 @@
 
   bool IsOpaque() const override { return false; }
 
-  void SetProperties(LottieProperties properties) override;
-
-  void SetAnimationTime(base::TimeDelta animate_function_time) override;
+  void SetAnimationTimeInternal(base::TimeDelta animate_function_time) override;
 
   sk_sp<skottie::Animation> GetSkottieAnimation() { return skottie_animation_; }
 
@@ -52,7 +50,6 @@
   math::Size animation_size_;
   uint32 json_size_in_bytes_;
 
-  LottieProperties properties_;
   // |seek_counter_| is used to indicate whether a particular seek has already
   // been processed. When |LottieProperties::seek_counter| is different, then
   // the requested seek should be performed and |seek_counter_| updated to match
diff --git a/src/starboard/CHANGELOG.md b/src/starboard/CHANGELOG.md
index 34bdb7c..cdd706c 100644
--- a/src/starboard/CHANGELOG.md
+++ b/src/starboard/CHANGELOG.md
@@ -232,7 +232,12 @@
 ### Deprecated unused enums |kSbPlayerDecoderStateBufferFull| and
 |kSbPlayerDecoderStateDestroyed|.
 
-### Deprecate the |SB_HAS_ASYNC_AUDIO_FRAMES_REPORTING| macro.
+### Deprecated the usage of |SbMediaIsOutputProtected()| and
+|SbMediaSetOutputProtection()|.
+
+### Deprecated the |SB_HAS_QUIRK_SEEK_TO_KEYFRAME| macro.
+
+### Deprecated the |SB_HAS_ASYNC_AUDIO_FRAMES_REPORTING| macro.
 
 ### Deprecated 'cobalt_minimum_frame_time_in_milliseconds'.
 
diff --git a/src/starboard/android/shared/media_is_output_protected.cc b/src/starboard/android/shared/media_is_output_protected.cc
deleted file mode 100644
index aff256b..0000000
--- a/src/starboard/android/shared/media_is_output_protected.cc
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2017 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/media.h"
-
-#include "starboard/common/log.h"
-
-bool SbMediaIsOutputProtected() {
-  // Protected output is expected to be properly enforced by the system level
-  // DRM system, and also does not provide a convenient way to query its
-  // state.  Thus, from a starboard application perspective, we always return
-  // |true|, and rely on playback of protected content failing at a later
-  // point if the output was not actually secure.
-  return true;
-}
diff --git a/src/starboard/android/shared/media_set_output_protection.cc b/src/starboard/android/shared/media_set_output_protection.cc
deleted file mode 100644
index 627407b..0000000
--- a/src/starboard/android/shared/media_set_output_protection.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2017 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/media.h"
-
-#include "starboard/common/log.h"
-
-bool SbMediaSetOutputProtection(bool enabled) {
-  // Output is always protected from a starboard application perspective, so
-  // return a redundant true.  See documentation in |SbMediaIsOutputProtected|
-  // for further details.
-  return true;
-}
diff --git a/src/starboard/android/shared/starboard_platform.gypi b/src/starboard/android/shared/starboard_platform.gypi
index 2f94003..f6a01f5 100644
--- a/src/starboard/android/shared/starboard_platform.gypi
+++ b/src/starboard/android/shared/starboard_platform.gypi
@@ -132,9 +132,7 @@
         'media_get_initial_buffer_capacity.cc',
         'media_get_max_buffer_capacity.cc',
         'media_is_audio_supported.cc',
-        'media_is_output_protected.cc',
         'media_is_video_supported.cc',
-        'media_set_output_protection.cc',
         'microphone_impl.cc',
         'player_create.cc',
         'player_destroy.cc',
diff --git a/src/starboard/build/base_configuration.gypi b/src/starboard/build/base_configuration.gypi
index 74bd2eb..b8f6d94 100644
--- a/src/starboard/build/base_configuration.gypi
+++ b/src/starboard/build/base_configuration.gypi
@@ -56,6 +56,9 @@
     # requires a 'lib' starboard implementation for the corresponding platform.
     'sb_enable_lib%': '<(sb_enable_lib)',
 
+    # Disables an NPLB audit of C++14 support.
+    'sb_disable_cpp14_audit': 0,
+
     # When this is set to true, the web bindings for the microphone
     # are disabled
     'sb_disable_microphone_idl%': 0,
diff --git a/src/starboard/elf_loader/exported_symbols.cc b/src/starboard/elf_loader/exported_symbols.cc
index 49bbb9b..b07c021 100644
--- a/src/starboard/elf_loader/exported_symbols.cc
+++ b/src/starboard/elf_loader/exported_symbols.cc
@@ -125,9 +125,7 @@
   REGISTER_SYMBOL(SbFileWrite);
   REGISTER_SYMBOL(SbMediaGetAudioConfiguration);
   REGISTER_SYMBOL(SbMediaGetAudioOutputCount);
-  REGISTER_SYMBOL(SbMediaIsOutputProtected);
   REGISTER_SYMBOL(SbMediaIsSupported);
-  REGISTER_SYMBOL(SbMediaSetOutputProtection);
   REGISTER_SYMBOL(SbMemoryAllocate);
   REGISTER_SYMBOL(SbMemoryAllocateAligned);
   REGISTER_SYMBOL(SbMemoryAllocateNoReport);
diff --git a/src/starboard/evergreen/arm/shared/cobalt/configuration.py b/src/starboard/evergreen/arm/shared/cobalt/configuration.py
index 9f4af82..c2776d3 100644
--- a/src/starboard/evergreen/arm/shared/cobalt/configuration.py
+++ b/src/starboard/evergreen/arm/shared/cobalt/configuration.py
@@ -47,8 +47,16 @@
 
   def GetTestFilters(self):
     filters = super(CobaltARMConfiguration, self).GetTestFilters()
-    for target, tests in self.__FILTERED_TESTS.iteritems():
-      filters.extend(test_filter.TestFilter(target, test) for test in tests)
+    filters.extend([
+        test_filter.TestFilter('bindings_test', 'DateBindingsTest.PosixEpoch'),
+        # TODO: Remove this filter once the layout_tests slowdown in the debug
+        # configuration is resolved.
+        test_filter.TestFilter('layout_tests', test_filter.FILTER_ALL, 'debug'),
+        test_filter.TestFilter('renderer_test',
+                               'PixelTest.CircularSubPixelBorder'),
+        test_filter.TestFilter('renderer_test',
+                               'PixelTest.FilterBlurred100PxText'),
+    ])
     return filters
 
   def GetWebPlatformTestFilters(self):
@@ -72,10 +80,3 @@
             'ASAN_OPTIONS': 'detect_leaks=0'
         }
     }
-
-  __FILTERED_TESTS = {
-      'bindings_test': ['DateBindingsTest.PosixEpoch'],
-      'renderer_test': [
-          'PixelTest.CircularSubPixelBorder', 'PixelTest.FilterBlurred100PxText'
-      ],
-  }
diff --git a/src/starboard/linux/shared/BUILD.gn b/src/starboard/linux/shared/BUILD.gn
index 8c26a02..f5ed21b 100644
--- a/src/starboard/linux/shared/BUILD.gn
+++ b/src/starboard/linux/shared/BUILD.gn
@@ -483,9 +483,7 @@
     "//starboard/shared/starboard/media/media_get_audio_configuration_stereo_only.cc",
     "//starboard/shared/starboard/media/media_get_audio_output_count_stereo_only.cc",
     "//starboard/shared/starboard/media/media_is_audio_supported_aac_and_opus.cc",
-    "//starboard/shared/starboard/media/media_is_output_protected.cc",
     "//starboard/shared/starboard/media/media_is_transfer_characteristics_supported.cc",
-    "//starboard/shared/starboard/media/media_set_output_protection.cc",
     "//starboard/shared/starboard/media/media_util.cc",
     "//starboard/shared/starboard/media/media_util.h",
     "//starboard/shared/starboard/media/mime_type.cc",
@@ -574,7 +572,9 @@
     "//starboard/shared/stub/drm_update_session.cc",
     "//starboard/shared/stub/image_decode.cc",
     "//starboard/shared/stub/image_is_decode_supported.cc",
+    "//starboard/shared/stub/media_is_output_protected.cc",
     "//starboard/shared/stub/media_is_supported.cc",
+    "//starboard/shared/stub/media_set_output_protection.cc",
     "//starboard/shared/stub/microphone_close.cc",
     "//starboard/shared/stub/microphone_create.cc",
     "//starboard/shared/stub/microphone_destroy.cc",
diff --git a/src/starboard/linux/shared/media_is_output_protected.cc b/src/starboard/linux/shared/media_is_output_protected.cc
deleted file mode 100644
index 7a64b05..0000000
--- a/src/starboard/linux/shared/media_is_output_protected.cc
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2017 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/media.h"
-
-bool SbMediaIsOutputProtected() {
-  // Pretend that HDCP is always on because Linux is only able to play SD
-  // protected content.
-  return true;
-}
diff --git a/src/starboard/linux/shared/starboard_platform.gypi b/src/starboard/linux/shared/starboard_platform.gypi
index 2167157..64f6c7e 100644
--- a/src/starboard/linux/shared/starboard_platform.gypi
+++ b/src/starboard/linux/shared/starboard_platform.gypi
@@ -284,7 +284,6 @@
       '<(DEPTH)/starboard/shared/starboard/media/media_is_buffer_pool_allocate_on_demand.cc',
       '<(DEPTH)/starboard/shared/starboard/media/media_is_buffer_using_memory_pool.cc',
       '<(DEPTH)/starboard/shared/starboard/media/media_is_transfer_characteristics_supported.cc',
-      '<(DEPTH)/starboard/shared/starboard/media/media_set_output_protection.cc',
       '<(DEPTH)/starboard/shared/starboard/media/mime_type.cc',
       '<(DEPTH)/starboard/shared/starboard/media/mime_type.h',
       '<(DEPTH)/starboard/shared/starboard/memory.cc',
@@ -342,7 +341,9 @@
       '<(DEPTH)/starboard/shared/stub/cryptography_transform.cc',
       '<(DEPTH)/starboard/shared/stub/image_decode.cc',
       '<(DEPTH)/starboard/shared/stub/image_is_decode_supported.cc',
+      '<(DEPTH)/starboard/shared/stub/media_is_output_protected.cc',
       '<(DEPTH)/starboard/shared/stub/media_set_audio_write_duration.cc',
+      '<(DEPTH)/starboard/shared/stub/media_set_output_protection.cc',
       '<(DEPTH)/starboard/shared/stub/microphone_close.cc',
       '<(DEPTH)/starboard/shared/stub/microphone_create.cc',
       '<(DEPTH)/starboard/shared/stub/microphone_destroy.cc',
@@ -419,7 +420,6 @@
         ],
         'starboard_platform_sources': [
           '<(DEPTH)/starboard/linux/shared/drm_create_system.cc',
-          '<(DEPTH)/starboard/linux/shared/media_is_output_protected.cc',
           '<(DEPTH)/starboard/linux/shared/oemcrypto_engine_device_properties_linux.cc',
 
           '<(DEPTH)/starboard/shared/starboard/drm/drm_close_session.cc',
@@ -441,7 +441,6 @@
         ],
       }, {
         'starboard_platform_sources': [
-          '<(DEPTH)/starboard/shared/starboard/media/media_is_output_protected.cc',
           '<(DEPTH)/starboard/shared/stub/media_is_supported.cc',
           '<(DEPTH)/starboard/shared/stub/drm_close_session.cc',
           '<(DEPTH)/starboard/shared/stub/drm_create_system.cc',
diff --git a/src/starboard/media.h b/src/starboard/media.h
index bfc5864..df9b45f 100644
--- a/src/starboard/media.h
+++ b/src/starboard/media.h
@@ -571,6 +571,7 @@
     int output_index,
     SbMediaAudioConfiguration* out_configuration);
 
+#if SB_API_VERSION < 12
 // Indicates whether output copy protection is currently enabled on all capable
 // outputs. If |true|, then non-protection-capable outputs are expected to be
 // blanked.
@@ -586,6 +587,7 @@
 // |enabled|: Indicates whether output protection is enabled (|true|) or
 //   disabled.
 SB_EXPORT bool SbMediaSetOutputProtection(bool enabled);
+#endif  // SB_API_VERSION < 12
 
 // Value used when a video's resolution is not known.
 #define kSbMediaVideoResolutionDimensionInvalid 0
diff --git a/src/starboard/nplb/compiler_compliance/compiler_compliance.gyp b/src/starboard/nplb/compiler_compliance/compiler_compliance.gyp
new file mode 100644
index 0000000..12d941c
--- /dev/null
+++ b/src/starboard/nplb/compiler_compliance/compiler_compliance.gyp
@@ -0,0 +1,31 @@
+# Copyright 2020 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.
+
+{
+  'targets': [
+    {
+      'target_name': 'cpp14_supported',
+      'type': 'static_library',
+      'cflags_cc': [
+        '-std=c++14',
+      ],
+      'sources': [
+        'cpp14_constexpr.cc',
+      ],
+      'dependencies': [
+        '<(DEPTH)/starboard/starboard.gyp:starboard',
+      ],
+    },
+  ],
+}
diff --git a/src/starboard/nplb/compiler_compliance/cpp14_constexpr.cc b/src/starboard/nplb/compiler_compliance/cpp14_constexpr.cc
new file mode 100644
index 0000000..3a07f42
--- /dev/null
+++ b/src/starboard/nplb/compiler_compliance/cpp14_constexpr.cc
@@ -0,0 +1,38 @@
+// Copyright 2020 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/configuration.h"
+#include "starboard/types.h"
+
+namespace starboard {
+namespace nplb {
+namespace {
+
+constexpr const char kPangram[] = "The quick brown fox jumps over a lazy dog";
+
+// The C++14 constexpr permits allocations and branches.
+constexpr size_t CompileTimeStringLength(const char* str) {
+  size_t length = 0;
+  while (*(str + length)) {
+    ++length;
+  }
+  return length + 1;
+}
+
+SB_COMPILE_ASSERT(CompileTimeStringLength(kPangram) == sizeof(kPangram),
+                  CompileTimeStringLength_does_not_return_correct_length);
+
+}  // namespace
+}  // namespace nplb
+}  // namespace starboard
diff --git a/src/starboard/nplb/nplb.gyp b/src/starboard/nplb/nplb.gyp
index e34ed0c..d4e249c 100644
--- a/src/starboard/nplb/nplb.gyp
+++ b/src/starboard/nplb/nplb.gyp
@@ -316,14 +316,19 @@
       'dependencies': [
         '<@(cobalt_platform_dependencies)',
         '<(DEPTH)/starboard/shared/starboard/media/media.gyp:media_util',
-        '<(DEPTH)/starboard/shared/starboard/player/player.gyp:video_dmp',
         '<(DEPTH)/starboard/shared/starboard/player/player.gyp:player_copy_test_data',
+        '<(DEPTH)/starboard/shared/starboard/player/player.gyp:video_dmp',
         '<(DEPTH)/starboard/starboard.gyp:starboard',
         '<(DEPTH)/testing/gmock.gyp:gmock',
         '<(DEPTH)/testing/gtest.gyp:gtest',
         'copy_nplb_file_tests_data',
       ],
       'conditions': [
+        ['sb_disable_cpp14_audit != 1', {
+          'dependencies': [
+            '<(DEPTH)/starboard/nplb/compiler_compliance/compiler_compliance.gyp:cpp14_supported',
+          ],
+        }],
         ['sb_evergreen != 1', {
           'sources': [
             # Segfaults or causes unresolved symbols for Cobalt Evergreen.
diff --git a/src/starboard/raspi/shared/cobalt/configuration.py b/src/starboard/raspi/shared/cobalt/configuration.py
index 7c7d912..26f981d 100644
--- a/src/starboard/raspi/shared/cobalt/configuration.py
+++ b/src/starboard/raspi/shared/cobalt/configuration.py
@@ -24,8 +24,9 @@
 
   def __init__(self, platform_configuration, application_name,
                application_directory):
-    super(CobaltRaspiConfiguration, self).__init__(
-        platform_configuration, application_name, application_directory)
+    super(CobaltRaspiConfiguration,
+          self).__init__(platform_configuration, application_name,
+                         application_directory)
 
   def GetPostIncludes(self):
     # If there isn't a configuration.gypi found in the usual place, we'll
@@ -47,6 +48,9 @@
   def GetTestFilters(self):
     filters = super(CobaltRaspiConfiguration, self).GetTestFilters()
     filters.extend([
+        # TODO: Remove this filter once the layout_tests slowdown in the debug
+        # configuration is resolved.
+        test_filter.TestFilter('layout_tests', test_filter.FILTER_ALL, 'debug'),
         # These tests are currently producing slightly different images on the
         # RasPi.
         test_filter.TestFilter('renderer_test',
diff --git a/src/starboard/raspi/shared/gyp_configuration.gypi b/src/starboard/raspi/shared/gyp_configuration.gypi
index ea69e9f..deb191c 100644
--- a/src/starboard/raspi/shared/gyp_configuration.gypi
+++ b/src/starboard/raspi/shared/gyp_configuration.gypi
@@ -18,6 +18,9 @@
     # TODO: Remove when omitted for all platforms in base_configuration.gypi.
     'sb_static_contents_output_data_dir': '<(PRODUCT_DIR)/content',
 
+    # The Raspberry Pi compiler does not have support for C++14.
+    'sb_disable_cpp14_audit': 1,
+
     'target_os': 'linux',
 
     'sysroot%': '/',
diff --git a/src/starboard/raspi/shared/starboard_platform.gypi b/src/starboard/raspi/shared/starboard_platform.gypi
index f1215a6..352a3cb 100644
--- a/src/starboard/raspi/shared/starboard_platform.gypi
+++ b/src/starboard/raspi/shared/starboard_platform.gypi
@@ -314,9 +314,7 @@
         '<(DEPTH)/starboard/shared/starboard/media/media_is_audio_supported_aac_only.cc',
         '<(DEPTH)/starboard/shared/starboard/media/media_is_buffer_pool_allocate_on_demand.cc',
         '<(DEPTH)/starboard/shared/starboard/media/media_is_buffer_using_memory_pool.cc',
-        '<(DEPTH)/starboard/shared/starboard/media/media_is_output_protected.cc',
         '<(DEPTH)/starboard/shared/starboard/media/media_is_transfer_characteristics_supported.cc',
-        '<(DEPTH)/starboard/shared/starboard/media/media_set_output_protection.cc',
         '<(DEPTH)/starboard/shared/starboard/media/mime_type.cc',
         '<(DEPTH)/starboard/shared/starboard/media/mime_type.h',
         '<(DEPTH)/starboard/shared/starboard/memory.cc',
diff --git a/src/starboard/shared/starboard/media/media_is_output_protected.cc b/src/starboard/shared/starboard/media/media_is_output_protected.cc
deleted file mode 100644
index a8dca1b..0000000
--- a/src/starboard/shared/starboard/media/media_is_output_protected.cc
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2016 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/media.h"
-
-#include "starboard/common/log.h"
-
-bool SbMediaIsOutputProtected() {
-  SB_NOTIMPLEMENTED();
-  return false;
-}
diff --git a/src/starboard/shared/starboard/media/media_set_output_protection.cc b/src/starboard/shared/starboard/media/media_set_output_protection.cc
deleted file mode 100644
index 6b4953e..0000000
--- a/src/starboard/shared/starboard/media/media_set_output_protection.cc
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2016 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/media.h"
-
-#include "starboard/common/log.h"
-
-bool SbMediaSetOutputProtection(bool enabled) {
-  SB_NOTIMPLEMENTED();
-  return false;
-}
diff --git a/src/starboard/shared/stub/media_is_output_protected.cc b/src/starboard/shared/stub/media_is_output_protected.cc
index b5280d3..3d117a5 100644
--- a/src/starboard/shared/stub/media_is_output_protected.cc
+++ b/src/starboard/shared/stub/media_is_output_protected.cc
@@ -16,6 +16,8 @@
 
 #include "starboard/common/log.h"
 
+#if SB_API_VERSION < 12
 bool SbMediaIsOutputProtected() {
   return false;
 }
+#endif  // SB_API_VERSION < 12
diff --git a/src/starboard/shared/stub/media_set_output_protection.cc b/src/starboard/shared/stub/media_set_output_protection.cc
index 19a886b..219237d 100644
--- a/src/starboard/shared/stub/media_set_output_protection.cc
+++ b/src/starboard/shared/stub/media_set_output_protection.cc
@@ -16,6 +16,8 @@
 
 #include "starboard/common/log.h"
 
+#if SB_API_VERSION < 12
 bool SbMediaSetOutputProtection(bool enabled) {
   return false;
 }
+#endif  // SB_API_VERSION < 12
diff --git a/src/third_party/boringssl/boringssl.gyp b/src/third_party/boringssl/boringssl.gyp
index 6485284..585fd34 100644
--- a/src/third_party/boringssl/boringssl.gyp
+++ b/src/third_party/boringssl/boringssl.gyp
@@ -40,15 +40,7 @@
           '<(DEPTH)/starboard/client_porting/eztime/eztime.gyp:eztime',
           '<(DEPTH)/starboard/starboard_headers_only.gyp:starboard_headers_only',
         ],
-        'sources': [
-          '<(boringssl_root)/crypto/rand_extra/starboard.c',
-          '<(boringssl_root)/crypto/cpu-starboard.c',
-        ],
         'sources!': [
-          '<(boringssl_root)/crypto/bio/connect.c',
-          '<(boringssl_root)/crypto/bio/fd.c',
-          '<(boringssl_root)/crypto/bio/socket.c',
-          '<(boringssl_root)/crypto/bio/socket_helper.c',
           '<(boringssl_root)/crypto/rand_extra/deterministic.c',
           '<(boringssl_root)/crypto/rand_extra/fuchsia.c',
           '<(boringssl_root)/crypto/rand_extra/windows.c',
@@ -94,7 +86,7 @@
   },
   'targets': [
     {
-      'target_name': 'crypto',
+      'target_name': 'crypto_full',
 
       # Include the source file list generated by BoringSSL
       'includes': ['boringssl.gypi',],
@@ -242,7 +234,23 @@
             }],
           ],
         }],
+        ['OS=="starboard"', {
+          'sources': [
+            '<(boringssl_root)/crypto/rand_extra/starboard.c',
+            '<(boringssl_root)/crypto/cpu-starboard.c',
+          ],
+        }],
       ],
     },
+    {
+      'target_name': 'crypto',
+      'sources!': [
+        '<(boringssl_root)/crypto/bio/connect.c',
+        '<(boringssl_root)/crypto/bio/fd.c',
+        '<(boringssl_root)/crypto/bio/socket.c',
+        '<(boringssl_root)/crypto/bio/socket_helper.c',
+      ],
+      'dependencies': [ 'crypto_full' ],
+    },
   ],
 }
diff --git a/src/third_party/crashpad/build/crashpad_dependencies.gypi b/src/third_party/crashpad/build/crashpad_dependencies.gypi
index 7fd1cf6..1e04abd 100644
--- a/src/third_party/crashpad/build/crashpad_dependencies.gypi
+++ b/src/third_party/crashpad/build/crashpad_dependencies.gypi
@@ -32,9 +32,6 @@
   # and its copy of the gtest library.
 
   'variables': {
-    # When with external dependencies, build/gyp_crashpad.py sets
-    # crashpad_dependencies to "external", and this % assignment will not
-    # override it.
-    'crashpad_dependencies%': 'standalone',
+    'crashpad_dependencies%': 'external',
   },
 }
diff --git a/src/third_party/crashpad/crashpad.gyp b/src/third_party/crashpad/crashpad.gyp
index f30a9df..cbbf283 100644
--- a/src/third_party/crashpad/crashpad.gyp
+++ b/src/third_party/crashpad/crashpad.gyp
@@ -19,19 +19,19 @@
       'type': 'none',
       'dependencies': [
         'client/client.gyp:*',
-        'client/client_test.gyp:*',
+        # 'client/client_test.gyp:*',
         'compat/compat.gyp:*',
         'handler/handler.gyp:*',
-        'handler/handler_test.gyp:*',
+        # 'handler/handler_test.gyp:*',
         'minidump/minidump.gyp:*',
-        'minidump/minidump_test.gyp:*',
+        # 'minidump/minidump_test.gyp:*',
         'snapshot/snapshot.gyp:*',
-        'snapshot/snapshot_test.gyp:*',
-        'test/test.gyp:*',
-        'test/test_test.gyp:*',
+        # 'snapshot/snapshot_test.gyp:*',
+        # 'test/test.gyp:*',
+        # 'test/test_test.gyp:*',
         'tools/tools.gyp:*',
         'util/util.gyp:*',
-        'util/util_test.gyp:*',
+        # 'util/util_test.gyp:*',
       ],
       'sources': [
         'doc/support/crashpad.doxy.h',
diff --git a/src/third_party/crashpad/handler/handler.gyp b/src/third_party/crashpad/handler/handler.gyp
index f8313a5..2080d97 100644
--- a/src/third_party/crashpad/handler/handler.gyp
+++ b/src/third_party/crashpad/handler/handler.gyp
@@ -31,11 +31,17 @@
         '../third_party/zlib/zlib.gyp:zlib',
         '../tools/tools.gyp:crashpad_tool_support',
         '../util/util.gyp:crashpad_util',
+        '<(DEPTH)/third_party/boringssl/boringssl.gyp:crypto_full',
+        '<(DEPTH)/starboard/starboard.gyp:starboard',
       ],
       'include_dirs': [
         '..',
       ],
+      'defines': [
+        'CRASHPAD_USE_BORINGSSL',
+      ],
       'sources': [
+        '../util/net/http_transport_socket.cc',
         'crash_report_upload_thread.cc',
         'crash_report_upload_thread.h',
         'handler_main.cc',
diff --git a/src/third_party/crashpad/handler/handler_main.cc b/src/third_party/crashpad/handler/handler_main.cc
index e0a262c..be73916 100644
--- a/src/third_party/crashpad/handler/handler_main.cc
+++ b/src/third_party/crashpad/handler/handler_main.cc
@@ -100,6 +100,12 @@
 #include "handler/linux/exception_handler_server.h"
 #endif  // OS_MACOSX
 
+#if defined(STARBOARD)
+// Stub out required starboard implementation as this is built in parallel.
+#include "starboard/event.h"
+void SbEventHandle(const SbEvent* event) {}
+#endif  // defined(STARBOARD)
+
 namespace crashpad {
 
 namespace {
diff --git a/src/third_party/crashpad/third_party/lss/lss.h b/src/third_party/crashpad/third_party/lss/lss.h
index 11209ff..8cd9293 100644
--- a/src/third_party/crashpad/third_party/lss/lss.h
+++ b/src/third_party/crashpad/third_party/lss/lss.h
@@ -15,7 +15,9 @@
 #ifndef CRASHPAD_THIRD_PARTY_LSS_LSS_H_
 #define CRASHPAD_THIRD_PARTY_LSS_LSS_H_
 
-#if defined(CRASHPAD_LSS_SOURCE_EXTERNAL)
+#if defined(STARBOARD)
+#include "third_party/linux-syscall-support/linux_syscall_support.h"
+#elif defined(CRASHPAD_LSS_SOURCE_EXTERNAL)
 #include "third_party/lss/linux_syscall_support.h"
 #elif defined(CRASHPAD_LSS_SOURCE_EMBEDDED)
 #include "third_party/lss/lss/linux_syscall_support.h"
diff --git a/src/third_party/crashpad/third_party/mini_chromium/mini_chromium.gyp b/src/third_party/crashpad/third_party/mini_chromium/mini_chromium.gyp
index e14a1fa..e4e9357 100644
--- a/src/third_party/crashpad/third_party/mini_chromium/mini_chromium.gyp
+++ b/src/third_party/crashpad/third_party/mini_chromium/mini_chromium.gyp
@@ -35,10 +35,10 @@
         }],
         ['crashpad_dependencies=="external"', {
           'dependencies': [
-            '../../../../mini_chromium/mini_chromium/base/base.gyp:base',
+            '<(DEPTH)/third_party/mini_chromium/base/base.gyp:base',
           ],
           'export_dependent_settings': [
-            '../../../../mini_chromium/mini_chromium/base/base.gyp:base',
+            '<(DEPTH)/third_party/mini_chromium/base/base.gyp:base',
           ],
         }],
       ],
diff --git a/src/third_party/crashpad/third_party/zlib/zlib.gyp b/src/third_party/crashpad/third_party/zlib/zlib.gyp
index b5fbc83..09c68b0 100644
--- a/src/third_party/crashpad/third_party/zlib/zlib.gyp
+++ b/src/third_party/crashpad/third_party/zlib/zlib.gyp
@@ -163,7 +163,7 @@
             ],
           },
           'dependencies': [
-            '../../../../zlib/zlib.gyp:zlib',
+            '<(DEPTH)/third_party/zlib/zlib.gyp:zlib',
           ],
         }],
       ],
diff --git a/src/third_party/crashpad/third_party/zlib/zlib_crashpad.h b/src/third_party/crashpad/third_party/zlib/zlib_crashpad.h
index fd497a8..f8f9f75 100644
--- a/src/third_party/crashpad/third_party/zlib/zlib_crashpad.h
+++ b/src/third_party/crashpad/third_party/zlib/zlib_crashpad.h
@@ -19,7 +19,9 @@
 // available at any other location in the source tree. It will #include the
 // proper <zlib.h> depending on how the build has been configured.
 
-#if defined(CRASHPAD_ZLIB_SOURCE_SYSTEM) || \
+#if defined(STARBOARD)
+#include "third_party/zlib/zlib.h"
+#elif defined(CRASHPAD_ZLIB_SOURCE_SYSTEM) || \
     defined(CRASHPAD_ZLIB_SOURCE_EXTERNAL)
 #include <zlib.h>
 #elif defined(CRASHPAD_ZLIB_SOURCE_EMBEDDED)
diff --git a/src/third_party/crashpad/util/file/file_io_posix.cc b/src/third_party/crashpad/util/file/file_io_posix.cc
index 91b252a..e0d4eb3 100644
--- a/src/third_party/crashpad/util/file/file_io_posix.cc
+++ b/src/third_party/crashpad/util/file/file_io_posix.cc
@@ -156,11 +156,14 @@
 FileHandle LoggingOpenMemoryFileForReadAndWrite(const base::FilePath& name) {
   DCHECK(name.value().find('/') == std::string::npos);
 
-  int result = HANDLE_EINTR(memfd_create(name.value().c_str(), 0));
+  int result;
+#if !defined(STARBOARD)
+  result = HANDLE_EINTR(memfd_create(name.value().c_str(), 0));
   if (result >= 0 || errno != ENOSYS) {
     PLOG_IF(ERROR, result < 0) << "memfd_create";
     return result;
   }
+#endif
 
   const char* tmp = getenv("TMPDIR");
   tmp = tmp ? tmp : "/tmp";
diff --git a/src/third_party/crashpad/util/linux/socket.cc b/src/third_party/crashpad/util/linux/socket.cc
index f56eacf..a0fcbf0 100644
--- a/src/third_party/crashpad/util/linux/socket.cc
+++ b/src/third_party/crashpad/util/linux/socket.cc
@@ -48,7 +48,7 @@
   return true;
 }
 
-constexpr size_t UnixCredentialSocket::kMaxSendRecvMsgFDs = 4;
+const size_t UnixCredentialSocket::kMaxSendRecvMsgFDs = 4;
 
 // static
 int UnixCredentialSocket::SendMsg(int fd,
diff --git a/src/third_party/crashpad/util/stdlib/aligned_allocator.cc b/src/third_party/crashpad/util/stdlib/aligned_allocator.cc
index 797a3ac..ae14a3a 100644
--- a/src/third_party/crashpad/util/stdlib/aligned_allocator.cc
+++ b/src/third_party/crashpad/util/stdlib/aligned_allocator.cc
@@ -25,6 +25,10 @@
 #include <xutility>
 #endif  // OS_POSIX
 
+#if defined(STARBOARD)
+#include "starboard/memory.h"
+#endif
+
 namespace {
 
 // Throws std::bad_alloc() by calling an internal function provided by the C++
@@ -66,7 +70,9 @@
 }
 
 void AlignedFree(void* pointer) {
-#if defined(OS_POSIX)
+#if defined(STARBOARD)
+  SbMemoryDeallocate(pointer);
+#elif defined(OS_POSIX)
   free(pointer);
 #elif defined(OS_WIN)
   _aligned_free(pointer);
diff --git a/src/third_party/crashpad/util/stdlib/map_insert.h b/src/third_party/crashpad/util/stdlib/map_insert.h
index d2c3b84..ea8fc03 100644
--- a/src/third_party/crashpad/util/stdlib/map_insert.h
+++ b/src/third_party/crashpad/util/stdlib/map_insert.h
@@ -51,6 +51,18 @@
   return result.second;
 }
 
+template <typename T>
+bool MapInsertOrReplace(T* map,
+                        const typename T::key_type& key,
+                        const typename T::mapped_type& value,
+                        std::nullptr_t) {
+  const auto result = map->insert(std::make_pair(key, value));
+  if (!result.second) {
+    result.first->second = value;
+  }
+  return result.second;
+}
+
 }  // namespace crashpad
 
 #endif  // CRASHPAD_UTIL_STDLIB_MAP_INSERT_H_
diff --git a/src/third_party/crashpad/util/util.gyp b/src/third_party/crashpad/util/util.gyp
index 8a33e83..2440d7b 100644
--- a/src/third_party/crashpad/util/util.gyp
+++ b/src/third_party/crashpad/util/util.gyp
@@ -23,10 +23,12 @@
       'dependencies': [
         '../compat/compat.gyp:crashpad_compat',
         '../third_party/mini_chromium/mini_chromium.gyp:base',
-        '../third_party/zlib/zlib.gyp:zlib',
         '../third_party/lss/lss.gyp:lss',
       ],
-      'defines': [ 'ZLIB_CONST' ],
+      'defines': [
+        'ZLIB_CONST',
+        'CRASHPAD_USE_BORINGSSL',
+      ],
       'include_dirs': [
         '..',
         '<(INTERMEDIATE_DIR)',
@@ -416,7 +418,6 @@
         }],
         ['target_os=="linux" or target_os=="android"', {
           'sources': [
-            'net/http_transport_socket.cc',
             'process/process_memory_sanitized.cc',
             'process/process_memory_sanitized.h',
           ],
