diff --git a/DEPS b/DEPS
index e2304ef8..ccf4af8 100644
--- a/DEPS
+++ b/DEPS
@@ -130,7 +130,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '6c4c2362a367c28ef6799012a8d06811b65b4a75',
+  'catapult_revision': '259a1ec4b05d169f5027345828ca77ef7bec6ec6',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
diff --git a/chrome/browser/extensions/api/DEPS b/chrome/browser/extensions/api/DEPS
index a8a4ed7d..f151a879 100644
--- a/chrome/browser/extensions/api/DEPS
+++ b/chrome/browser/extensions/api/DEPS
@@ -15,4 +15,10 @@
     "+chrome/browser/ui/views/frame",
     "+components/captive_portal",
   ],
+
+  # TODO(eladalon): Remove along with webrtc_event_log_apitest.cc.
+  # https://crbug.com/775415
+   "webrtc_event_log_apitest.cc": [
+    "+content/browser/webrtc",
+  ],
 }
diff --git a/chrome/browser/signin/easy_unlock_service_regular.cc b/chrome/browser/signin/easy_unlock_service_regular.cc
index 7dcd1c7..5dd1d1b 100644
--- a/chrome/browser/signin/easy_unlock_service_regular.cc
+++ b/chrome/browser/signin/easy_unlock_service_regular.cc
@@ -216,8 +216,7 @@
   promotion_manager_.reset(new proximity_auth::PromotionManager(
       local_device_data_provider_.get(), notification_controller_.get(),
       pref_manager_.get(), service->CreateCryptAuthClientFactory(),
-      base::MakeUnique<base::DefaultClock>(),
-      base::ThreadTaskRunnerHandle::Get()));
+      base::DefaultClock::GetInstance(), base::ThreadTaskRunnerHandle::Get()));
   promotion_manager_->Start();
 }
 
diff --git a/chrome/browser/ui/search/local_ntp_browsertest.cc b/chrome/browser/ui/search/local_ntp_browsertest.cc
index a8c5ee6..ba51b96 100644
--- a/chrome/browser/ui/search/local_ntp_browsertest.cc
+++ b/chrome/browser/ui/search/local_ntp_browsertest.cc
@@ -18,6 +18,7 @@
 #include "chrome/browser/ui/browser_commands.h"
 #include "chrome/browser/ui/search/instant_test_utils.h"
 #include "chrome/browser/ui/search/local_ntp_test_utils.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/common/chrome_features.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/test/base/in_process_browser_test.h"
@@ -36,6 +37,62 @@
  public:
   LocalNTPTest() {}
 
+  // Navigates the active tab to chrome://newtab and waits until the NTP is
+  // fully loaded. Note that simply waiting for a navigation is not enough,
+  // since the MV iframe receives the tiles asynchronously.
+  void NavigateToNTPAndWaitUntilLoaded() {
+    content::WebContents* active_tab =
+        browser()->tab_strip_model()->GetActiveWebContents();
+
+    // Attach a message queue *before* navigating to the NTP, to make sure we
+    // don't miss the 'loaded' message due to some race condition.
+    content::DOMMessageQueue msg_queue(active_tab);
+
+    // Navigate to the NTP.
+    ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
+    ASSERT_TRUE(search::IsInstantNTP(active_tab));
+    ASSERT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl),
+              active_tab->GetController().GetVisibleEntry()->GetURL());
+
+    // At this point, the MV iframe may or may not have been fully loaded. Once
+    // it loads, it sends a 'loaded' postMessage to the page. Check if the page
+    // has already received that, and if not start listening for it. It's
+    // important that these two things happen in the same JS invocation, since
+    // otherwise we might miss the message.
+    bool mv_tiles_loaded = false;
+    ASSERT_TRUE(instant_test_utils::GetBoolFromJS(active_tab,
+                                                  R"js(
+        (function() {
+          if (tilesAreLoaded) {
+            return true;
+          }
+          window.addEventListener('message', function(event) {
+            if (event.data.cmd == 'loaded') {
+              domAutomationController.send('NavigateToNTPAndWaitUntilLoaded');
+            }
+          });
+          return false;
+        })()
+                                                  )js",
+                                                  &mv_tiles_loaded));
+
+    std::string message;
+    // Get rid of the message that the GetBoolFromJS call produces.
+    ASSERT_TRUE(msg_queue.PopMessage(&message));
+
+    if (mv_tiles_loaded) {
+      // The tiles are already loaded, i.e. we missed the 'loaded' message. All
+      // is well.
+      return;
+    }
+
+    // Not loaded yet. Wait for the "NavigateToNTPAndWaitUntilLoaded" message.
+    ASSERT_TRUE(msg_queue.WaitForMessage(&message));
+    ASSERT_EQ("\"NavigateToNTPAndWaitUntilLoaded\"", message);
+    // There shouldn't be any other messages.
+    ASSERT_FALSE(msg_queue.PopMessage(&message));
+  }
+
  private:
   void SetUp() override {
     feature_list_.InitAndEnableFeature(features::kUseGoogleLocalNtp);
@@ -64,7 +121,9 @@
 
   // Navigate somewhere else in the same tab.
   content::TestNavigationObserver elsewhere_observer(active_tab);
-  ui_test_utils::NavigateToURL(browser(), other_url);
+  ui_test_utils::NavigateToURLWithDisposition(
+      browser(), other_url, WindowOpenDisposition::CURRENT_TAB,
+      ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
   elsewhere_observer.Wait();
   ASSERT_TRUE(elsewhere_observer.last_navigation_succeeded());
   ASSERT_FALSE(search::IsInstantNTP(active_tab));
@@ -93,7 +152,10 @@
   EXPECT_FALSE(result);
 
   // Navigate to a new NTP instance.
-  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
+  ui_test_utils::NavigateToURLWithDisposition(
+      browser(), GURL(chrome::kChromeUINewTabURL),
+      WindowOpenDisposition::CURRENT_TAB,
+      ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
   ASSERT_TRUE(search::IsInstantNTP(active_tab));
   // Now the API should be available again.
   ASSERT_TRUE(instant_test_utils::GetBoolFromJS(
@@ -183,7 +245,7 @@
   base::HistogramTester histograms;
 
   // Navigate to the NTP.
-  local_ntp_test_utils::NavigateToNTPAndWaitUntilLoaded(browser());
+  NavigateToNTPAndWaitUntilLoaded();
 
   bool is_google = false;
   ASSERT_TRUE(instant_test_utils::GetBoolFromJS(
@@ -235,7 +297,7 @@
   base::HistogramTester histograms;
 
   // Navigate to the NTP.
-  local_ntp_test_utils::NavigateToNTPAndWaitUntilLoaded(browser());
+  NavigateToNTPAndWaitUntilLoaded();
 
   bool is_google = false;
   ASSERT_TRUE(instant_test_utils::GetBoolFromJS(
@@ -286,7 +348,6 @@
   active_tab->SetDelegate(&console_observer);
 
   // Navigate to the NTP.
-  // TODO use NavigateToNTPAndWaitUntilLoaded
   ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
   ASSERT_TRUE(search::IsInstantNTP(active_tab));
   ASSERT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl),
@@ -317,7 +378,9 @@
   EXPECT_EQ(nullptr,
             base::StatisticsRecorder::FindHistogram(kFeaturesHistogramName));
   // Navigate somewhere else in the same tab.
-  ui_test_utils::NavigateToURL(browser(), other_url);
+  ui_test_utils::NavigateToURLWithDisposition(
+      browser(), other_url, WindowOpenDisposition::CURRENT_TAB,
+      ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
   ASSERT_FALSE(search::IsInstantNTP(active_tab));
   // Navigate back to NTP.
   content::TestNavigationObserver back_observer(active_tab);
@@ -335,7 +398,10 @@
   fwd_observer.Wait();
   ASSERT_FALSE(search::IsInstantNTP(active_tab));
   // Navigate to a new NTP instance.
-  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
+  ui_test_utils::NavigateToURLWithDisposition(
+      browser(), GURL(chrome::kChromeUINewTabURL),
+      WindowOpenDisposition::CURRENT_TAB,
+      ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
   ASSERT_TRUE(search::IsInstantNTP(active_tab));
   // There should be 2 counts of PageVisits.
   histogram_tester.ExpectBucketCount(
@@ -384,7 +450,7 @@
 IN_PROC_BROWSER_TEST_F(LocalNTPTest, LoadsIframe) {
   content::WebContents* active_tab =
       local_ntp_test_utils::OpenNewTab(browser(), GURL("about:blank"));
-  local_ntp_test_utils::NavigateToNTPAndWaitUntilLoaded(browser());
+  NavigateToNTPAndWaitUntilLoaded();
 
   // Get the iframe and check that the tiles loaded correctly.
   content::RenderFrameHost* iframe = GetMostVisitedIframe(active_tab);
diff --git a/chrome/browser/ui/search/local_ntp_test_utils.cc b/chrome/browser/ui/search/local_ntp_test_utils.cc
index 5bb8104e..32fdde67 100644
--- a/chrome/browser/ui/search/local_ntp_test_utils.cc
+++ b/chrome/browser/ui/search/local_ntp_test_utils.cc
@@ -7,22 +7,15 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread_restrictions.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/search/search.h"
 #include "chrome/browser/search_engines/template_url_service_factory.h"
 #include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/search/instant_test_utils.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/common/pref_names.h"
-#include "chrome/common/url_constants.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/prefs/pref_service.h"
 #include "components/search_engines/template_url.h"
 #include "components/search_engines/template_url_data.h"
 #include "components/search_engines/template_url_service.h"
-#include "content/public/browser/navigation_controller.h"
-#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/test/browser_test_utils.h"
 #include "ui/base/resource/resource_bundle.h"
 
 namespace local_ntp_test_utils {
@@ -35,59 +28,6 @@
   return browser->tab_strip_model()->GetActiveWebContents();
 }
 
-void NavigateToNTPAndWaitUntilLoaded(Browser* browser) {
-  content::WebContents* active_tab =
-      browser->tab_strip_model()->GetActiveWebContents();
-
-  // Attach a message queue *before* navigating to the NTP, to make sure we
-  // don't miss the 'loaded' message due to some race condition.
-  content::DOMMessageQueue msg_queue(active_tab);
-
-  // Navigate to the NTP.
-  ui_test_utils::NavigateToURL(browser, GURL(chrome::kChromeUINewTabURL));
-  ASSERT_TRUE(search::IsInstantNTP(active_tab));
-  ASSERT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl),
-            active_tab->GetController().GetVisibleEntry()->GetURL());
-
-  // At this point, the MV iframe may or may not have been fully loaded. Once
-  // it loads, it sends a 'loaded' postMessage to the page. Check if the page
-  // has already received that, and if not start listening for it. It's
-  // important that these two things happen in the same JS invocation, since
-  // otherwise we might miss the message.
-  bool mv_tiles_loaded = false;
-  ASSERT_TRUE(instant_test_utils::GetBoolFromJS(active_tab,
-                                                R"js(
-      (function() {
-        if (tilesAreLoaded) {
-          return true;
-        }
-        window.addEventListener('message', function(event) {
-          if (event.data.cmd == 'loaded') {
-            domAutomationController.send('NavigateToNTPAndWaitUntilLoaded');
-          }
-        });
-        return false;
-      })()
-                                                )js",
-                                                &mv_tiles_loaded));
-
-  std::string message;
-  // Get rid of the message that the GetBoolFromJS call produces.
-  ASSERT_TRUE(msg_queue.PopMessage(&message));
-
-  if (mv_tiles_loaded) {
-    // The tiles are already loaded, i.e. we missed the 'loaded' message. All
-    // is well.
-    return;
-  }
-
-  // Not loaded yet. Wait for the "NavigateToNTPAndWaitUntilLoaded" message.
-  ASSERT_TRUE(msg_queue.WaitForMessage(&message));
-  ASSERT_EQ("\"NavigateToNTPAndWaitUntilLoaded\"", message);
-  // There shouldn't be any other messages.
-  ASSERT_FALSE(msg_queue.PopMessage(&message));
-}
-
 bool SwitchBrowserLanguageToFrench() {
   base::ScopedAllowBlockingForTesting allow_blocking;
   // Make sure the default language is not French.
diff --git a/chrome/browser/ui/search/local_ntp_test_utils.h b/chrome/browser/ui/search/local_ntp_test_utils.h
index 2962347..f173d374 100644
--- a/chrome/browser/ui/search/local_ntp_test_utils.h
+++ b/chrome/browser/ui/search/local_ntp_test_utils.h
@@ -19,12 +19,6 @@
 
 content::WebContents* OpenNewTab(Browser* browser, const GURL& url);
 
-// Navigates the active tab to chrome://newtab and waits until the NTP is
-// fully loaded. The active tab must not be on an NTP already. Note that simply
-// waiting for a navigation is not enough, since the MV iframe receives the
-// tiles asynchronously.
-void NavigateToNTPAndWaitUntilLoaded(Browser* browser);
-
 // Switches the browser language to French, and returns true iff successful.
 bool SwitchBrowserLanguageToFrench();
 
diff --git a/chrome/browser/ui/search/local_ntp_uitest.cc b/chrome/browser/ui/search/local_ntp_uitest.cc
index 73084b6..8c324595 100644
--- a/chrome/browser/ui/search/local_ntp_uitest.cc
+++ b/chrome/browser/ui/search/local_ntp_uitest.cc
@@ -2,18 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <cmath>
-
-#include "base/strings/utf_string_conversions.h"
-#include "base/test/scoped_feature_list.h"
 #include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/search/search.h"
 #include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/browser/ui/location_bar/location_bar.h"
 #include "chrome/browser/ui/search/instant_test_utils.h"
-#include "chrome/browser/ui/search/local_ntp_test_utils.h"
-#include "chrome/common/chrome_features.h"
-#include "chrome/common/url_constants.h"
+#include "chrome/browser/ui/search/instant_uitest_base.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
@@ -22,31 +16,38 @@
 #include "components/omnibox/common/omnibox_focus_state.h"
 #include "content/public/browser/notification_service.h"
 #include "content/public/browser/web_contents.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/geometry/vector2d.h"
 
-class LocalNTPUITest : public InProcessBrowserTest {
+// A test class that sets up local_ntp_browsertest.html (which is mostly a copy
+// of the real local_ntp.html) as the NTP URL.
+class LocalNTPUITest : public InProcessBrowserTest, public InstantUITestBase {
  public:
   LocalNTPUITest() {}
 
-  OmniboxView* omnibox() {
-    return browser()->window()->GetLocationBar()->GetOmniboxView();
+ protected:
+  void SetUpInProcessBrowserTestFixture() override {
+    ASSERT_TRUE(https_test_server().Start());
+    GURL base_url = https_test_server().GetURL("/instant_extended.html?");
+    GURL ntp_url =
+        https_test_server().GetURL("/local_ntp/local_ntp_browsertest.html?");
+    InstantTestBase::Init(base_url, ntp_url, false);
   }
-
- private:
-  void SetUp() override {
-    feature_list_.InitAndEnableFeature(features::kUseGoogleLocalNtp);
-    InProcessBrowserTest::SetUp();
-  }
-
-  base::test::ScopedFeatureList feature_list_;
 };
 
 IN_PROC_BROWSER_TEST_F(LocalNTPUITest, FakeboxRedirectsToOmnibox) {
+  ASSERT_NO_FATAL_FAILURE(SetupInstant(browser()));
+  FocusOmnibox();
+
+  ui_test_utils::NavigateToURLWithDisposition(
+      browser(), ntp_url(), WindowOpenDisposition::NEW_FOREGROUND_TAB,
+      ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB |
+          ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
   content::WebContents* active_tab =
-      local_ntp_test_utils::OpenNewTab(browser(), GURL("about:blank"));
-  local_ntp_test_utils::NavigateToNTPAndWaitUntilLoaded(browser());
+      browser()->tab_strip_model()->GetActiveWebContents();
+  ASSERT_TRUE(search::IsInstantNTP(active_tab));
 
   // This is required to make the mouse events we send below arrive at the right
   // place. It *should* be the default for all interactive_ui_tests anyway, but
@@ -57,27 +58,18 @@
   ui_test_utils::ClickOnView(browser(), VIEW_ID_TAB_CONTAINER);
   ASSERT_EQ(OMNIBOX_FOCUS_NONE, omnibox()->model()->focus_state());
 
-  // Make sure the fakebox is visible.
   bool result = false;
-  ASSERT_TRUE(instant_test_utils::GetBoolFromJS(active_tab, R"js(
-        (function(elem) {
-          return elem && elem.offsetWidth > 0 && elem.offsetHeight > 0 &&
-              window.getComputedStyle(elem).visibility != 'hidden';
-        })(document.getElementById('fakebox'))
-      )js", &result));
-  EXPECT_TRUE(result);
+  ASSERT_TRUE(instant_test_utils::GetBoolFromJS(
+      active_tab, "!!setupAdvancedTest()", &result));
+  ASSERT_TRUE(result);
 
   // Get the position of the fakebox on the page.
   double fakebox_x = 0;
   ASSERT_TRUE(instant_test_utils::GetDoubleFromJS(
-      active_tab,
-      "document.getElementById('fakebox').getBoundingClientRect().left",
-      &fakebox_x));
+      active_tab, "getFakeboxPositionX()", &fakebox_x));
   double fakebox_y = 0;
   ASSERT_TRUE(instant_test_utils::GetDoubleFromJS(
-      active_tab,
-      "document.getElementById('fakebox').getBoundingClientRect().top",
-      &fakebox_y));
+      active_tab, "getFakeboxPositionY()", &fakebox_y));
 
   // Move the mouse over the fakebox.
   gfx::Vector2d fakebox_pos(static_cast<int>(std::ceil(fakebox_x)),
@@ -99,8 +91,7 @@
 
   // The fakebox should now also have focus.
   ASSERT_TRUE(instant_test_utils::GetBoolFromJS(
-      active_tab, "document.body.classList.contains('fakebox-focused')",
-      &result));
+      active_tab, "!!fakeboxIsFocused()", &result));
   EXPECT_TRUE(result);
 
   // Type "a" and wait for the omnibox to receive visible focus.
@@ -114,14 +105,10 @@
   EXPECT_EQ(OMNIBOX_FOCUS_VISIBLE, omnibox()->model()->focus_state());
 
   // The typed text should have arrived in the omnibox.
-  EXPECT_EQ("a", base::UTF16ToUTF8(omnibox()->GetText()));
+  EXPECT_EQ("a", GetOmniboxText());
 
   // On the JS side, the fakebox should have been hidden.
-  ASSERT_TRUE(instant_test_utils::GetBoolFromJS(active_tab, R"js(
-        (function(elem) {
-          return elem && elem.offsetWidth > 0 && elem.offsetHeight > 0 &&
-              window.getComputedStyle(elem).visibility != 'hidden';
-        })(document.getElementById('fakebox'))
-      )js", &result));
+  ASSERT_TRUE(instant_test_utils::GetBoolFromJS(
+      active_tab, "!!fakeboxIsVisible()", &result));
   EXPECT_FALSE(result);
 }
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index b2d60f48..62c3726 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -4375,8 +4375,6 @@
       "../browser/ui/search/instant_test_utils.h",
       "../browser/ui/search/instant_uitest_base.cc",
       "../browser/ui/search/instant_uitest_base.h",
-      "../browser/ui/search/local_ntp_test_utils.cc",
-      "../browser/ui/search/local_ntp_test_utils.h",
       "../browser/ui/search/local_ntp_uitest.cc",
       "../browser/ui/send_mouse_move_uitest_win.cc",
       "../browser/ui/startup/startup_browser_creator_interactive_uitest.cc",
diff --git a/chrome/test/data/local_ntp/local_ntp_browsertest.html b/chrome/test/data/local_ntp/local_ntp_browsertest.html
index 384ad20..c5d2118b 100644
--- a/chrome/test/data/local_ntp/local_ntp_browsertest.html
+++ b/chrome/test/data/local_ntp/local_ntp_browsertest.html
@@ -4,16 +4,14 @@
      Use of this source code is governed by a BSD-style license that can be
      found in the LICENSE file. -->
 <head>
-  <link rel="stylesheet" href="chrome-search://local-ntp/theme.css"></link>
-  <link rel="stylesheet" href="chrome-search://local-ntp/local-ntp.css"></link>
-  <link rel="stylesheet" href="chrome-search://local-ntp/voice.css"></link>
   <script>window.localNTPUnitTest = true;</script>
   <script src="chrome-search://local-ntp/config.js" charset="utf-8"></script>
   <script src="chrome-search://local-ntp/local-ntp.js" charset="utf-8"></script>
   <script src="chrome-search://local-ntp/voice.js" charset="utf-8"></script>
+  <script src="chrome-search://most-visited/util.js" charset="utf-8"></script>
+  <link rel="stylesheet" href="chrome-search://local-ntp/local-ntp.css"></link>
   <script src="test_utils.js" charset="utf-8"></script>
   <script src="local_ntp_browsertest.js" charset="utf-8"></script>
-
   <template id="local-ntp-template">
     <div id="ntp-contents">
       <div id="search">
diff --git a/chrome/test/data/local_ntp/local_ntp_browsertest.js b/chrome/test/data/local_ntp/local_ntp_browsertest.js
index fdefa920..3f032d66 100644
--- a/chrome/test/data/local_ntp/local_ntp_browsertest.js
+++ b/chrome/test/data/local_ntp/local_ntp_browsertest.js
@@ -23,7 +23,7 @@
 
 
 // ******************************* SIMPLE TESTS *******************************
-// These are run by runSimpleTests from test_utils.js.
+// These are run by runSimpleTests above.
 // Functions from test_utils.js are automatically imported.
 
 
@@ -87,3 +87,43 @@
   var localNTP = LocalNTP();
   localNTP.init();
 }
+
+
+// ****************************** ADVANCED TESTS ******************************
+// Advanced tests are controlled from the native side. The helpers here are
+// called from native code to set up the page and to check results.
+
+
+function setupAdvancedTest() {
+  setUpPage('local-ntp-template');
+  initLocalNTP(/*isGooglePage=*/true);
+
+  assertTrue(elementIsVisible($('fakebox')));
+
+  return true;
+}
+
+
+function getFakeboxPositionX() {
+  assertTrue(elementIsVisible($('fakebox')));
+  var rect = $('fakebox').getBoundingClientRect();
+  return rect.left;
+}
+
+
+function getFakeboxPositionY() {
+  assertTrue(elementIsVisible($('fakebox')));
+  var rect = $('fakebox').getBoundingClientRect();
+  return rect.top;
+}
+
+
+function fakeboxIsVisible() {
+  return elementIsVisible($('fakebox'));
+}
+
+
+function fakeboxIsFocused() {
+  return fakeboxIsVisible() &&
+      document.body.classList.contains('fakebox-focused');
+}
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index 824ddc4..fb5fc44 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -1059,7 +1059,12 @@
 
   "DefaultSearchProviderName": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderName": "google.com" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderName": "google.com"
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1067,7 +1072,11 @@
 
   "DefaultSearchProviderKeyword": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}"
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1075,7 +1084,11 @@
 
   "DefaultSearchProviderSearchURL": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google"
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data",
         "indicator_selector": "[setting=search-engine]",
@@ -1088,7 +1101,12 @@
 
   "DefaultSearchProviderSuggestURL": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderSuggestURL": "http://www.google.com/suggest?q={searchTerms}" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderSuggestURL": "http://www.google.com/suggest?q={searchTerms}"
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1096,7 +1114,12 @@
 
   "DefaultSearchProviderInstantURL": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderInstantURL": "http://www.google.com/instant?q={searchTerms}" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderInstantURL": "http://www.google.com/instant?q={searchTerms}"
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1104,7 +1127,12 @@
 
   "DefaultSearchProviderNewTabURL": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderNewTabURL": "http://www.google.com/newtab" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderNewTabURL": "http://www.google.com/newtab"
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1112,7 +1140,12 @@
 
   "DefaultSearchProviderIconURL": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderIconURL": "http://www.google.com/favicon.ico" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderIconURL": "http://www.google.com/favicon.ico"
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1120,7 +1153,12 @@
 
   "DefaultSearchProviderEncodings": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderEncodings": ["UTF-8"] },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderEncodings": ["UTF-8"]
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1128,7 +1166,12 @@
 
   "DefaultSearchProviderAlternateURLs": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderAlternateURLs": ["http://www.google.com/#q={searchTerms}", "http://www.google.com/search#q={searchTerms}"] },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderAlternateURLs": ["http://www.google.com/#q={searchTerms}", "http://www.google.com/search#q={searchTerms}"]
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1136,7 +1179,12 @@
 
   "DefaultSearchProviderSearchTermsReplacementKey": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderSearchTermsReplacementKey": "espv" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderSearchTermsReplacementKey": "espv"
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1144,7 +1192,12 @@
 
   "DefaultSearchProviderImageURL": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderImageURL": "http://www.google.com/searchbyimage/upload" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderImageURL": "http://www.google.com/searchbyimage/upload"
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1152,7 +1205,12 @@
 
   "DefaultSearchProviderSearchURLPostParams": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderSearchURLPostParams": "" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderSearchURLPostParams": ""
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1160,7 +1218,12 @@
 
   "DefaultSearchProviderSuggestURLPostParams": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderSuggestURLPostParams": "" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderSuggestURLPostParams": ""
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1168,7 +1231,12 @@
 
   "DefaultSearchProviderInstantURLPostParams": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderInstantURLPostParams": "" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderInstantURLPostParams": ""
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
@@ -1176,7 +1244,12 @@
 
   "DefaultSearchProviderImageURLPostParams": {
     "os": ["win", "linux", "mac", "chromeos"],
-    "test_policy": { "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}", "DefaultSearchProviderKeyword": "google", "DefaultSearchProviderImageURLPostParams": "image_content={imageThumbnail},image_url={imageURL},sbisrc={imageSearchSource}" },
+    "test_policy": {
+      "DefaultSearchProviderEnabled": true,
+      "DefaultSearchProviderSearchURL": "http://www.google.com/?q={searchTerms}",
+      "DefaultSearchProviderKeyword": "google",
+      "DefaultSearchProviderImageURLPostParams": "image_content={imageThumbnail},image_url={imageURL},sbisrc={imageSearchSource}"
+    },
     "pref_mappings": [
       { "pref": "default_search_provider_data.template_url_data" }
     ]
diff --git a/components/autofill/core/browser/credit_card_save_manager_unittest.cc b/components/autofill/core/browser/credit_card_save_manager_unittest.cc
index 307627944..45bcaa3 100644
--- a/components/autofill/core/browser/credit_card_save_manager_unittest.cc
+++ b/components/autofill/core/browser/credit_card_save_manager_unittest.cc
@@ -557,7 +557,8 @@
   DISALLOW_COPY_AND_ASSIGN(TestCreditCardSaveManager);
 };
 
-class CreditCardSaveManagerTest : public testing::Test {
+// Fails on all platforms. http://crbug.com/790996
+class DISABLED_CreditCardSaveManagerTest : public testing::Test {
  public:
   void SetUp() override {
     autofill_client_.SetPrefs(test::PrefServiceForTesting());
@@ -796,7 +797,7 @@
 #else
 #define MAYBE_ImportFormDataCreditCardHTTPS ImportFormDataCreditCardHTTPS
 #endif
-TEST_F(CreditCardSaveManagerTest, MAYBE_ImportFormDataCreditCardHTTPS) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, MAYBE_ImportFormDataCreditCardHTTPS) {
   TestSaveCreditCards(true);
 }
 
@@ -807,7 +808,7 @@
 #else
 #define MAYBE_ImportFormDataCreditCardHTTP ImportFormDataCreditCardHTTP
 #endif
-TEST_F(CreditCardSaveManagerTest, MAYBE_ImportFormDataCreditCardHTTP) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, MAYBE_ImportFormDataCreditCardHTTP) {
   TestSaveCreditCards(false);
 }
 
@@ -820,7 +821,7 @@
 #define MAYBE_CreditCardSavedWhenAutocompleteOff \
   CreditCardSavedWhenAutocompleteOff
 #endif
-TEST_F(CreditCardSaveManagerTest, MAYBE_CreditCardSavedWhenAutocompleteOff) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, MAYBE_CreditCardSavedWhenAutocompleteOff) {
   // Set up our form data.
   FormData form;
   CreateTestCreditCardFormData(&form, false, false);
@@ -841,7 +842,7 @@
 
 // Tests that credit card data are not saved when CC number does not pass the
 // Luhn test.
-TEST_F(CreditCardSaveManagerTest, InvalidCreditCardNumberIsNotSaved) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, InvalidCreditCardNumberIsNotSaved) {
   // Set up our form data.
   FormData form;
   CreateTestCreditCardFormData(&form, true, false);
@@ -858,7 +859,7 @@
   FormSubmitted(form);
 }
 
-TEST_F(CreditCardSaveManagerTest, CreditCardDisabledDoesNotSave) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, CreditCardDisabledDoesNotSave) {
   personal_data_.ClearAutofillProfiles();
   autofill_manager_->set_credit_card_enabled(false);
 
@@ -893,7 +894,7 @@
   histogram_tester.ExpectTotalCount("Autofill.CardUploadDecisionMetric", 0);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard) {
   personal_data_.ClearCreditCards();
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
@@ -944,7 +945,7 @@
       "Autofill.DaysSincePreviousUseAtSubmission.Profile", 0);
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_RequestCVCEnabled_DoesNotTrigger) {
   EnableAutofillUpstreamRequestCvcIfMissingExperiment();
 
@@ -980,7 +981,7 @@
   EXPECT_TRUE(credit_card_save_manager_->GetActiveExperiments().empty());
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCardAndSaveCopy) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCardAndSaveCopy) {
   personal_data_.ClearCreditCards();
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
@@ -1031,7 +1032,7 @@
 #endif
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_FeatureNotEnabled) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_FeatureNotEnabled) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(false);
 
@@ -1066,7 +1067,7 @@
   histogram_tester.ExpectTotalCount("Autofill.CardUploadDecisionMetric", 0);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CvcUnavailable) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_CvcUnavailable) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -1107,7 +1108,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::CVC_VALUE_NOT_FOUND);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CvcInvalidLength) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_CvcInvalidLength) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -1145,7 +1146,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::INVALID_CVC_VALUE);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_MultipleCvcFields) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_MultipleCvcFields) {
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
   // Remove the profiles that were created in the TestPersonalDataManager
@@ -1207,7 +1208,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoCvcFieldOnForm) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_NoCvcFieldOnForm) {
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
   // Remove the profiles that were created in the TestPersonalDataManager
@@ -1263,7 +1264,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::CVC_FIELD_NOT_FOUND);
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_NoCvcFieldOnForm_InvalidCvcInNonCvcField) {
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -1323,7 +1324,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::CVC_FIELD_NOT_FOUND);
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_NoCvcFieldOnForm_CvcInNonCvcField) {
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -1385,7 +1386,7 @@
       AutofillMetrics::FOUND_POSSIBLE_CVC_VALUE_IN_NON_CVC_FIELD);
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_NoCvcFieldOnForm_CvcInAddressField) {
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -1453,7 +1454,7 @@
 #define MAYBE_UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc \
   UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc
 #endif
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        MAYBE_UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc) {
   EnableAutofillUpstreamRequestCvcIfMissingExperiment();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
@@ -1518,7 +1519,7 @@
       1 /* expected_num_matching_entries */);
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_NoCvcFieldOnFormExperimentOff) {
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -1578,7 +1579,7 @@
 // kAutofillUpstreamShowNewUi and kAutofillUpstreamShowGoogleLogo flags are
 // currently not available on Android.
 #if !defined(OS_ANDROID)
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_AddNewUiFlagStateToRequestIfExperimentOn) {
   EnableAutofillUpstreamShowNewUiExperiment();
   personal_data_.ClearAutofillProfiles();
@@ -1612,7 +1613,7 @@
               UnorderedElementsAre(kAutofillUpstreamShowNewUi.name));
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_DoNotAddNewUiFlagStateToRequestIfExperimentOff) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
@@ -1644,7 +1645,7 @@
   EXPECT_TRUE(credit_card_save_manager_->GetActiveExperiments().empty());
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_AddShowGoogleLogoFlagStateToRequestIfExperimentOn) {
   EnableAutofillUpstreamShowGoogleLogoExperiment();
   personal_data_.ClearAutofillProfiles();
@@ -1679,7 +1680,7 @@
               UnorderedElementsAre(kAutofillUpstreamShowGoogleLogo.name));
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_DoNotAddShowGoogleLogoFlagStateToRequestIfExpOff) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
@@ -1713,7 +1714,7 @@
 }
 #endif
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoProfileAvailable) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_NoProfileAvailable) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -1746,7 +1747,7 @@
       AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ADDRESS_PROFILE);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoRecentlyUsedProfile) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_NoRecentlyUsedProfile) {
   // Create the test clock and set the time to a specific value.
   TestAutofillClock test_clock;
   test_clock.SetNow(kArbitraryTime);
@@ -1796,7 +1797,7 @@
       "Autofill.HasModifiedProfile.CreditCardFormSubmission", false, 1);
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_CvcUnavailableAndNoProfileAvailable) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
@@ -1837,7 +1838,7 @@
                1 /* expected_num_matching_entries */);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoNameAvailable) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_NoNameAvailable) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -1875,7 +1876,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_NOT_OFFERED_NO_NAME);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_ZipCodesConflict) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_ZipCodesConflict) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -1924,7 +1925,7 @@
       AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_ZipCodesDiscardWhitespace) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_ZipCodesDiscardWhitespace) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -1966,7 +1967,7 @@
       histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS);
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_ZipCodesDiscardWhitespace_ComparatorEnabled) {
   EnableAutofillUpstreamUseAutofillProfileComparator();
   personal_data_.ClearAutofillProfiles();
@@ -2012,7 +2013,7 @@
                                  AutofillMetrics::UPLOAD_OFFERED);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_ZipCodesHavePrefixMatch) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_ZipCodesHavePrefixMatch) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -2058,7 +2059,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoZipCodeAvailable) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_NoZipCodeAvailable) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -2103,7 +2104,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ZIP_CODE);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CCFormHasMiddleInitial) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_CCFormHasMiddleInitial) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -2149,7 +2150,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_CCFormHasMiddleInitial_ComparatorEnabled) {
   EnableAutofillUpstreamUseAutofillProfileComparator();
   personal_data_.ClearAutofillProfiles();
@@ -2199,7 +2200,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoMiddleInitialInCCForm) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_NoMiddleInitialInCCForm) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -2241,7 +2242,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_NoMiddleInitialInCCForm_ComparatorEnabled) {
   EnableAutofillUpstreamUseAutofillProfileComparator();
   personal_data_.ClearAutofillProfiles();
@@ -2285,7 +2286,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CCFormHasMiddleName) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_CCFormHasMiddleName) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -2322,7 +2323,7 @@
       histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES);
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_CCFormHasMiddleName_ComparatorEnabled) {
   EnableAutofillUpstreamUseAutofillProfileComparator();
   personal_data_.ClearAutofillProfiles();
@@ -2364,7 +2365,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CCFormRemovesMiddleName) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_CCFormRemovesMiddleName) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -2403,7 +2404,7 @@
       AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES);
 }
 
-TEST_F(CreditCardSaveManagerTest,
+TEST_F(DISABLED_CreditCardSaveManagerTest,
        UploadCreditCard_CCFormRemovesMiddleName_ComparatorEnabled) {
   EnableAutofillUpstreamUseAutofillProfileComparator();
   personal_data_.ClearAutofillProfiles();
@@ -2445,7 +2446,7 @@
   ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NamesHaveToMatch) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_NamesHaveToMatch) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -2493,7 +2494,7 @@
       AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_IgnoreOldProfiles) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_IgnoreOldProfiles) {
   // Create the test clock and set the time to a specific value.
   TestAutofillClock test_clock;
   test_clock.SetNow(kArbitraryTime);
@@ -2541,7 +2542,7 @@
                                  AutofillMetrics::UPLOAD_OFFERED);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_LogPreviousUseDate) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_LogPreviousUseDate) {
   // Create the test clock and set the time to a specific value.
   TestAutofillClock test_clock;
   test_clock.SetNow(kArbitraryTime);
@@ -2589,7 +2590,7 @@
       /*expected_count=*/1);
 }
 
-TEST_F(CreditCardSaveManagerTest, UploadCreditCard_UploadDetailsFails) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, UploadCreditCard_UploadDetailsFails) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
 
@@ -2633,7 +2634,7 @@
       AutofillMetrics::UPLOAD_NOT_OFFERED_GET_UPLOAD_DETAILS_FAILED);
 }
 
-TEST_F(CreditCardSaveManagerTest, DuplicateMaskedCreditCard) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, DuplicateMaskedCreditCard) {
   EnableAutofillOfferLocalSaveIfServerCardManuallyEnteredExperiment();
 
   personal_data_.ClearAutofillProfiles();
@@ -2674,7 +2675,7 @@
   EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
 }
 
-TEST_F(CreditCardSaveManagerTest, DuplicateMaskedCreditCard_ExperimentOff) {
+TEST_F(DISABLED_CreditCardSaveManagerTest, DuplicateMaskedCreditCard_ExperimentOff) {
   personal_data_.ClearAutofillProfiles();
   credit_card_save_manager_->set_credit_card_upload_enabled(true);
   credit_card_save_manager_->SetAppLocale("en-US");
diff --git a/components/policy_strings.grdp b/components/policy_strings.grdp
index 2972820..aca9148 100644
--- a/components/policy_strings.grdp
+++ b/components/policy_strings.grdp
@@ -143,8 +143,8 @@
   <message name="IDS_POLICY_VALUE_FORMAT_ERROR" desc="The text displayed in the status column when a policy value doesn't match the expected format.">
     Value doesn't match format.
   </message>
-  <message name="IDS_POLICY_DEFAULT_SEARCH_DISABLED" desc="The text displayed in the status column when a policy value has been ignored because default search has been disabled.">
-    Ignored because default search is disabled by policy.
+  <message name="IDS_POLICY_DEFAULT_SEARCH_DISABLED" desc="The text displayed in the status column when a policy value has been ignored because default search has not been enabled.">
+    Ignored because default search is not enabled by policy.
   </message>
   <message name="IDS_POLICY_NOT_SPECIFIED_ERROR" desc="The text displayed in the status column when a policy value should have been specified but wasn't.">
     Must be specified.
diff --git a/components/proximity_auth/promotion_manager.cc b/components/proximity_auth/promotion_manager.cc
index 48b3269..db49a9a 100644
--- a/components/proximity_auth/promotion_manager.cc
+++ b/components/proximity_auth/promotion_manager.cc
@@ -40,14 +40,14 @@
     NotificationController* notification_controller,
     ProximityAuthPrefManager* pref_manager,
     std::unique_ptr<cryptauth::CryptAuthClientFactory> client_factory,
-    std::unique_ptr<base::Clock> clock,
+    base::Clock* clock,
     scoped_refptr<base::TaskRunner> task_runner)
     : check_eligibility_probability_(kCheckEligibilityProbability),
       local_device_data_provider_(provider),
       notification_controller_(notification_controller),
       pref_manager_(pref_manager),
       client_factory_(std::move(client_factory)),
-      clock_(std::move(clock)),
+      clock_(clock),
       task_runner_(task_runner),
       weak_ptr_factory_(this) {}
 
diff --git a/components/proximity_auth/promotion_manager.h b/components/proximity_auth/promotion_manager.h
index 93379c0..2bb5d05 100644
--- a/components/proximity_auth/promotion_manager.h
+++ b/components/proximity_auth/promotion_manager.h
@@ -36,7 +36,7 @@
       NotificationController* notification_controller,
       ProximityAuthPrefManager* pref_manager,
       std::unique_ptr<cryptauth::CryptAuthClientFactory> client_factory,
-      std::unique_ptr<base::Clock> clock,
+      base::Clock* clock,
       scoped_refptr<base::TaskRunner> task_runner);
   ~PromotionManager() override;
 
@@ -96,7 +96,7 @@
   std::unique_ptr<cryptauth::CryptAuthClient> client_;
 
   // Used to determine the time.
-  std::unique_ptr<base::Clock> clock_;
+  base::Clock* clock_;
 
   // Used to schedule delayed tasks.
   scoped_refptr<base::TaskRunner> task_runner_;
diff --git a/components/proximity_auth/promotion_manager_unittests.cc b/components/proximity_auth/promotion_manager_unittests.cc
index a1c33c9f..cd97b66 100644
--- a/components/proximity_auth/promotion_manager_unittests.cc
+++ b/components/proximity_auth/promotion_manager_unittests.cc
@@ -79,7 +79,6 @@
       : local_device_data_provider_(
             new cryptauth::MockLocalDeviceDataProvider()),
         notification_controller_(new StrictMock<MockNotificationController>()),
-        clock_(new base::SimpleTestClock()),
         expect_eligible_unlock_devices_request_(false),
         client_factory_(new cryptauth::MockCryptAuthClientFactory(
             cryptauth::MockCryptAuthClientFactory::MockType::
@@ -91,7 +90,7 @@
                                  notification_controller_.get(),
                                  pref_manager_.get(),
                                  base::WrapUnique(client_factory_),
-                                 base::WrapUnique(clock_),
+                                 &clock_,
                                  task_runner_)) {
     client_factory_->AddObserver(this);
     local_device_data_provider_->SetPublicKey(
@@ -140,7 +139,7 @@
     EXPECT_CALL(*pref_manager_, GetLastPromotionCheckTimestampMs())
         .WillOnce(Return(kPreviousCheckTimestampMs));
     const int64_t now = kPreviousCheckTimestampMs + kFreshnessPeriodMs + 1;
-    clock_->SetNow(base::Time::FromJavaTime(now));
+    clock_.SetNow(base::Time::FromJavaTime(now));
     EXPECT_CALL(*pref_manager_, SetLastPromotionCheckTimestampMs(now));
   }
 
@@ -148,7 +147,7 @@
   std::unique_ptr<cryptauth::MockLocalDeviceDataProvider>
       local_device_data_provider_;
   std::unique_ptr<MockNotificationController> notification_controller_;
-  base::SimpleTestClock* clock_;
+  base::SimpleTestClock clock_;
   bool expect_eligible_unlock_devices_request_;
   cryptauth::MockCryptAuthClientFactory* client_factory_;
   std::unique_ptr<MockProximityAuthPrefManager> pref_manager_;
@@ -205,7 +204,7 @@
   EXPECT_CALL(*pref_manager_, GetLastPromotionCheckTimestampMs())
       .WillOnce(Return(kPreviousCheckTimestampMs));
   const int64_t now = kPreviousCheckTimestampMs + 1;
-  clock_->SetNow(base::Time::FromJavaTime(now));
+  clock_.SetNow(base::Time::FromJavaTime(now));
   UnlockScreen();
 }
 
diff --git a/components/proximity_auth/proximity_auth_system.cc b/components/proximity_auth/proximity_auth_system.cc
index 9ef990b..0f1487f0 100644
--- a/components/proximity_auth/proximity_auth_system.cc
+++ b/components/proximity_auth/proximity_auth_system.cc
@@ -29,7 +29,7 @@
     ProximityAuthClient* proximity_auth_client)
     : screenlock_type_(screenlock_type),
       proximity_auth_client_(proximity_auth_client),
-      clock_(new base::DefaultClock()),
+      clock_(base::DefaultClock::GetInstance()),
       pref_manager_(proximity_auth_client->GetPrefManager()),
       unlock_manager_(new UnlockManagerImpl(screenlock_type,
                                             proximity_auth_client_,
@@ -42,11 +42,11 @@
     ScreenlockType screenlock_type,
     ProximityAuthClient* proximity_auth_client,
     std::unique_ptr<UnlockManager> unlock_manager,
-    std::unique_ptr<base::Clock> clock,
+    base::Clock* clock,
     ProximityAuthPrefManager* pref_manager)
     : screenlock_type_(screenlock_type),
       proximity_auth_client_(proximity_auth_client),
-      clock_(std::move(clock)),
+      clock_(clock),
       pref_manager_(pref_manager),
       unlock_manager_(std::move(unlock_manager)),
       suspended_(false),
diff --git a/components/proximity_auth/proximity_auth_system.h b/components/proximity_auth/proximity_auth_system.h
index f09531b..cb6f149 100644
--- a/components/proximity_auth/proximity_auth_system.h
+++ b/components/proximity_auth/proximity_auth_system.h
@@ -72,7 +72,7 @@
   ProximityAuthSystem(ScreenlockType screenlock_type,
                       ProximityAuthClient* proximity_auth_client,
                       std::unique_ptr<UnlockManager> unlock_manager,
-                      std::unique_ptr<base::Clock> clock,
+                      base::Clock* clock,
                       ProximityAuthPrefManager* pref_manager);
 
   // Creates the RemoteDeviceLifeCycle for |remote_device|.
@@ -114,7 +114,7 @@
   std::unique_ptr<RemoteDeviceLifeCycle> remote_device_life_cycle_;
 
   // Used to get the current timestamp.
-  std::unique_ptr<base::Clock> clock_;
+  base::Clock* clock_;
 
   // Fetches EasyUnlock preferences. Must outlive this instance.
   ProximityAuthPrefManager* pref_manager_;
diff --git a/components/proximity_auth/proximity_auth_system_unittest.cc b/components/proximity_auth/proximity_auth_system_unittest.cc
index d41edb9..6db8565b 100644
--- a/components/proximity_auth/proximity_auth_system_unittest.cc
+++ b/components/proximity_auth/proximity_auth_system_unittest.cc
@@ -91,12 +91,12 @@
   TestableProximityAuthSystem(ScreenlockType screenlock_type,
                               ProximityAuthClient* proximity_auth_client,
                               std::unique_ptr<UnlockManager> unlock_manager,
-                              std::unique_ptr<base::Clock> clock,
+                              base::Clock* clock,
                               ProximityAuthPrefManager* pref_manager)
       : ProximityAuthSystem(screenlock_type,
                             proximity_auth_client,
                             std::move(unlock_manager),
-                            std::move(clock),
+                            clock,
                             pref_manager),
         life_cycle_(nullptr) {}
   ~TestableProximityAuthSystem() override {}
@@ -153,17 +153,13 @@
         new NiceMock<MockUnlockManager>());
     unlock_manager_ = unlock_manager.get();
 
-    std::unique_ptr<base::SimpleTestClock> clock =
-        base::MakeUnique<base::SimpleTestClock>();
-    clock_ = clock.get();
-
-    clock_->SetNow(base::Time::FromJavaTime(kTimestampBeforeReauthMs));
+    clock_.SetNow(base::Time::FromJavaTime(kTimestampBeforeReauthMs));
     ON_CALL(*pref_manager_, GetLastPasswordEntryTimestampMs())
         .WillByDefault(Return(kLastPasswordEntryTimestampMs));
 
     proximity_auth_system_.reset(new TestableProximityAuthSystem(
-        type, &proximity_auth_client_, std::move(unlock_manager),
-        std::move(clock), pref_manager_.get()));
+        type, &proximity_auth_client_, std::move(unlock_manager), &clock_,
+        pref_manager_.get()));
   }
 
   void LockScreen() {
@@ -191,7 +187,7 @@
   NiceMock<MockProximityAuthClient> proximity_auth_client_;
   std::unique_ptr<TestableProximityAuthSystem> proximity_auth_system_;
   MockUnlockManager* unlock_manager_;
-  base::SimpleTestClock* clock_;
+  base::SimpleTestClock clock_;
   std::unique_ptr<MockProximityAuthPrefManager> pref_manager_;
 
   RemoteDeviceList user1_remote_devices_;
diff --git a/components/proximity_auth/proximity_monitor_impl.cc b/components/proximity_auth/proximity_monitor_impl.cc
index 5975dba4..c7803f3f 100644
--- a/components/proximity_auth/proximity_monitor_impl.cc
+++ b/components/proximity_auth/proximity_monitor_impl.cc
@@ -34,13 +34,11 @@
 
 ProximityMonitorImpl::ProximityMonitorImpl(
     cryptauth::Connection* connection,
-    std::unique_ptr<base::TickClock> clock,
     ProximityAuthPrefManager* pref_manager)
     : connection_(connection),
       remote_device_is_in_proximity_(false),
       is_active_(false),
       rssi_threshold_(kDefaultRssiThreshold),
-      clock_(std::move(clock)),
       pref_manager_(pref_manager),
       polling_weak_ptr_factory_(this),
       weak_ptr_factory_(this) {
diff --git a/components/proximity_auth/proximity_monitor_impl.h b/components/proximity_auth/proximity_monitor_impl.h
index e882dc9..35442895 100644
--- a/components/proximity_auth/proximity_monitor_impl.h
+++ b/components/proximity_auth/proximity_monitor_impl.h
@@ -16,10 +16,6 @@
 #include "components/proximity_auth/proximity_monitor.h"
 #include "device/bluetooth/bluetooth_device.h"
 
-namespace base {
-class TickClock;
-}
-
 namespace device {
 class BluetoothAdapter;
 }
@@ -34,7 +30,6 @@
  public:
   // The |connection| is not owned, and must outlive |this| instance.
   ProximityMonitorImpl(cryptauth::Connection* connection,
-                       std::unique_ptr<base::TickClock> clock,
                        ProximityAuthPrefManager* pref_manager);
   ~ProximityMonitorImpl() override;
 
@@ -115,9 +110,6 @@
   // measurement.
   std::unique_ptr<double> rssi_rolling_average_;
 
-  // Used to access non-decreasing time measurements.
-  std::unique_ptr<base::TickClock> clock_;
-
   // Contains perferences that outlive the lifetime of this object and across
   // process restarts. Not owned and must outlive this instance.
   ProximityAuthPrefManager* pref_manager_;
diff --git a/components/proximity_auth/proximity_monitor_impl_unittest.cc b/components/proximity_auth/proximity_monitor_impl_unittest.cc
index 522719d8..96bcdad 100644
--- a/components/proximity_auth/proximity_monitor_impl_unittest.cc
+++ b/components/proximity_auth/proximity_monitor_impl_unittest.cc
@@ -84,8 +84,7 @@
 class ProximityAuthProximityMonitorImplTest : public testing::Test {
  public:
   ProximityAuthProximityMonitorImplTest()
-      : clock_(new base::SimpleTestTickClock()),
-        bluetooth_adapter_(CreateAndRegisterMockBluetoothAdapter()),
+      : bluetooth_adapter_(CreateAndRegisterMockBluetoothAdapter()),
         remote_bluetooth_device_(&*bluetooth_adapter_,
                                  0,
                                  kRemoteDeviceName,
@@ -102,7 +101,7 @@
                        0 /* last_update_time_millis */),
         connection_(remote_device_),
         pref_manager_(new NiceMock<MockProximityAuthPrefManager>()),
-        monitor_(&connection_, base::WrapUnique(clock_), pref_manager_.get()),
+        monitor_(&connection_, pref_manager_.get()),
         task_runner_(new base::TestSimpleTaskRunner()),
         thread_task_runner_handle_(task_runner_) {
     ON_CALL(*bluetooth_adapter_, GetDevice(kBluetoothAddress))
@@ -132,9 +131,6 @@
   // Mock for verifying interactions with the proximity monitor's observer.
   NiceMock<MockProximityMonitorObserver> observer_;
 
-  // Clock used for verifying time calculations. Owned by the monitor_.
-  base::SimpleTestTickClock* clock_;
-
   // Mocks used for verifying interactions with the Bluetooth subsystem.
   scoped_refptr<device::MockBluetoothAdapter> bluetooth_adapter_;
   NiceMock<device::MockBluetoothDevice> remote_bluetooth_device_;
@@ -335,10 +331,8 @@
   monitor_.Start();
   ProvideConnectionInfo({0, 0, 4});
 
-  clock_->Advance(base::TimeDelta::FromMilliseconds(101));
   ProvideConnectionInfo({-20, 3, 4});
 
-  clock_->Advance(base::TimeDelta::FromMilliseconds(203));
   base::HistogramTester histogram_tester;
   monitor_.RecordProximityMetricsOnAuthSuccess();
   histogram_tester.ExpectUniqueSample("EasyUnlock.AuthProximity.RollingRssi",
@@ -368,9 +362,7 @@
       true /* supports_mobile_hotspot */, 0 /* last_update_time_millis */);
   cryptauth::FakeConnection connection(unnamed_remote_device);
 
-  std::unique_ptr<base::TickClock> clock(new base::SimpleTestTickClock());
-  ProximityMonitorImpl monitor(&connection, std::move(clock),
-                               pref_manager_.get());
+  ProximityMonitorImpl monitor(&connection, pref_manager_.get());
   monitor.AddObserver(&observer_);
   monitor.Start();
   ProvideConnectionInfo({127, 127, 127});
diff --git a/components/proximity_auth/unlock_manager_impl.cc b/components/proximity_auth/unlock_manager_impl.cc
index 3be7379..e0f22376 100644
--- a/components/proximity_auth/unlock_manager_impl.cc
+++ b/components/proximity_auth/unlock_manager_impl.cc
@@ -333,8 +333,7 @@
 std::unique_ptr<ProximityMonitor> UnlockManagerImpl::CreateProximityMonitor(
     cryptauth::Connection* connection,
     ProximityAuthPrefManager* pref_manager) {
-  return base::MakeUnique<ProximityMonitorImpl>(
-      connection, base::WrapUnique(new base::DefaultTickClock()), pref_manager);
+  return base::MakeUnique<ProximityMonitorImpl>(connection, pref_manager);
 }
 
 void UnlockManagerImpl::SendSignInChallenge() {
diff --git a/components/search_engines/default_search_policy_handler.cc b/components/search_engines/default_search_policy_handler.cc
index cee0cb28..6ef34eb 100644
--- a/components/search_engines/default_search_policy_handler.cc
+++ b/components/search_engines/default_search_policy_handler.cc
@@ -101,7 +101,8 @@
   if (!CheckIndividualPolicies(policies, errors))
     return false;
 
-  if (DefaultSearchProviderIsDisabled(policies)) {
+  if (!DefaultSearchProviderPolicyIsSet(policies) ||
+      DefaultSearchProviderIsDisabled(policies)) {
     // Add an error for all specified default search policies except
     // DefaultSearchProviderEnabled.
 
@@ -127,6 +128,10 @@
 
 void DefaultSearchPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
                                                      PrefValueMap* prefs) {
+  // If the main switch is not set don't set anything.
+  if (!DefaultSearchProviderPolicyIsSet(policies))
+    return;
+
   if (DefaultSearchProviderIsDisabled(policies)) {
     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
     dict->SetBoolean(DefaultSearchManager::kDisabledByPolicy, true);
@@ -242,6 +247,11 @@
       !enabled;
 }
 
+bool DefaultSearchPolicyHandler::DefaultSearchProviderPolicyIsSet(
+    const PolicyMap& policies) {
+  return HasDefaultSearchPolicy(policies, key::kDefaultSearchProviderEnabled);
+}
+
 bool DefaultSearchPolicyHandler::DefaultSearchURLIsValid(
     const PolicyMap& policies,
     const base::Value** url_value,
diff --git a/components/search_engines/default_search_policy_handler.h b/components/search_engines/default_search_policy_handler.h
index 9eea0cd..7d12000b 100644
--- a/components/search_engines/default_search_policy_handler.h
+++ b/components/search_engines/default_search_policy_handler.h
@@ -38,6 +38,9 @@
   // Returns whether any default search policies are specified in |policies|.
   bool AnyDefaultSearchPoliciesSpecified(const PolicyMap& policies);
 
+  // Returns whether the default search provider policy has a value.
+  bool DefaultSearchProviderPolicyIsSet(const PolicyMap& policies);
+
   // Returns whether the default search provider is disabled.
   bool DefaultSearchProviderIsDisabled(const PolicyMap& policies);
 
diff --git a/components/search_engines/default_search_policy_handler_unittest.cc b/components/search_engines/default_search_policy_handler_unittest.cc
index cf39250..f8ccdf7b 100644
--- a/components/search_engines/default_search_policy_handler_unittest.cc
+++ b/components/search_engines/default_search_policy_handler_unittest.cc
@@ -245,13 +245,20 @@
 
 // Checks that disabling default search is properly reflected the dictionary
 // pref.
-TEST_F(DefaultSearchPolicyHandlerTest, Disabled) {
+TEST_F(DefaultSearchPolicyHandlerTest, DisabledByPolicy) {
   PolicyMap policy;
   policy.Set(key::kDefaultSearchProviderEnabled, POLICY_LEVEL_MANDATORY,
              POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD,
              base::WrapUnique(new base::Value(false)), nullptr);
+  policy.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY,
+             POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD,
+             base::WrapUnique(new base::Value("http://a/?{searchTerms}")),
+             nullptr);
   UpdateProviderPolicy(policy);
   const base::Value* temp = nullptr;
+  // Ignore any other search provider related policy in this case.
+  EXPECT_FALSE(store_->GetValue(DefaultSearchManager::kURL, &temp));
+
   const base::DictionaryValue* dictionary;
   EXPECT_TRUE(store_->GetValue(
       DefaultSearchManager::kDefaultSearchProviderDataPrefName, &temp));
@@ -262,6 +269,21 @@
   EXPECT_TRUE(disabled);
 }
 
+// Check that when the default search enabled policy is not set, all other
+// default search-related policies are ignored.
+TEST_F(DefaultSearchPolicyHandlerTest, DisabledByPolicyNotSet) {
+  PolicyMap policy;
+  policy.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY,
+             POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD,
+             base::WrapUnique(new base::Value("http://a/?{searchTerms}")),
+             nullptr);
+  UpdateProviderPolicy(policy);
+  const base::Value* temp = nullptr;
+  EXPECT_FALSE(store_->GetValue(
+      DefaultSearchManager::kDefaultSearchProviderDataPrefName, &temp));
+  EXPECT_FALSE(store_->GetValue(DefaultSearchManager::kURL, &temp));
+}
+
 // Checks that if the policy for default search is valid, i.e. there's a
 // search URL, that all the elements have been given proper defaults.
 TEST_F(DefaultSearchPolicyHandlerTest, MinimallyDefined) {
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index 7fc625b..4acf153 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -1760,6 +1760,8 @@
       "renderer_host/p2p/socket_host_throttler.h",
       "renderer_host/p2p/socket_host_udp.cc",
       "renderer_host/p2p/socket_host_udp.h",
+      "webrtc/webrtc_event_log_manager.cc",
+      "webrtc/webrtc_event_log_manager.h",
       "webrtc/webrtc_eventlog_host.cc",
       "webrtc/webrtc_eventlog_host.h",
       "webrtc/webrtc_internals.cc",
diff --git a/content/browser/renderer_host/media/peer_connection_tracker_host.cc b/content/browser/renderer_host/media/peer_connection_tracker_host.cc
index 3a332afa..c845704 100644
--- a/content/browser/renderer_host/media/peer_connection_tracker_host.cc
+++ b/content/browser/renderer_host/media/peer_connection_tracker_host.cc
@@ -1,10 +1,12 @@
 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
+
 #include "content/browser/renderer_host/media/peer_connection_tracker_host.h"
 
 #include "base/power_monitor/power_monitor.h"
 #include "content/browser/renderer_host/render_process_host_impl.h"
+#include "content/browser/webrtc/webrtc_event_log_manager.h"
 #include "content/browser/webrtc/webrtc_eventlog_host.h"
 #include "content/browser/webrtc/webrtc_internals.h"
 #include "content/common/media/peer_connection_tracker_messages.h"
@@ -32,6 +34,8 @@
                         OnUpdatePeerConnection)
     IPC_MESSAGE_HANDLER(PeerConnectionTrackerHost_AddStats, OnAddStats)
     IPC_MESSAGE_HANDLER(PeerConnectionTrackerHost_GetUserMedia, OnGetUserMedia)
+    IPC_MESSAGE_HANDLER(PeerConnectionTrackerHost_WebRtcEventLogWrite,
+                        OnWebRtcEventLogWrite)
     IPC_MESSAGE_UNHANDLED(handled = false)
   IPC_END_MESSAGE_MAP()
   return handled;
@@ -69,6 +73,7 @@
 
 void PeerConnectionTrackerHost::OnAddPeerConnection(
     const PeerConnectionInfo& info) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
   WebRTCInternals::GetInstance()->OnAddPeerConnection(
       render_process_id_,
       peer_pid(),
@@ -81,6 +86,7 @@
 }
 
 void PeerConnectionTrackerHost::OnRemovePeerConnection(int lid) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
   WebRTCInternals::GetInstance()->OnRemovePeerConnection(peer_pid(), lid);
   if (event_log_host_)
     event_log_host_->PeerConnectionRemoved(lid);
@@ -115,6 +121,14 @@
                                                  video_constraints);
 }
 
+void PeerConnectionTrackerHost::OnWebRtcEventLogWrite(
+    int lid,
+    const std::string& output) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  auto* manager = WebRtcEventLogManager::GetInstance();
+  manager->OnWebRtcEventLogWrite(render_process_id_, lid, output);
+}
+
 void PeerConnectionTrackerHost::OnSuspend() {
   BrowserThread::PostTask(
       BrowserThread::UI, FROM_HERE,
diff --git a/content/browser/renderer_host/media/peer_connection_tracker_host.h b/content/browser/renderer_host/media/peer_connection_tracker_host.h
index 949010a..3cbd659 100644
--- a/content/browser/renderer_host/media/peer_connection_tracker_host.h
+++ b/content/browser/renderer_host/media/peer_connection_tracker_host.h
@@ -57,6 +57,7 @@
                       bool video,
                       const std::string& audio_constraints,
                       const std::string& video_constraints);
+  void OnWebRtcEventLogWrite(int lid, const std::string& output);
   void SendOnSuspendOnUIThread();
 
   int render_process_id_;
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 069ed65..11fe311 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -3170,13 +3170,13 @@
                      weak_factory_.GetWeakPtr()));
 }
 
-bool RenderProcessHostImpl::StartWebRTCEventLog(
-    const base::FilePath& file_path) {
-  return webrtc_eventlog_host_.StartWebRTCEventLog(file_path);
+bool RenderProcessHostImpl::StartLocalWebRtcEventLogging(
+    const base::FilePath& base_path) {
+  return webrtc_eventlog_host_.StartLocalWebRtcEventLogging(base_path);
 }
 
-bool RenderProcessHostImpl::StopWebRTCEventLog() {
-  return webrtc_eventlog_host_.StopWebRTCEventLog();
+bool RenderProcessHostImpl::StopLocalWebRtcEventLogging() {
+  return webrtc_eventlog_host_.StopLocalWebRtcEventLogging();
 }
 
 void RenderProcessHostImpl::SetEchoCanceller3(
diff --git a/content/browser/renderer_host/render_process_host_impl.h b/content/browser/renderer_host/render_process_host_impl.h
index b5528d4..e676fd9 100644
--- a/content/browser/renderer_host/render_process_host_impl.h
+++ b/content/browser/renderer_host/render_process_host_impl.h
@@ -191,8 +191,8 @@
 #if BUILDFLAG(ENABLE_WEBRTC)
   void EnableAudioDebugRecordings(const base::FilePath& file) override;
   void DisableAudioDebugRecordings() override;
-  bool StartWebRTCEventLog(const base::FilePath& file_path) override;
-  bool StopWebRTCEventLog() override;
+  bool StartLocalWebRtcEventLogging(const base::FilePath& base_path) override;
+  bool StopLocalWebRtcEventLogging() override;
   void SetEchoCanceller3(
       bool enable,
       base::OnceCallback<void(bool, const std::string&)> callback) override;
diff --git a/content/browser/resources/media/dump_creator.js b/content/browser/resources/media/dump_creator.js
index c70fe20..aadbe3e 100644
--- a/content/browser/resources/media/dump_creator.js
+++ b/content/browser/resources/media/dump_creator.js
@@ -71,8 +71,8 @@
         ' multiple log files to be created. When enabling, a filename for the' +
         ' recording can be entered. The entered filename is used as a' +
         ' base, to which the following suffixes will be appended.</p>' +
-        ' <p>&lt;base filename&gt;.&lt;render process ID&gt;' +
-        '.&lt;recording ID&gt;</p>' +
+        ' <p>&lt;base filename&gt;_&lt;date&gt;_&lt;timestamp&gt;_&lt;render ' +
+        'process ID&gt;_&lt;recording ID&gt;</p>' +
         '<p class=audio-diagnostic-dumps-info>If a file with the same name' +
         ' already exists, it will be overwritten. No more than 5 logfiles ' +
         ' will be created, and each of them is limited to 60MB of storage. ' +
diff --git a/content/browser/webrtc/webrtc_event_log_manager.cc b/content/browser/webrtc/webrtc_event_log_manager.cc
new file mode 100644
index 0000000..ea0d5b9
--- /dev/null
+++ b/content/browser/webrtc/webrtc_event_log_manager.cc
@@ -0,0 +1,276 @@
+// Copyright (c) 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/webrtc/webrtc_event_log_manager.h"
+
+#include <inttypes.h>
+
+#include <iostream>
+#include <limits>
+
+#include "base/files/file_util.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
+#include "base/task_scheduler/post_task.h"
+#include "build/build_config.h"
+#include "content/public/browser/browser_thread.h"
+
+#if defined(OS_WIN)
+#define IntToStringType base::IntToString16
+#else
+#define IntToStringType base::IntToString
+#endif
+
+namespace content {
+
+namespace {
+inline void MaybeReplyWithBool(const base::Location& from_here,
+                               base::OnceCallback<void(bool)> reply,
+                               bool value) {
+  if (reply) {
+    BrowserThread::PostTask(BrowserThread::UI, from_here,
+                            base::BindOnce(std::move(reply), value));
+  }
+}
+
+struct MaybeReplyWithBoolOnExit final {
+  MaybeReplyWithBoolOnExit(base::OnceCallback<void(bool)> reply,
+                           bool default_value)
+      : reply(std::move(reply)), value(default_value) {}
+  ~MaybeReplyWithBoolOnExit() {
+    if (reply) {
+      MaybeReplyWithBool(FROM_HERE, std::move(reply), value);
+    }
+  }
+  base::OnceCallback<void(bool)> reply;
+  bool value;
+};
+
+struct MaybeReplyWithFilePathOnExit final {
+  explicit MaybeReplyWithFilePathOnExit(
+      base::OnceCallback<void(base::FilePath)> reply)
+      : reply(std::move(reply)) {}
+  ~MaybeReplyWithFilePathOnExit() {
+    if (reply) {
+      BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
+                              base::BindOnce(std::move(reply), file_path));
+    }
+  }
+  base::OnceCallback<void(base::FilePath)> reply;
+  base::FilePath file_path;  // Empty path is the default value.
+};
+}  // namespace
+
+base::LazyInstance<WebRtcEventLogManager>::Leaky g_webrtc_event_log_manager =
+    LAZY_INSTANCE_INITIALIZER;
+
+WebRtcEventLogManager* WebRtcEventLogManager::GetInstance() {
+  return g_webrtc_event_log_manager.Pointer();
+}
+
+WebRtcEventLogManager::WebRtcEventLogManager()
+    : clock_for_testing_(nullptr),
+      file_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
+          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+           base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+}
+
+WebRtcEventLogManager::~WebRtcEventLogManager() {
+  // This should never actually run, except in unit tests.
+}
+
+void WebRtcEventLogManager::LocalWebRtcEventLogStart(
+    int render_process_id,
+    int lid,
+    const base::FilePath& base_path,
+    size_t max_file_size_bytes,
+    base::OnceCallback<void(base::FilePath)> reply) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  file_task_runner_->PostTask(
+      FROM_HERE,
+      base::BindOnce(&WebRtcEventLogManager::StartLocalLogFile,
+                     base::Unretained(this), render_process_id, lid, base_path,
+                     max_file_size_bytes, std::move(reply)));
+}
+
+void WebRtcEventLogManager::LocalWebRtcEventLogStop(
+    int render_process_id,
+    int lid,
+    base::OnceCallback<void(bool)> reply) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  file_task_runner_->PostTask(
+      FROM_HERE, base::BindOnce(&WebRtcEventLogManager::StopLocalLogFile,
+                                base::Unretained(this), render_process_id, lid,
+                                std::move(reply)));
+}
+
+void WebRtcEventLogManager::OnWebRtcEventLogWrite(
+    int render_process_id,
+    int lid,
+    const std::string& output,
+    base::OnceCallback<void(bool)> reply) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  file_task_runner_->PostTask(
+      FROM_HERE, base::BindOnce(&WebRtcEventLogManager::WriteToLocalLogFile,
+                                base::Unretained(this), render_process_id, lid,
+                                output, std::move(reply)));
+  // TODO(eladalon): Make sure that peer-connections that have neither
+  // a remote-bound log nor a local-log-file associated, do not trigger
+  // this callback, for efficiency's sake. (Files sometimes fail to be opened,
+  // or reach their maximum size.) https://crbug.com/775415
+}
+
+void WebRtcEventLogManager::InjectClockForTesting(base::Clock* clock) {
+  clock_for_testing_ = clock;
+}
+
+base::FilePath WebRtcEventLogManager::GetLocalFilePath(
+    const base::FilePath& base_path,
+    int render_process_id,
+    int lid) {
+  base::Time::Exploded now;
+  if (clock_for_testing_) {
+    clock_for_testing_->Now().LocalExplode(&now);
+  } else {
+    base::Time::Now().LocalExplode(&now);
+  }
+
+  // [user_defined]_[date]_[time]_[pid]_[lid].log
+  char stamp[100];
+  int written =
+      base::snprintf(stamp, arraysize(stamp), "%04d%02d%02d_%02d%02d_%d_%d",
+                     now.year, now.month, now.day_of_month, now.hour,
+                     now.minute, render_process_id, lid);
+  CHECK(0 < written);
+  CHECK(static_cast<size_t>(written) < arraysize(stamp));
+
+  return base_path.InsertBeforeExtension(FILE_PATH_LITERAL("_"))
+      .InsertBeforeExtensionASCII(base::StringPiece(stamp))
+      .AddExtension(FILE_PATH_LITERAL("log"));
+}
+
+void WebRtcEventLogManager::StartLocalLogFile(
+    int render_process_id,
+    int lid,
+    const base::FilePath& base_path,
+    size_t max_file_size_bytes,
+    base::OnceCallback<void(base::FilePath)> reply) {
+  DCHECK(file_task_runner_->RunsTasksInCurrentSequence());
+
+  // This object's destructor will ensure a reply (if |reply| is non-empty),
+  // regardless of which path is taken out of the function.
+  MaybeReplyWithFilePathOnExit on_exit(std::move(reply));
+
+  // Add some information to the name given by the caller.
+  base::FilePath file_path =
+      GetLocalFilePath(base_path, render_process_id, lid);
+  CHECK(!file_path.empty()) << "Couldn't set path for local WebRTC log file.";
+
+  // In the unlikely case that this filename is already taken, find a unique
+  // number to append to the filename, if possible.
+  int unique_number =
+      base::GetUniquePathNumber(file_path, base::FilePath::StringType());
+  if (unique_number < 0) {
+    return;  // No available file path was found.
+  } else if (unique_number != 0) {
+    // The filename is taken, but a unique number was found.
+    // TODO(eladalon): Fix the way the unique number is used.
+    // https://crbug.com/785333
+    file_path = file_path.InsertBeforeExtension(FILE_PATH_LITERAL(" (") +
+                                                IntToStringType(unique_number) +
+                                                FILE_PATH_LITERAL(")"));
+  }
+
+  // Attempt to create the file.
+  constexpr int file_flags = base::File::FLAG_CREATE | base::File::FLAG_WRITE |
+                             base::File::FLAG_EXCLUSIVE_WRITE;
+  base::File file(file_path, file_flags);
+  if (!file.IsValid() || !file.created()) {
+    LOG(WARNING) << "Couldn't create and/or open local WebRTC event log file.";
+    return;
+  }
+
+  // If the file was successfully created, it's now ready to be written to.
+  DCHECK(local_logs_.find({render_process_id, lid}) == local_logs_.end());
+  local_logs_.emplace(PeerConnectionKey{render_process_id, lid},
+                      LogFile(std::move(file), max_file_size_bytes));
+
+  on_exit.file_path = file_path;  // Report success (if reply nonempty).
+}
+
+void WebRtcEventLogManager::StopLocalLogFile(
+    int render_process_id,
+    int lid,
+    base::OnceCallback<void(bool)> reply) {
+  DCHECK(file_task_runner_->RunsTasksInCurrentSequence());
+  auto it = local_logs_.find(PeerConnectionKey{render_process_id, lid});
+  if (it != local_logs_.end()) {
+    CloseLocalLogFile(it);
+    MaybeReplyWithBool(FROM_HERE, std::move(reply), true);
+  } else {
+    MaybeReplyWithBool(FROM_HERE, std::move(reply), false);
+  }
+}
+
+void WebRtcEventLogManager::WriteToLocalLogFile(
+    int render_process_id,
+    int lid,
+    const std::string& output,
+    base::OnceCallback<void(bool)> reply) {
+  DCHECK(file_task_runner_->RunsTasksInCurrentSequence());
+  DCHECK_LE(output.length(),
+            static_cast<size_t>(std::numeric_limits<int>::max()));
+
+  // This object's destructor will ensure a reply (if |reply| is non-empty),
+  // regardless of which path is taken out of the function.
+  MaybeReplyWithBoolOnExit on_exit(std::move(reply), false);
+
+  auto it = local_logs_.find(PeerConnectionKey{render_process_id, lid});
+  if (it == local_logs_.end()) {
+    return;
+  }
+
+  // Observe the file size limit, if any. Note that base::File's interface does
+  // not allow writing more than numeric_limits<int>::max() bytes at a time.
+  int output_len = static_cast<int>(output.length());  // DCHECKed above.
+  LogFile& log_file = it->second;
+  if (log_file.max_file_size_bytes != kUnlimitedFileSize) {
+    DCHECK_LT(log_file.file_size_bytes, log_file.max_file_size_bytes);
+    if (log_file.file_size_bytes + output.length() < log_file.file_size_bytes ||
+        log_file.file_size_bytes + output.length() >
+            log_file.max_file_size_bytes) {
+      output_len = log_file.max_file_size_bytes - log_file.file_size_bytes;
+    }
+  }
+
+  int written = log_file.file.WriteAtCurrentPos(output.c_str(), output_len);
+  if (written < 0 || written != output_len) {  // Error
+    LOG(WARNING) << "WebRTC event log output couldn't be written to local "
+                    "file in its entirety.";
+    CloseLocalLogFile(it);
+    return;
+  }
+
+  // Truncated output due to exceeding the maximum is reported as an error - the
+  // caller is interested to know that not all of its output was written,
+  // regardless of the reason.
+  on_exit.value = (static_cast<size_t>(written) == output.length());
+
+  log_file.file_size_bytes += static_cast<size_t>(written);
+  if (log_file.max_file_size_bytes != kUnlimitedFileSize) {
+    DCHECK_LE(log_file.file_size_bytes, log_file.max_file_size_bytes);
+    if (log_file.file_size_bytes >= log_file.max_file_size_bytes) {
+      CloseLocalLogFile(it);
+    }
+  }
+}
+
+void WebRtcEventLogManager::CloseLocalLogFile(LocalLogFilesMap::iterator it) {
+  DCHECK(file_task_runner_->RunsTasksInCurrentSequence());
+  it->second.file.Flush();
+  local_logs_.erase(it);  // file.Close() called by destructor.
+}
+
+}  // namespace content
diff --git a/content/browser/webrtc/webrtc_event_log_manager.h b/content/browser/webrtc/webrtc_event_log_manager.h
new file mode 100644
index 0000000..108e1c7
--- /dev/null
+++ b/content/browser/webrtc/webrtc_event_log_manager.h
@@ -0,0 +1,151 @@
+// Copyright (c) 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_WEBRTC_WEBRTC_RTC_EVENT_LOG_MANAGER_H_
+#define CONTENT_BROWSER_WEBRTC_WEBRTC_RTC_EVENT_LOG_MANAGER_H_
+
+#include <map>
+#include <string>
+
+#include "base/callback.h"
+#include "base/files/file.h"
+#include "base/files/file_path.h"
+#include "base/lazy_instance.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/sequenced_task_runner.h"
+#include "base/time/clock.h"
+#include "content/common/content_export.h"
+
+class WebrtcEventLogApiTest;
+
+namespace content {
+
+// This is a singleton class running in the browser UI thread.
+// It is in charge of writing RTC event logs to temporary files, then uploading
+// those files to remote servers, as well as of writing the logs to files which
+// were manually indicated by the user from the WebRTCIntenals. (A log may
+// simulatenously be written to both, either, or none.)
+// TODO(eladalon): This currently only supports the old use-case - locally
+// stored log files. An upcoming CL will add remote-support.
+// https://crbug.com/775415
+class CONTENT_EXPORT WebRtcEventLogManager {
+ public:
+  static constexpr size_t kUnlimitedFileSize = 0;
+
+  static WebRtcEventLogManager* GetInstance();
+
+  // Currently, we only support manual logs initiated by the user
+  // through WebRTCInternals, which are stored locally.
+  // TODO(eladalon): Allow starting/stopping an RTC event log
+  // that will be uploaded to the server. https://crbug.com/775415
+
+  // Starts logging the WebRTC event logs associated with the given renderer's
+  // process ID and the PeerConnection local ID, to a file whose path will
+  // be derived from |base_path|, and potentially subject to a maximum size.
+  // If the |reply| callback is non-empty, it will be posted back to the UI
+  // thread with either the FilePath used for the log (if the operation was
+  // successful), or with an empty FilePath (if the operation was unsuccessful).
+  void LocalWebRtcEventLogStart(int render_process_id,
+                                int lid,  // Renderer-local PeerConnection ID.
+                                const base::FilePath& base_path,
+                                size_t max_file_size_bytes,
+                                base::OnceCallback<void(base::FilePath)> reply =
+                                    base::OnceCallback<void(base::FilePath)>());
+
+  // Stops an ongoing local WebRTC event log.
+  // If |reply| is non-empty, it will be posted back to the UI thread, along
+  // with true if there actually was a log to stop, or false otherwise.
+  void LocalWebRtcEventLogStop(
+      int render_process_id,
+      int lid,
+      base::OnceCallback<void(bool)> reply = base::OnceCallback<void(bool)>());
+
+  // Called when a new log fragment is sent from the renderer. This will
+  // potentially be written to a local WebRTC event log, a log destined for
+  // upload, or both.
+  void OnWebRtcEventLogWrite(
+      int render_process_id,
+      int lid,  // Renderer-local PeerConnection ID.
+      const std::string& output,
+      base::OnceCallback<void(bool)> reply = base::OnceCallback<void(bool)>());
+
+ protected:
+  friend class ::WebrtcEventLogApiTest;
+  friend class WebRtcEventLogManagerTest;  // unit tests inject a frozen clock.
+  // TODO(eladalon): Remove WebRtcEventLogHostTest and this friend declaration.
+  // https://crbug.com/775415
+  friend class WebRtcEventlogHostTest;
+  friend struct base::LazyInstanceTraitsBase<WebRtcEventLogManager>;
+
+  WebRtcEventLogManager();
+  ~WebRtcEventLogManager();
+
+  void InjectClockForTesting(base::Clock* clock);
+
+  base::FilePath GetLocalFilePath(const base::FilePath& base_path,
+                                  int render_process_id,
+                                  int lid);
+
+  // For a given Chrome session, this is a unique key for PeerConnections.
+  // It's not, however, unique between sessions (after Chrome is restarted).
+  struct PeerConnectionKey {
+    bool operator<(const PeerConnectionKey& other) const {
+      if (render_process_id != other.render_process_id) {
+        return render_process_id < other.render_process_id;
+      }
+      return lid < other.lid;
+    }
+    int render_process_id;
+    int lid;  // Renderer-local PeerConnection ID.
+  };
+
+  struct LogFile {
+    LogFile(base::File file, size_t max_file_size_bytes)
+        : file(std::move(file)),
+          max_file_size_bytes(max_file_size_bytes),
+          file_size_bytes(0) {}
+    base::File file;
+    const size_t max_file_size_bytes;
+    size_t file_size_bytes;
+  };
+
+  typedef std::map<PeerConnectionKey, LogFile> LocalLogFilesMap;
+
+  // Handling of local log files (local-user-initiated; as opposed to logs
+  // requested by JS and bound to be uploaded to a remote server).
+  void StartLocalLogFile(int render_process_id,
+                         int lid,  // Renderer-local PeerConnection ID.
+                         const base::FilePath& base_path,
+                         size_t max_file_size_bytes,
+                         base::OnceCallback<void(base::FilePath)> reply);
+  void StopLocalLogFile(int render_process_id,
+                        int lid,
+                        base::OnceCallback<void(bool)> reply);
+  void WriteToLocalLogFile(int render_process_id,
+                           int lid,
+                           const std::string& output,
+                           base::OnceCallback<void(bool)> reply);
+  void CloseLocalLogFile(LocalLogFilesMap::iterator it);  // Invalidates |it|.
+
+  // For unit tests only, and specifically for unit tests that verify the
+  // filename format (derived from the current time as well as the renderer PID
+  // and PeerConnection local ID), we want to make sure that the time and date
+  // cannot change between the time the clock is read by the unit under test
+  // (namely WebRtcEventLogManager) and the time it's read by the test.
+  base::Clock* clock_for_testing_;
+
+  // Local log files, stored at the behest of the user (via WebRTCInternals).
+  // TODO(eladalon): Add an additional container with logs that will be uploaded
+  // to the server. https://crbug.com/775415
+  LocalLogFilesMap local_logs_;
+
+  scoped_refptr<base::SequencedTaskRunner> file_task_runner_;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(WebRtcEventLogManager);
+};
+
+}  // namespace content
+
+#endif  // CONTENT_BROWSER_WEBRTC_WEBRTC_RTC_EVENT_LOG_MANAGER_H_
diff --git a/content/browser/webrtc/webrtc_event_log_manager_unittest.cc b/content/browser/webrtc/webrtc_event_log_manager_unittest.cc
new file mode 100644
index 0000000..11a107b
--- /dev/null
+++ b/content/browser/webrtc/webrtc_event_log_manager_unittest.cc
@@ -0,0 +1,569 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/webrtc/webrtc_event_log_manager.h"
+
+#include <algorithm>
+#include <memory>
+#include <numeric>
+#include <string>
+#include <vector>
+
+#include "base/bind.h"
+#include "base/files/file_path.h"
+#include "base/files/file_util.h"
+#include "base/memory/ptr_util.h"
+#include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
+#include "base/test/gtest_util.h"
+#include "base/test/simple_test_clock.h"
+#include "base/time/time.h"
+#include "build/build_config.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+#if defined(OS_WIN)
+#define IntToStringType base::IntToString16
+#else
+#define IntToStringType base::IntToString
+#endif
+
+namespace content {
+
+namespace {
+struct PeerConnectionKey {
+  int render_process_id;
+  int lid;  // Renderer-local PeerConnection ID.
+};
+
+enum class ExpectedResult : bool { kFailure = false, kSuccess = true };
+}  // namespace
+
+class WebRtcEventLogManagerTest : public ::testing::Test {
+ protected:
+  WebRtcEventLogManagerTest()
+      : run_loop_(base::MakeUnique<base::RunLoop>()),
+        manager_(new WebRtcEventLogManager) {
+    EXPECT_TRUE(
+        base::CreateNewTempDirectory(FILE_PATH_LITERAL(""), &base_dir_));
+    if (base_dir_.empty()) {
+      EXPECT_TRUE(false);
+      return;
+    }
+    base_path_ = base_dir_.Append(FILE_PATH_LITERAL("webrtc_event_log"));
+  }
+
+  ~WebRtcEventLogManagerTest() override {
+    DestroyUnitUnderTest();
+    if (!base_dir_.empty()) {
+      EXPECT_TRUE(base::DeleteFile(base_dir_, true));
+    }
+  }
+
+  void DestroyUnitUnderTest() {
+    if (manager_ != nullptr) {
+      delete manager_;  // Raw pointer; see definition for rationale.
+      manager_ = nullptr;
+    }
+  }
+
+  void WaitForReply() {
+    run_loop_->Run();
+    run_loop_.reset(new base::RunLoop);  // Allow re-blocking.
+  }
+
+  void ExpectBoolReply(bool expected_value, bool value) {
+    EXPECT_EQ(expected_value, value);
+    run_loop_->QuitWhenIdle();
+  }
+
+  base::OnceCallback<void(bool)> ExpectBoolReplyClosure(bool expected_value) {
+    return base::BindOnce(&WebRtcEventLogManagerTest::ExpectBoolReply,
+                          base::Unretained(this), expected_value);
+  }
+
+  // With partial binding, we'll get a closure that will write the reply
+  // into a predefined destination. (Diverging from the style-guide by putting
+  // an output parameter first is necessary for partial binding.)
+  void OnFilePathReply(base::FilePath* out_path, base::FilePath value) {
+    *out_path = value;
+    run_loop_->QuitWhenIdle();
+  }
+
+  base::OnceCallback<void(base::FilePath)> FilePathReplyClosure(
+      base::FilePath* file_path) {
+    return base::BindOnce(&WebRtcEventLogManagerTest::OnFilePathReply,
+                          base::Unretained(this), file_path);
+  }
+
+  base::FilePath LocalWebRtcEventLogStart(int render_process_id,
+                                          int lid,
+                                          const base::FilePath& base_path,
+                                          size_t max_file_size) {
+    base::FilePath file_path;
+    manager_->LocalWebRtcEventLogStart(render_process_id, lid, base_path,
+                                       max_file_size,
+                                       FilePathReplyClosure(&file_path));
+    WaitForReply();
+    return file_path;
+  }
+
+  void LocalWebRtcEventLogStop(int render_process_id,
+                               int lid,
+                               ExpectedResult expected_result) {
+    const bool expected_result_bool = static_cast<bool>(expected_result);
+    manager_->LocalWebRtcEventLogStop(
+        render_process_id, lid, ExpectBoolReplyClosure(expected_result_bool));
+    WaitForReply();
+  }
+
+  void OnWebRtcEventLogWrite(int render_process_id,
+                             int lid,
+                             const std::string& output,
+                             ExpectedResult expected_result) {
+    bool expected_result_bool = static_cast<bool>(expected_result);
+    manager_->OnWebRtcEventLogWrite(
+        render_process_id, lid, output,
+        ExpectBoolReplyClosure(expected_result_bool));
+    WaitForReply();
+  }
+
+  void FreezeClockAt(const base::Time::Exploded& frozen_time_exploded) {
+    base::Time frozen_time;
+    ASSERT_TRUE(
+        base::Time::FromLocalExploded(frozen_time_exploded, &frozen_time));
+    frozen_clock_.SetNow(frozen_time);
+    manager_->InjectClockForTesting(&frozen_clock_);
+  }
+
+  // Common default values.
+  static constexpr int kRenderProcessId = 23;
+  static constexpr int kLocalPeerConnectionId = 478;
+  static constexpr size_t kMaxFileSizeBytes = 50000;
+
+  // Testing utilities.
+  content::TestBrowserThreadBundle test_browser_thread_bundle_;
+  std::unique_ptr<base::RunLoop> run_loop_;  // New instance allows reblocking.
+  base::SimpleTestClock frozen_clock_;
+
+  // Unit under test. (Cannot be a unique_ptr because of its private ctor/dtor.)
+  WebRtcEventLogManager* manager_;
+
+  base::FilePath base_dir_;   // The directory where we'll save log files.
+  base::FilePath base_path_;  // base_dir_ +  log files' name prefix.
+};
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogCreateEmptyFile) {
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, kMaxFileSizeBytes);
+  ASSERT_FALSE(file_path.empty());
+
+  LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                          ExpectedResult::kSuccess);
+
+  std::string file_contents;
+  EXPECT_TRUE(base::ReadFileToString(file_path, &file_contents));
+  EXPECT_EQ(file_contents, "");
+}
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogCreateAndWriteToFile) {
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, kMaxFileSizeBytes);
+  ASSERT_FALSE(file_path.empty());
+
+  const std::string log = "To strive, to seek, to find, and not to yield.";
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, log,
+                        ExpectedResult::kSuccess);
+
+  LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                          ExpectedResult::kSuccess);
+
+  std::string file_contents;
+  EXPECT_TRUE(base::ReadFileToString(file_path, &file_contents));
+  EXPECT_EQ(file_contents, log);
+}
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogMultipleWritesToSameFile) {
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, kMaxFileSizeBytes);
+  ASSERT_FALSE(file_path.empty());
+
+  const std::string logs[] = {"Old age hath yet his honour and his toil;",
+                              "Death closes all: but something ere the end,",
+                              "Some work of noble note, may yet be done,",
+                              "Not unbecoming men that strove with Gods."};
+
+  for (const std::string& log : logs) {
+    OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, log,
+                          ExpectedResult::kSuccess);
+  }
+
+  LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                          ExpectedResult::kSuccess);
+
+  std::string file_contents;
+  EXPECT_TRUE(base::ReadFileToString(file_path, &file_contents));
+  EXPECT_EQ(file_contents,
+            std::accumulate(std::begin(logs), std::end(logs), std::string()));
+}
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogFileSizeLimitNotExceeded) {
+  const std::string log = "There lies the port; the vessel puffs her sail:";
+  const size_t file_size_limit = log.length() / 2;
+
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, file_size_limit);
+  ASSERT_FALSE(file_path.empty());
+
+  // A failure is reported, because not everything could be written.
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, log,
+                        ExpectedResult::kFailure);
+
+  // The file has already been closed when Write() failed, since no further
+  // Write() is expected to have any effect.
+  LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                          ExpectedResult::kFailure);
+
+  // Additional calls to Write() have no effect.
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, "ignored",
+                        ExpectedResult::kFailure);
+
+  std::string file_contents;
+  EXPECT_TRUE(base::ReadFileToString(file_path, &file_contents));
+  EXPECT_EQ(file_contents, log.substr(0, file_size_limit));
+}
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogSanityOverUnlimitedFileSizes) {
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_,
+      WebRtcEventLogManager::kUnlimitedFileSize);
+  ASSERT_FALSE(file_path.empty());
+
+  const std::string log1 = "Who let the dogs out?";
+  const std::string log2 = "Woof, woof, woof, woof, woof!";
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, log1,
+                        ExpectedResult::kSuccess);
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, log2,
+                        ExpectedResult::kSuccess);
+
+  LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                          ExpectedResult::kSuccess);
+
+  std::string file_contents;
+  EXPECT_TRUE(base::ReadFileToString(file_path, &file_contents));
+  EXPECT_EQ(file_contents, log1 + log2);
+}
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogNoWriteAfterLogStop) {
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, kMaxFileSizeBytes);
+  ASSERT_FALSE(file_path.empty());
+
+  const std::string log_before = "log_before_stop";
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, log_before,
+                        ExpectedResult::kSuccess);
+
+  LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                          ExpectedResult::kSuccess);
+
+  const std::string log_after = "log_after_stop";
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, log_after,
+                        ExpectedResult::kFailure);
+
+  std::string file_contents;
+  EXPECT_TRUE(base::ReadFileToString(file_path, &file_contents));
+  EXPECT_EQ(file_contents, log_before);
+}
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogOnlyWritesTheLogsAfterStart) {
+  // Calls to Write() before Start() are ignored.
+  const std::string log1 = "The lights begin to twinkle from the rocks:";
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, log1,
+                        ExpectedResult::kFailure);
+  ASSERT_TRUE(base::IsDirectoryEmpty(base_dir_));
+
+  // Calls after Start() have an effect. The calls to Write() from before
+  // Start() are not remembered.
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, kMaxFileSizeBytes);
+  ASSERT_FALSE(file_path.empty());
+
+  const std::string log2 = "The long day wanes: the slow moon climbs: the deep";
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, log2,
+                        ExpectedResult::kSuccess);
+  std::string file_contents;
+  EXPECT_TRUE(base::ReadFileToString(file_path, &file_contents));
+  EXPECT_EQ(file_contents, log2);
+}
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogStopBeforeStartHasNoEffect) {
+  // Calls to Stop() before Start() are ignored.
+  LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                          ExpectedResult::kFailure);
+  ASSERT_TRUE(base::IsDirectoryEmpty(base_dir_));
+
+  // The Stop() before does not leave any bad state behind. We can still
+  // Start() the log, Write() to it and Close() it.
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, kMaxFileSizeBytes);
+  ASSERT_FALSE(file_path.empty());
+
+  const std::string log = "To err is canine; to forgive, feline.";
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, log,
+                        ExpectedResult::kSuccess);
+  std::string file_contents;
+  EXPECT_TRUE(base::ReadFileToString(file_path, &file_contents));
+  EXPECT_EQ(file_contents, log);
+}
+
+// Note: This test also covers the scenario LocalLogExistingFilesNotOverwritten,
+// which is therefore not explicitly tested.
+TEST_F(WebRtcEventLogManagerTest, LocalLogRestartedLogCreatesNewFile) {
+  const std::vector<std::string> logs = {"<setup>", "<punchline>", "encore"};
+  std::vector<base::FilePath> file_paths;
+  for (size_t i = 0; i < logs.size(); i++) {
+    file_paths.push_back(
+        LocalWebRtcEventLogStart(kRenderProcessId, kLocalPeerConnectionId,
+                                 base_path_, kMaxFileSizeBytes));
+    ASSERT_FALSE(file_paths.back().empty());
+
+    OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, logs[i],
+                          ExpectedResult::kSuccess);
+
+    LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                            ExpectedResult::kSuccess);
+  }
+
+  for (size_t i = 0; i < logs.size(); i++) {
+    std::string file_contents;
+    EXPECT_TRUE(base::ReadFileToString(file_paths[i], &file_contents));
+    EXPECT_EQ(file_contents, logs[i]);
+  }
+}
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogMultipleActiveFiles) {
+  const std::vector<PeerConnectionKey> keys = {{1, 2}, {2, 1}, {3, 4},
+                                               {4, 3}, {5, 5}, {6, 7}};
+  std::vector<std::string> logs;
+  std::vector<base::FilePath> file_paths;
+
+  for (const auto& key : keys) {
+    file_paths.push_back(LocalWebRtcEventLogStart(
+        key.render_process_id, key.lid, base_path_, kMaxFileSizeBytes));
+    ASSERT_FALSE(file_paths.back().empty());
+  }
+
+  for (size_t i = 0; i < keys.size(); i++) {
+    logs.emplace_back(std::to_string(kRenderProcessId) +
+                      std::to_string(kLocalPeerConnectionId));
+    OnWebRtcEventLogWrite(keys[i].render_process_id, keys[i].lid, logs[i],
+                          ExpectedResult::kSuccess);
+  }
+
+  for (size_t i = 0; i < keys.size(); i++) {
+    LocalWebRtcEventLogStop(keys[i].render_process_id, keys[i].lid,
+                            ExpectedResult::kSuccess);
+  }
+
+  for (size_t i = 0; i < keys.size(); i++) {
+    std::string file_contents;
+    EXPECT_TRUE(base::ReadFileToString(file_paths[i], &file_contents));
+    EXPECT_EQ(file_contents, logs[i]);
+  }
+}
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogSanityDestructorWithActiveFile) {
+  // We don't actually test that the file was closed, because this behavior
+  // is not supported - WebRtcEventLogManager's destructor may never be called,
+  // except for in unit-tests.
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, kMaxFileSizeBytes);
+  ASSERT_FALSE(file_path.empty());
+  DestroyUnitUnderTest();  // Explicitly show destruction does not crash.
+}
+
+// TODO(eladalon): Re-enable after handling https://crbug.com/786374
+TEST_F(WebRtcEventLogManagerTest, DISABLED_LocalLogIllegalPath) {
+  const base::FilePath illegal_path(FILE_PATH_LITERAL(":!@#$%|`^&*\\/"));
+  const base::FilePath file_path =
+      LocalWebRtcEventLogStart(kRenderProcessId, kLocalPeerConnectionId,
+                               illegal_path, kMaxFileSizeBytes);
+  EXPECT_TRUE(file_path.empty());
+  EXPECT_TRUE(base::IsDirectoryEmpty(base_dir_));
+}
+
+#if defined(OS_POSIX)
+TEST_F(WebRtcEventLogManagerTest, LocalLogLegalPathWithoutPermissionsSanity) {
+  // Remove writing permissions from the entire directory.
+  int permissions;
+  ASSERT_TRUE(base::GetPosixFilePermissions(base_dir_, &permissions));
+  constexpr int write_permissions = base::FILE_PERMISSION_WRITE_BY_USER |
+                                    base::FILE_PERMISSION_WRITE_BY_GROUP |
+                                    base::FILE_PERMISSION_WRITE_BY_OTHERS;
+  permissions &= ~write_permissions;
+  ASSERT_TRUE(base::SetPosixFilePermissions(base_dir_, permissions));
+
+  // Start() has no effect (but is handled gracefully).
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, kMaxFileSizeBytes);
+  EXPECT_TRUE(file_path.empty());
+  EXPECT_TRUE(base::IsDirectoryEmpty(base_dir_));
+
+  // Write() has no effect (but is handled gracefully).
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId,
+                        "Why did the chicken cross the road?",
+                        ExpectedResult::kFailure);
+  EXPECT_TRUE(base::IsDirectoryEmpty(base_dir_));
+
+  // Stop() has no effect (but is handled gracefully).
+  LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                          ExpectedResult::kFailure);
+  EXPECT_TRUE(base::IsDirectoryEmpty(base_dir_));
+}
+#endif
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogEmptyStringHandledGracefully) {
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, kMaxFileSizeBytes);
+  ASSERT_FALSE(file_path.empty());
+
+  // By writing a log after the empty string, we show that no odd behavior is
+  // encountered, such as closing the file (an actual bug from WebRTC).
+  const std::vector<std::string> logs = {"<setup>", "", "encore"};
+  for (const auto& log : logs) {
+    OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, log,
+                          ExpectedResult::kSuccess);
+  }
+
+  LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                          ExpectedResult::kSuccess);
+
+  std::string file_contents;
+  EXPECT_TRUE(base::ReadFileToString(file_path, &file_contents));
+  EXPECT_EQ(file_contents,
+            std::accumulate(std::begin(logs), std::end(logs), std::string()));
+}
+
+// The logs would typically be binary. However, the other tests only cover ASCII
+// characters, for readability. This test shows that this is not a problem.
+TEST_F(WebRtcEventLogManagerTest, LocalLogAllPossibleCharacters) {
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, kMaxFileSizeBytes);
+  ASSERT_FALSE(file_path.empty());
+
+  std::string all_chars;
+  for (size_t i = 0; i < 256; i++) {
+    all_chars += static_cast<uint8_t>(i);
+  }
+
+  OnWebRtcEventLogWrite(kRenderProcessId, kLocalPeerConnectionId, all_chars,
+                        ExpectedResult::kSuccess);
+
+  LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                          ExpectedResult::kSuccess);
+
+  std::string file_contents;
+  EXPECT_TRUE(base::ReadFileToString(file_path, &file_contents));
+  EXPECT_EQ(file_contents, all_chars);
+}
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogFilenameMatchesExpectedFormat) {
+  using StringType = base::FilePath::StringType;
+
+  const base::Time::Exploded frozen_time_exploded{
+      2017,  // Four digit year "2007"
+      9,     // 1-based month (values 1 = January, etc.)
+      3,     // 0-based day of week (0 = Sunday, etc.)
+      6,     // 1-based day of month (1-31)
+      10,    // Hour within the current day (0-23)
+      43,    // Minute within the current hour (0-59)
+      29,    // Second within the current minute.
+      0      // Milliseconds within the current second (0-999)
+  };
+  ASSERT_TRUE(frozen_time_exploded.HasValidValues());
+  FreezeClockAt(frozen_time_exploded);
+
+  const StringType user_defined = FILE_PATH_LITERAL("user_defined");
+  const base::FilePath base_path = base_dir_.Append(user_defined);
+
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path, kMaxFileSizeBytes);
+
+  // [user_defined]_[date]_[time]_[pid]_[lid].log
+  const StringType date = FILE_PATH_LITERAL("20170906");
+  const StringType time = FILE_PATH_LITERAL("1043");
+  base::FilePath expected_path = base_path;
+  expected_path = base_path.InsertBeforeExtension(
+      FILE_PATH_LITERAL("_") + date + FILE_PATH_LITERAL("_") + time +
+      FILE_PATH_LITERAL("_") + IntToStringType(kRenderProcessId) +
+      FILE_PATH_LITERAL("_") + IntToStringType(kLocalPeerConnectionId));
+  expected_path = expected_path.AddExtension(FILE_PATH_LITERAL("log"));
+
+  EXPECT_EQ(file_path, expected_path);
+}
+
+TEST_F(WebRtcEventLogManagerTest,
+       LocalLogFilenameMatchesExpectedFormatRepeatedFilename) {
+  using StringType = base::FilePath::StringType;
+
+  const base::Time::Exploded frozen_time_exploded{
+      2017,  // Four digit year "2007"
+      9,     // 1-based month (values 1 = January, etc.)
+      3,     // 0-based day of week (0 = Sunday, etc.)
+      6,     // 1-based day of month (1-31)
+      10,    // Hour within the current day (0-23)
+      43,    // Minute within the current hour (0-59)
+      29,    // Second within the current minute.
+      0      // Milliseconds within the current second (0-999)
+  };
+  ASSERT_TRUE(frozen_time_exploded.HasValidValues());
+  FreezeClockAt(frozen_time_exploded);
+
+  const StringType user_defined_portion =
+      FILE_PATH_LITERAL("user_defined_portion");
+  const base::FilePath base_path = base_dir_.Append(user_defined_portion);
+
+  const base::FilePath file_path_1 = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path, kMaxFileSizeBytes);
+
+  // [user_defined]_[date]_[time]_[pid]_[lid].log
+  const StringType date = FILE_PATH_LITERAL("20170906");
+  const StringType time = FILE_PATH_LITERAL("1043");
+  base::FilePath expected_path_1 = base_path;
+  expected_path_1 = base_path.InsertBeforeExtension(
+      FILE_PATH_LITERAL("_") + date + FILE_PATH_LITERAL("_") + time +
+      FILE_PATH_LITERAL("_") + IntToStringType(kRenderProcessId) +
+      FILE_PATH_LITERAL("_") + IntToStringType(kLocalPeerConnectionId));
+  expected_path_1 = expected_path_1.AddExtension(FILE_PATH_LITERAL("log"));
+
+  ASSERT_EQ(file_path_1, expected_path_1);
+
+  LocalWebRtcEventLogStop(kRenderProcessId, kLocalPeerConnectionId,
+                          ExpectedResult::kSuccess);
+
+  const base::FilePath file_path_2 = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path, kMaxFileSizeBytes);
+
+  const base::FilePath expected_path_2 =
+      expected_path_1.InsertBeforeExtension(FILE_PATH_LITERAL(" (1)"));
+
+  // Focus of the test - starting the same log again produces a new file,
+  // with an expected new filename.
+  ASSERT_EQ(file_path_2, expected_path_2);
+}
+
+TEST_F(WebRtcEventLogManagerTest, LocalLogMayNotBeStartedTwice) {
+  const base::FilePath file_path = LocalWebRtcEventLogStart(
+      kRenderProcessId, kLocalPeerConnectionId, base_path_, kMaxFileSizeBytes);
+  ASSERT_FALSE(file_path.empty());
+  // Known issue - this always passes (whether LocalWebRtcEventLogStart crashes
+  // or not). http://crbug.com/787809
+  EXPECT_DEATH_IF_SUPPORTED(
+      LocalWebRtcEventLogStart(kRenderProcessId, kLocalPeerConnectionId,
+                               base_path_, kMaxFileSizeBytes),
+      "");
+}
+
+}  // namespace content
diff --git a/content/browser/webrtc/webrtc_eventlog_host.cc b/content/browser/webrtc/webrtc_eventlog_host.cc
index 42c0771b..6b44e5b 100644
--- a/content/browser/webrtc/webrtc_eventlog_host.cc
+++ b/content/browser/webrtc/webrtc_eventlog_host.cc
@@ -4,63 +4,31 @@
 
 #include "content/browser/webrtc/webrtc_eventlog_host.h"
 
-#include <algorithm>
-#include <string>
-
-#include "base/files/file_util.h"
-#include "base/strings/string_number_conversions.h"
 #include "base/task_scheduler/post_task.h"
 #include "base/task_scheduler/task_traits.h"
 #include "base/threading/thread_restrictions.h"
+#include "content/browser/webrtc/webrtc_event_log_manager.h"
 #include "content/browser/webrtc/webrtc_internals.h"
 #include "content/common/media/peer_connection_tracker_messages.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/render_process_host.h"
 
-#if defined(OS_WIN)
-#define IntToStringType base::IntToString16
-#else
-#define IntToStringType base::IntToString
-#endif
-
 namespace content {
 
 namespace {
 
-// In addition to the limit to the number of files given below, the size of the
-// files is also capped, see content/renderer/media/peer_connection_tracker.cc.
+// A lower maximum filesize is used on Android because storage space is
+// more scarce on mobile. This upper limit applies to each peer connection
+// individually, so the total amount of used storage can be a multiple of
+// this.
 #if defined(OS_ANDROID)
 const int kMaxNumberLogFiles = 3;
+constexpr int64_t kMaxLocalRtcEventLogFileSizeBytes = 10000000;
 #else
 const int kMaxNumberLogFiles = 5;
+constexpr int64_t kMaxLocalRtcEventLogFileSizeBytes = 60000000;
 #endif
 
-// Appends the IDs to the RTC event log file name.
-base::FilePath GetWebRtcEventLogPath(const base::FilePath& base_file,
-                                     int render_process_id,
-                                     int connection_id) {
-  return base_file.AddExtension(IntToStringType(render_process_id))
-      .AddExtension(IntToStringType(connection_id));
-}
-
-// Opens a logfile to pass on to the renderer.
-IPC::PlatformFileForTransit CreateEventLogFileForChildProcess(
-    const base::FilePath& base_path,
-    int render_process_id,
-    int connection_id) {
-  base::AssertBlockingAllowed();
-  base::FilePath file_path =
-      GetWebRtcEventLogPath(base_path, render_process_id, connection_id);
-  base::File event_log_file(
-      file_path, base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE);
-  if (!event_log_file.IsValid()) {
-    PLOG(ERROR) << "Could not open WebRTC event log file, error="
-                << event_log_file.error_details();
-    return IPC::InvalidPlatformFileForTransit();
-  }
-  return IPC::TakePlatformFileForTransit(std::move(event_log_file));
-}
-
 }  // namespace
 
 WebRTCEventLogHost::WebRTCEventLogHost(int render_process_id)
@@ -70,13 +38,13 @@
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   auto* webrtc_internals = WebRTCInternals::GetInstance();
   if (webrtc_internals->IsEventLogRecordingsEnabled())
-    StartWebRTCEventLog(webrtc_internals->GetEventLogFilePath());
+    StartLocalWebRtcEventLogging(webrtc_internals->GetEventLogFilePath());
 }
 
 WebRTCEventLogHost::~WebRTCEventLogHost() {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   for (int lid : active_peer_connection_local_ids_) {
-    RtcEventLogRemoved(lid);
+    WebRtcEventLogRemoved(lid);
   }
 }
 
@@ -102,21 +70,22 @@
   if (lid != active_peer_connection_local_ids_.end()) {
     active_peer_connection_local_ids_.erase(lid);
   }
-  RtcEventLogRemoved(peer_connection_local_id);
+  WebRtcEventLogRemoved(peer_connection_local_id);
 }
 
-bool WebRTCEventLogHost::StartWebRTCEventLog(const base::FilePath& file_path) {
+bool WebRTCEventLogHost::StartLocalWebRtcEventLogging(
+    const base::FilePath& base_path) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (rtc_event_logging_enabled_)
     return false;
   rtc_event_logging_enabled_ = true;
-  base_file_path_ = file_path;
+  base_file_path_ = base_path;
   for (int local_id : active_peer_connection_local_ids_)
     StartEventLogForPeerConnection(local_id);
   return true;
 }
 
-bool WebRTCEventLogHost::StopWebRTCEventLog() {
+bool WebRTCEventLogHost::StopLocalWebRtcEventLogging() {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (!rtc_event_logging_enabled_) {
     DCHECK(ActivePeerConnectionsWithLogFiles().empty());
@@ -125,8 +94,11 @@
   rtc_event_logging_enabled_ = false;
   RenderProcessHost* host = RenderProcessHost::FromID(render_process_id_);
   if (host) {
-    for (int local_id : active_peer_connection_local_ids_)
+    for (int local_id : active_peer_connection_local_ids_) {
       host->Send(new PeerConnectionTracker_StopEventLog(local_id));
+      WebRtcEventLogManager::GetInstance()->LocalWebRtcEventLogStop(
+          render_process_id_, local_id);
+    }
   }
   ActivePeerConnectionsWithLogFiles().clear();
   return true;
@@ -146,38 +118,19 @@
 
 void WebRTCEventLogHost::StartEventLogForPeerConnection(
     int peer_connection_local_id) {
-  if (ActivePeerConnectionsWithLogFiles().size() < kMaxNumberLogFiles) {
-    RtcEventLogAdded(peer_connection_local_id);
-    base::PostTaskWithTraitsAndReplyWithResult(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
-        base::Bind(&CreateEventLogFileForChildProcess, base_file_path_,
-                   render_process_id_, peer_connection_local_id),
-        base::Bind(&WebRTCEventLogHost::SendEventLogFileToRenderer,
-                   weak_ptr_factory_.GetWeakPtr(), peer_connection_local_id));
-  }
-}
-
-void WebRTCEventLogHost::SendEventLogFileToRenderer(
-    int peer_connection_local_id,
-    IPC::PlatformFileForTransit file_for_transit) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  if (file_for_transit == IPC::InvalidPlatformFileForTransit()) {
-    bool removed = RtcEventLogRemoved(peer_connection_local_id);
-    DCHECK(removed);
-    return;
-  }
-  RenderProcessHost* rph = RenderProcessHost::FromID(render_process_id_);
-  if (rph) {
-    rph->Send(new PeerConnectionTracker_StartEventLog(peer_connection_local_id,
-                                                      file_for_transit));
-  } else {
-    bool removed = RtcEventLogRemoved(peer_connection_local_id);
-    DCHECK(removed);
-    IPC::PlatformFileForTransitToFile(file_for_transit).Close();
+  RenderProcessHost* host = RenderProcessHost::FromID(render_process_id_);
+  if (host && ActivePeerConnectionsWithLogFiles().size() < kMaxNumberLogFiles) {
+    WebRtcEventLogAdded(peer_connection_local_id);
+    WebRtcEventLogManager::GetInstance()->LocalWebRtcEventLogStart(
+        render_process_id_, peer_connection_local_id, base_file_path_,
+        kMaxLocalRtcEventLogFileSizeBytes);
+    host->Send(new PeerConnectionTracker_StartEventLogOutput(
+        peer_connection_local_id));
   }
 }
 
-void WebRTCEventLogHost::RtcEventLogAdded(int peer_connection_local_id) {
+void WebRTCEventLogHost::WebRtcEventLogAdded(int peer_connection_local_id) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   auto& active_peer_connections_with_log_files =
       ActivePeerConnectionsWithLogFiles();
@@ -188,7 +141,7 @@
   active_peer_connections_with_log_files.push_back(pc_key);
 }
 
-bool WebRTCEventLogHost::RtcEventLogRemoved(int peer_connection_local_id) {
+bool WebRTCEventLogHost::WebRtcEventLogRemoved(int peer_connection_local_id) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   auto& active_peer_connections_with_log_files =
       ActivePeerConnectionsWithLogFiles();
diff --git a/content/browser/webrtc/webrtc_eventlog_host.h b/content/browser/webrtc/webrtc_eventlog_host.h
index ca08e20..aca2d62e 100644
--- a/content/browser/webrtc/webrtc_eventlog_host.h
+++ b/content/browser/webrtc/webrtc_eventlog_host.h
@@ -10,7 +10,6 @@
 #include "base/files/file_path.h"
 #include "base/memory/weak_ptr.h"
 #include "content/common/content_export.h"
-#include "ipc/ipc_platform_file.h"
 
 namespace content {
 
@@ -22,15 +21,17 @@
   explicit WebRTCEventLogHost(int render_process_id);
   ~WebRTCEventLogHost();
 
-  // Starts an RTC event log for all current and future PeerConnections on the
-  // render process. A base file_path can be supplied, which will be extended to
-  // include several identifiers to ensure uniqueness. If a recording was
-  // already in progress, this call will return false and have no other effect.
-  bool StartWebRTCEventLog(const base::FilePath& file_path);
+  // Starts WebRTC event logging to local files for all current and future
+  // PeerConnections on the render process. A base file_path must be supplied,
+  // which will be extended to include several identifiers to ensure uniqueness.
+  // If local WebRTC event logging was already in progress, this call will
+  // return false and have no other effect.
+  bool StartLocalWebRtcEventLogging(const base::FilePath& base_path);
 
-  // Stops recording an RTC event log for each PeerConnection on the render
-  // process. If no recording was in progress, this call will return false.
-  bool StopWebRTCEventLog();
+  // Stops recording of WebRTC event logs into local files for each
+  // PeerConnection on the render process. If local WebRTC event logging wasn't
+  // active, this call will return false.
+  bool StopLocalWebRtcEventLogging();
 
   // This function should be used to notify the WebRTCEventLogHost object that a
   // PeerConnection was created in the corresponding render process.
@@ -58,15 +59,11 @@
   // stored in base_file_path_.
   void StartEventLogForPeerConnection(int peer_connection_local_id);
 
-  // Send the platform file to the render process using an IPC message.
-  void SendEventLogFileToRenderer(int peer_connection_local_id,
-                                  IPC::PlatformFileForTransit file_for_transit);
-
   // Management of |active_peer_connections_with_log_files_|, which tracks
   // which PCs have associated log files.
-  // RtcEventLogRemoved() returns whether actual removal took place.
-  void RtcEventLogAdded(int peer_connection_local_id);
-  bool RtcEventLogRemoved(int peer_connection_local_id);
+  // WebRtcEventLogRemoved() returns whether actual removal took place.
+  void WebRtcEventLogAdded(int peer_connection_local_id);
+  bool WebRtcEventLogRemoved(int peer_connection_local_id);
 
   // The render process ID that this object is associated with.
   const int render_process_id_;
diff --git a/content/browser/webrtc/webrtc_eventlog_host_unittest.cc b/content/browser/webrtc/webrtc_eventlog_host_unittest.cc
index 92033a4..6f60c06 100644
--- a/content/browser/webrtc/webrtc_eventlog_host_unittest.cc
+++ b/content/browser/webrtc/webrtc_eventlog_host_unittest.cc
@@ -12,8 +12,11 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/task_scheduler/post_task.h"
 #include "base/task_scheduler/task_traits.h"
+#include "base/test/simple_test_clock.h"
+#include "base/time/time.h"
 #include "build/build_config.h"
 #include "content/browser/renderer_host/render_process_host_impl.h"
+#include "content/browser/webrtc/webrtc_event_log_manager.h"
 #include "content/common/media/peer_connection_tracker_messages.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/test/mock_render_process_host.h"
@@ -28,21 +31,15 @@
 #define IntToStringType base::IntToString
 #endif
 
+// These tests work fine when executed separately, but crash when we run them in
+// sequence, because the WebRtcEventLogManager that's hiding behind
+// WebRtcEventlogHost is a singleton, so it outlives the tests, but its
+// thread doesn't. This is not a problem, because we provide the same coverage
+// in WebRtcEventLogManager's unit-tests.
+// TODO(eladalon): Remove this unit and its tests. https://crbug.com/775415
+
 namespace content {
 
-namespace {
-
-// Get the expected Rtc eventlog file name. The name will be
-// <temporary path>.<render process id>.<peer connection local id>
-base::FilePath GetExpectedEventLogFileName(const base::FilePath& base_file,
-                                           int render_process_id,
-                                           int peer_connection_local_id) {
-  return base_file.AddExtension(IntToStringType(render_process_id))
-      .AddExtension(IntToStringType(peer_connection_local_id));
-}
-
-}  // namespace
-
 class WebRtcEventlogHostTest : public testing::Test {
  public:
   WebRtcEventlogHostTest()
@@ -50,7 +47,13 @@
             mock_render_process_factory_.CreateRenderProcessHost(
                 &test_browser_context_))),
         render_id_(mock_render_process_host_->GetID()),
-        event_log_host_(render_id_) {}
+        event_log_host_(render_id_),
+        manager_(WebRtcEventLogManager::GetInstance()) {
+    // Set the real time, but don't let it change, to prevent flaky tests
+    // due to misaligned expectations of the time-derived filenames.
+    test_clock_.SetNow(base::Time::Now());
+    manager_->InjectClockForTesting(&test_clock_);
+  }
   TestBrowserThreadBundle thread_bundle_;
   MockRenderProcessHostFactory mock_render_process_factory_;
   TestBrowserContext test_browser_context_;
@@ -58,42 +61,37 @@
   const int render_id_;
   WebRTCEventLogHost event_log_host_;
   base::FilePath base_file_;
+  base::SimpleTestClock test_clock_;
+  WebRtcEventLogManager* const manager_;
 
   void StartLogging() {
     ASSERT_TRUE(base::CreateTemporaryFile(&base_file_));
     EXPECT_TRUE(base::DeleteFile(base_file_, false));
     EXPECT_FALSE(base::PathExists(base_file_));
-    EXPECT_TRUE(event_log_host_.StartWebRTCEventLog(base_file_));
+    EXPECT_TRUE(event_log_host_.StartLocalWebRtcEventLogging(base_file_));
     RunAllTasksUntilIdle();
   }
 
   void StopLogging() {
-    EXPECT_TRUE(event_log_host_.StopWebRTCEventLog());
+    EXPECT_TRUE(event_log_host_.StopLocalWebRtcEventLogging());
     RunAllTasksUntilIdle();
   }
 
-  void ValidateStartIPCMessageAndCloseFile(const IPC::Message* msg,
-                                           const int peer_connection_id) {
+  void ValidateStartIPCMessage(const IPC::Message* msg,
+                               const int peer_connection_id) {
     ASSERT_TRUE(msg);
-    std::tuple<int, IPC::PlatformFileForTransit> start_params;
-    PeerConnectionTracker_StartEventLog::Read(msg, &start_params);
+    std::tuple<int> start_params;
+    PeerConnectionTracker_StartEventLogOutput::Read(msg, &start_params);
     EXPECT_EQ(peer_connection_id, std::get<0>(start_params));
-    ASSERT_NE(IPC::InvalidPlatformFileForTransit(), std::get<1>(start_params));
-    IPC::PlatformFileForTransitToFile(std::get<1>(start_params)).Close();
   }
 
   // This version of the function returns the peer connection ID instead of
   // validating it.
-  int ReadStartIPCMessageAndCloseFile(const IPC::Message* msg) {
+  int ReadStartIPCMessage(const IPC::Message* msg) {
     EXPECT_TRUE(msg);
     if (msg) {
-      std::tuple<int, IPC::PlatformFileForTransit> start_params;
-      PeerConnectionTracker_StartEventLog::Read(msg, &start_params);
-      EXPECT_NE(IPC::InvalidPlatformFileForTransit(),
-                std::get<1>(start_params));
-      if (std::get<1>(start_params) != IPC::InvalidPlatformFileForTransit()) {
-        IPC::PlatformFileForTransitToFile(std::get<1>(start_params)).Close();
-      }
+      std::tuple<int> start_params;
+      PeerConnectionTracker_StartEventLogOutput::Read(msg, &start_params);
       return std::get<0>(start_params);
     }
     return -1;
@@ -118,11 +116,19 @@
     }
     return -1;
   }
+
+  base::FilePath GetExpectedEventLogFileName(const base::FilePath& base_file,
+                                             int render_process_id,
+                                             int peer_connection_local_id) {
+    return manager_->GetLocalFilePath(base_file, render_process_id,
+                                      peer_connection_local_id);
+  }
 };
 
-// This test calls StartWebRTCEventLog() and StopWebRTCEventLog() without having
-// added any PeerConnections. It is expected that no IPC messages will be sent.
-TEST_F(WebRtcEventlogHostTest, NoPeerConnectionTest) {
+// This test calls StartLocalWebRtcEventLogging() and
+// StopLocalWebRtcEventLogging() without having added any PeerConnections. It is
+// expected that no IPC messages will be sent.
+TEST_F(WebRtcEventlogHostTest, DISABLED_NoPeerConnectionTest) {
   mock_render_process_host_->sink().ClearMessages();
 
   // Start logging and check that no IPC messages were sent.
@@ -134,10 +140,11 @@
   EXPECT_EQ(size_t(0), mock_render_process_host_->sink().message_count());
 }
 
-// This test calls StartWebRTCEventLog() and StopWebRTCEventLog() after adding a
-// single PeerConnection. It is expected that one IPC message will be sent for
-// each of the Start and Stop calls, and that a logfile is created.
-TEST_F(WebRtcEventlogHostTest, OnePeerConnectionTest) {
+// This test calls StartLocalWebRtcEventLogging() and
+// StopLocalWebRtcEventLogging() after adding a single PeerConnection. It is
+// expected that one IPC message will be sent for each of the Start and Stop
+// calls, and that a logfile is created.
+TEST_F(WebRtcEventlogHostTest, DISABLED_OnePeerConnectionTest) {
   const int kTestPeerConnectionId = 123;
   mock_render_process_host_->sink().ClearMessages();
 
@@ -149,7 +156,7 @@
   EXPECT_EQ(size_t(1), mock_render_process_host_->sink().message_count());
   const IPC::Message* start_msg =
       mock_render_process_host_->sink().GetMessageAt(0);
-  ValidateStartIPCMessageAndCloseFile(start_msg, kTestPeerConnectionId);
+  ValidateStartIPCMessage(start_msg, kTestPeerConnectionId);
 
   // Stop logging.
   mock_render_process_host_->sink().ClearMessages();
@@ -168,12 +175,12 @@
   EXPECT_TRUE(base::DeleteFile(expected_file, false));
 }
 
-// This test calls StartWebRTCEventLog() and StopWebRTCEventLog() after adding
-// two PeerConnections. It is expected that two IPC messages will be sent for
-// each of the Start and Stop calls, and that a file is created for both
-// PeerConnections.
+// This test calls StartLocalWebRtcEventLogging() and
+// StopLocalWebRtcEventLogging() after adding two PeerConnections. It is
+// expected that two IPC messages will be sent for each of the Start and Stop
+// calls, and that a file is created for both PeerConnections.
 
-TEST_F(WebRtcEventlogHostTest, TwoPeerConnectionsTest) {
+TEST_F(WebRtcEventlogHostTest, DISABLED_TwoPeerConnectionsTest) {
   const int kTestPeerConnectionId1 = 123;
   const int kTestPeerConnectionId2 = 321;
   mock_render_process_host_->sink().ClearMessages();
@@ -187,10 +194,10 @@
   EXPECT_EQ(size_t(2), mock_render_process_host_->sink().message_count());
   const IPC::Message* start_msg1 =
       mock_render_process_host_->sink().GetMessageAt(0);
-  int start_msg1_id = ReadStartIPCMessageAndCloseFile(start_msg1);
+  int start_msg1_id = ReadStartIPCMessage(start_msg1);
   const IPC::Message* start_msg2 =
       mock_render_process_host_->sink().GetMessageAt(1);
-  int start_msg2_id = ReadStartIPCMessageAndCloseFile(start_msg2);
+  int start_msg2_id = ReadStartIPCMessage(start_msg2);
 
   const std::set<int> expected_ids = {kTestPeerConnectionId1,
                                       kTestPeerConnectionId2};
@@ -224,12 +231,12 @@
   EXPECT_TRUE(base::DeleteFile(expected_file2, false));
 }
 
-// This test calls StartWebRTCEventLog() and StopWebRTCEventLog() after adding
-// more PeerConnections than the maximum allowed. It is expected that only the
-// maximum allowed number of IPC messages and log files will be opened, but we
-// expect the number of stop IPC messages to be equal to the actual number of
-// PeerConnections.
-TEST_F(WebRtcEventlogHostTest, ExceedMaxPeerConnectionsTest) {
+// This test calls StartLocalWebRtcEventLogging() and
+// StopLocalWebRtcEventLogging() after adding more PeerConnections than the
+// maximum allowed. It is expected that only the maximum allowed number of IPC
+// messages and log files will be opened, but we expect the number of stop IPC
+// messages to be equal to the actual number of PeerConnections.
+TEST_F(WebRtcEventlogHostTest, DISABLED_ExceedMaxPeerConnectionsTest) {
 #if defined(OS_ANDROID)
   const int kMaxNumberLogFiles = 3;
 #else
@@ -251,7 +258,7 @@
     for (int i = 0; i < kMaxNumberLogFiles; ++i) {
       const IPC::Message* start_msg =
           mock_render_process_host_->sink().GetMessageAt(i);
-      int id = ReadStartIPCMessageAndCloseFile(start_msg);
+      int id = ReadStartIPCMessage(start_msg);
       actual_ids.insert(id);
       expected_ids.insert(i);
     }
@@ -293,10 +300,10 @@
   }
 }
 
-// This test calls StartWebRTCEventLog() and StopWebRTCEventLog() after first
-// adding and then removing a single PeerConnection. It is expected that no IPC
-// message will be sent.
-TEST_F(WebRtcEventlogHostTest, AddRemovePeerConnectionTest) {
+// This test calls StartLocalWebRtcEventLogging() and
+// StopLocalWebRtcEventLogging() after first adding and then removing a single
+// PeerConnection. It is expected that no IPC message will be sent.
+TEST_F(WebRtcEventlogHostTest, DISABLED_AddRemovePeerConnectionTest) {
   const int kTestPeerConnectionId = 123;
   mock_render_process_host_->sink().ClearMessages();
 
diff --git a/content/browser/webrtc/webrtc_internals.cc b/content/browser/webrtc/webrtc_internals.cc
index 7ffa0ad6..3b61e9c 100644
--- a/content/browser/webrtc/webrtc_internals.cc
+++ b/content/browser/webrtc/webrtc_internals.cc
@@ -268,7 +268,7 @@
   // Disables event log and audio debug recordings if enabled and the last
   // webrtc-internals page is going away.
   DisableAudioDebugRecordings();
-  DisableEventLogRecordings();
+  DisableLocalEventLogRecordings();
 
   // TODO(tommi): Consider removing all the peer_connection_data_.
   for (auto& dictionary : peer_connection_data_)
@@ -343,12 +343,12 @@
   return audio_debug_recordings_file_path_;
 }
 
-void WebRTCInternals::EnableEventLogRecordings(
+void WebRTCInternals::EnableLocalEventLogRecordings(
     content::WebContents* web_contents) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 #if BUILDFLAG(ENABLE_WEBRTC)
 #if defined(OS_ANDROID)
-  EnableEventLogRecordingsOnAllRenderProcessHosts();
+  EnableLocalEventLogRecordingsOnAllRenderProcessHosts();
 #else
   DCHECK(web_contents);
   DCHECK(!select_file_dialog_);
@@ -362,7 +362,7 @@
 #endif
 }
 
-void WebRTCInternals::DisableEventLogRecordings() {
+void WebRTCInternals::DisableLocalEventLogRecordings() {
 #if BUILDFLAG(ENABLE_WEBRTC)
   event_log_recordings_ = false;
   // Tear down the dialog since the user has unchecked the event log checkbox.
@@ -370,7 +370,7 @@
   for (RenderProcessHost::iterator i(
            content::RenderProcessHost::AllHostsIterator());
        !i.IsAtEnd(); i.Advance())
-    i.GetCurrentValue()->StopWebRTCEventLog();
+    i.GetCurrentValue()->StopLocalWebRtcEventLogging();
 #endif
 }
 
@@ -418,7 +418,7 @@
   switch (selection_type_) {
     case SelectionType::kRtcEventLogs:
       event_log_recordings_file_path_ = path;
-      EnableEventLogRecordingsOnAllRenderProcessHosts();
+      EnableLocalEventLogRecordingsOnAllRenderProcessHosts();
       break;
     case SelectionType::kAudioDebugRecordings:
       audio_debug_recordings_file_path_ = path;
@@ -523,14 +523,15 @@
                                 audio_debug_recordings_file_path_));
 }
 
-void WebRTCInternals::EnableEventLogRecordingsOnAllRenderProcessHosts() {
+void WebRTCInternals::EnableLocalEventLogRecordingsOnAllRenderProcessHosts() {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
   event_log_recordings_ = true;
   for (RenderProcessHost::iterator i(
            content::RenderProcessHost::AllHostsIterator());
        !i.IsAtEnd(); i.Advance())
-    i.GetCurrentValue()->StartWebRTCEventLog(event_log_recordings_file_path_);
+    i.GetCurrentValue()->StartLocalWebRtcEventLogging(
+        event_log_recordings_file_path_);
 }
 #endif
 
diff --git a/content/browser/webrtc/webrtc_internals.h b/content/browser/webrtc/webrtc_internals.h
index 40c23c6..ed8a429 100644
--- a/content/browser/webrtc/webrtc_internals.h
+++ b/content/browser/webrtc/webrtc_internals.h
@@ -101,8 +101,8 @@
   const base::FilePath& GetAudioDebugRecordingsFilePath() const;
 
   // Enables or disables diagnostic event log.
-  void EnableEventLogRecordings(content::WebContents* web_contents);
-  void DisableEventLogRecordings();
+  void EnableLocalEventLogRecordings(content::WebContents* web_contents);
+  void DisableLocalEventLogRecordings();
 
   bool IsEventLogRecordingsEnabled() const;
   const base::FilePath& GetEventLogFilePath() const;
@@ -153,9 +153,9 @@
   // |audio_debug_recordings_file_path_|.
   void EnableAudioDebugRecordingsOnAllRenderProcessHosts();
 
-  // Enables event log recordings on all render process hosts using
+  // Enables local WebRTC event log recordings on all render process hosts using
   // |event_log_recordings_file_path_|.
-  void EnableEventLogRecordingsOnAllRenderProcessHosts();
+  void EnableLocalEventLogRecordingsOnAllRenderProcessHosts();
 #endif
 
   // Updates the number of open PeerConnections. Called when a PeerConnection
diff --git a/content/browser/webrtc/webrtc_internals_message_handler.cc b/content/browser/webrtc/webrtc_internals_message_handler.cc
index 70e5de6..1e744256 100644
--- a/content/browser/webrtc/webrtc_internals_message_handler.cc
+++ b/content/browser/webrtc/webrtc_internals_message_handler.cc
@@ -99,9 +99,10 @@
     bool enable,
     const base::ListValue* /* unused_list */) {
   if (enable) {
-    webrtc_internals_->EnableEventLogRecordings(web_ui()->GetWebContents());
+    webrtc_internals_->EnableLocalEventLogRecordings(
+        web_ui()->GetWebContents());
   } else {
-    webrtc_internals_->DisableEventLogRecordings();
+    webrtc_internals_->DisableLocalEventLogRecordings();
   }
 }
 
diff --git a/content/common/media/peer_connection_tracker_messages.h b/content/common/media/peer_connection_tracker_messages.h
index 290bf3f..63b1d41 100644
--- a/content/common/media/peer_connection_tracker_messages.h
+++ b/content/common/media/peer_connection_tracker_messages.h
@@ -41,13 +41,18 @@
                      // not be parsed by the browser for security reasons.
                      std::string /* audio_constraints */,
                      std::string /* video_constraints */)
+IPC_MESSAGE_CONTROL2(PeerConnectionTrackerHost_WebRtcEventLogWrite,
+                     int /* lid */,
+                     std::string /* output */)
 
 // Messages sent to PeerConnectionTracker.
 IPC_MESSAGE_CONTROL0(PeerConnectionTracker_GetAllStats)
 IPC_MESSAGE_CONTROL0(PeerConnectionTracker_OnSuspend)
-IPC_MESSAGE_CONTROL2(PeerConnectionTracker_StartEventLog,
+IPC_MESSAGE_CONTROL2(PeerConnectionTracker_StartEventLogFile,
                      int /* peer_connection_local_id */,
                      IPC::PlatformFileForTransit /* file */)
+IPC_MESSAGE_CONTROL1(PeerConnectionTracker_StartEventLogOutput,
+                     int /* peer_connection_local_id */)
 IPC_MESSAGE_CONTROL1(PeerConnectionTracker_StopEventLog,
                      int /* peer_connection_local_id */)
 
diff --git a/content/public/browser/render_process_host.h b/content/public/browser/render_process_host.h
index a2994ce..5855634 100644
--- a/content/public/browser/render_process_host.h
+++ b/content/public/browser/render_process_host.h
@@ -262,15 +262,17 @@
   virtual void EnableAudioDebugRecordings(const base::FilePath& file) = 0;
   virtual void DisableAudioDebugRecordings() = 0;
 
-  // Starts a WebRTC event log for each peerconnection on the render process.
-  // A base file_path can be supplied, which will be extended to include several
-  // identifiers to ensure uniqueness. If a recording was already in progress,
-  // this call will return false and have no other effect.
-  virtual bool StartWebRTCEventLog(const base::FilePath& file_path) = 0;
+  // Starts a local WebRTC event log for each peerconnection on the render
+  // process. A base_path must be supplied, which will be extended to include
+  // several identifiers to ensure uniqueness. If a recording was already in
+  // progress, this call will return false and have no other effect.
+  virtual bool StartLocalWebRtcEventLogging(
+      const base::FilePath& base_path) = 0;
 
-  // Stops recording a WebRTC event log for each peerconnection on the render
-  // process. If no recording was in progress, this call will return false.
-  virtual bool StopWebRTCEventLog() = 0;
+  // Stops local recording of WebRTC events log for all peerconnections on the
+  // render process. If no recording was in progress, this call will return
+  // false.
+  virtual bool StopLocalWebRtcEventLogging() = 0;
 
   // Enables or disables WebRTC's echo canceller AEC3. Disabled implies
   // selecting the older AEC2. The operation is asynchronous, |callback| is run
diff --git a/content/public/test/mock_render_process_host.cc b/content/public/test/mock_render_process_host.cc
index aa65ae5d..d283411 100644
--- a/content/public/test/mock_render_process_host.cc
+++ b/content/public/test/mock_render_process_host.cc
@@ -405,12 +405,12 @@
 
 void MockRenderProcessHost::DisableAudioDebugRecordings() {}
 
-bool MockRenderProcessHost::StartWebRTCEventLog(
-    const base::FilePath& file_path) {
+bool MockRenderProcessHost::StartLocalWebRtcEventLogging(
+    const base::FilePath& base_path) {
   return false;
 }
 
-bool MockRenderProcessHost::StopWebRTCEventLog() {
+bool MockRenderProcessHost::StopLocalWebRtcEventLogging() {
   return false;
 }
 
diff --git a/content/public/test/mock_render_process_host.h b/content/public/test/mock_render_process_host.h
index f1839288..2206b8c 100644
--- a/content/public/test/mock_render_process_host.h
+++ b/content/public/test/mock_render_process_host.h
@@ -107,8 +107,8 @@
 #if BUILDFLAG(ENABLE_WEBRTC)
   void EnableAudioDebugRecordings(const base::FilePath& file) override;
   void DisableAudioDebugRecordings() override;
-  bool StartWebRTCEventLog(const base::FilePath& file_path) override;
-  bool StopWebRTCEventLog() override;
+  bool StartLocalWebRtcEventLogging(const base::FilePath& base_path) override;
+  bool StopLocalWebRtcEventLogging() override;
   void SetEchoCanceller3(
       bool enable,
       base::OnceCallback<void(bool, const std::string&)> callback) override;
diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn
index 8ee24aa..36d95599 100644
--- a/content/renderer/BUILD.gn
+++ b/content/renderer/BUILD.gn
@@ -773,6 +773,9 @@
       "media/rtc_data_channel_handler.h",
       "media/rtc_dtmf_sender_handler.cc",
       "media/rtc_dtmf_sender_handler.h",
+      "media/rtc_event_log_output_sink.h",
+      "media/rtc_event_log_output_sink_proxy.cc",
+      "media/rtc_event_log_output_sink_proxy.h",
       "media/rtc_peer_connection_handler.cc",
       "media/rtc_peer_connection_handler.h",
       "media/secure_display_link_tracker.h",
@@ -914,6 +917,7 @@
       "//jingle:jingle_glue",
       "//third_party/libvpx",
       "//third_party/opus",
+      "//third_party/webrtc/api:libjingle_logging_api",
       "//third_party/webrtc/api:libjingle_peerconnection",
       "//third_party/webrtc/api:optional",
       "//third_party/webrtc/api:rtc_stats_api",
diff --git a/content/renderer/media/peer_connection_tracker.cc b/content/renderer/media/peer_connection_tracker.cc
index de9a77bd..fb93726e 100644
--- a/content/renderer/media/peer_connection_tracker.cc
+++ b/content/renderer/media/peer_connection_tracker.cc
@@ -366,7 +366,10 @@
   IPC_BEGIN_MESSAGE_MAP(PeerConnectionTracker, message)
     IPC_MESSAGE_HANDLER(PeerConnectionTracker_GetAllStats, OnGetAllStats)
     IPC_MESSAGE_HANDLER(PeerConnectionTracker_OnSuspend, OnSuspend)
-    IPC_MESSAGE_HANDLER(PeerConnectionTracker_StartEventLog, OnStartEventLog)
+    IPC_MESSAGE_HANDLER(PeerConnectionTracker_StartEventLogFile,
+                        OnStartEventLogFile)
+    IPC_MESSAGE_HANDLER(PeerConnectionTracker_StartEventLogOutput,
+                        OnStartEventLogOutput)
     IPC_MESSAGE_HANDLER(PeerConnectionTracker_StopEventLog, OnStopEventLog)
     IPC_MESSAGE_UNHANDLED(handled = false)
   IPC_END_MESSAGE_MAP()
@@ -404,14 +407,15 @@
   }
 }
 
-void PeerConnectionTracker::OnStartEventLog(int peer_connection_id,
-                                            IPC::PlatformFileForTransit file) {
+void PeerConnectionTracker::OnStartEventLogFile(
+    int peer_connection_id,
+    IPC::PlatformFileForTransit file) {
   DCHECK(main_thread_.CalledOnValidThread());
   for (auto& it : peer_connection_id_map_) {
     if (it.second == peer_connection_id) {
 #if defined(OS_ANDROID)
       // A lower maximum filesize is used on Android because storage space is
-      // more scarce on mobile. This upper limit applies to each peerconnection
+      // more scarce on mobile. This upper limit applies to each peer connection
       // individually, so the total amount of used storage can be a multiple of
       // this.
       const int64_t kMaxFilesizeBytes = 10000000;
@@ -424,6 +428,16 @@
   }
 }
 
+void PeerConnectionTracker::OnStartEventLogOutput(int peer_connection_id) {
+  DCHECK(main_thread_.CalledOnValidThread());
+  for (auto& it : peer_connection_id_map_) {
+    if (it.second == peer_connection_id) {
+      it.first->StartEventLog();
+      return;
+    }
+  }
+}
+
 void PeerConnectionTracker::OnStopEventLog(int peer_connection_id) {
   DCHECK(main_thread_.CalledOnValidThread());
   for (auto& it : peer_connection_id_map_) {
@@ -721,6 +735,17 @@
       SerializeMediaConstraints(user_media_request.VideoConstraints())));
 }
 
+void PeerConnectionTracker::TrackRtcEventLogWrite(
+    RTCPeerConnectionHandler* pc_handler,
+    const std::string& output) {
+  DCHECK(main_thread_.CalledOnValidThread());
+  int id = GetLocalIDForHandler(pc_handler);
+  if (id == -1)
+    return;
+  SendTarget()->Send(
+      new PeerConnectionTrackerHost_WebRtcEventLogWrite(id, output));
+}
+
 int PeerConnectionTracker::GetNextLocalID() {
   DCHECK(main_thread_.CalledOnValidThread());
   if (next_local_id_< 0)
diff --git a/content/renderer/media/peer_connection_tracker.h b/content/renderer/media/peer_connection_tracker.h
index 8bbcbe3..b9ad8cda 100644
--- a/content/renderer/media/peer_connection_tracker.h
+++ b/content/renderer/media/peer_connection_tracker.h
@@ -167,6 +167,10 @@
   virtual void TrackGetUserMedia(
       const blink::WebUserMediaRequest& user_media_request);
 
+  // Sends a new fragment on an RtcEventLog.
+  virtual void TrackRtcEventLogWrite(RTCPeerConnectionHandler* pc_handler,
+                                     const std::string& output);
+
   // For testing: Override the class that gets posted messages.
   void OverrideSendTargetForTesting(RenderThread* target);
 
@@ -186,9 +190,15 @@
   // Called when the browser process reports a suspend event from the OS.
   void OnSuspend();
 
-  // IPC Message handler for starting event log.
-  void OnStartEventLog(int peer_connection_id,
-                       IPC::PlatformFileForTransit file);
+  // TODO(eladalon): Remove OnStartEventLogFile() and then rename
+  // OnStartEventLogOutput() to OnStartEventLog(). https://crbug.com/775415
+
+  // IPC Message handler for starting event log (file).
+  void OnStartEventLogFile(int peer_connection_id,
+                           IPC::PlatformFileForTransit file);
+
+  // IPC Message handler for starting event log (output).
+  void OnStartEventLogOutput(int peer_connection_id);
 
   // IPC Message handler for stopping event log.
   void OnStopEventLog(int peer_connection_id);
diff --git a/content/renderer/media/rtc_event_log_output_sink.h b/content/renderer/media/rtc_event_log_output_sink.h
new file mode 100644
index 0000000..8a44d8b
--- /dev/null
+++ b/content/renderer/media/rtc_event_log_output_sink.h
@@ -0,0 +1,21 @@
+// Copyright (c) 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_RENDERER_MEDIA_RTC_EVENT_LOG_OUTPUT_SINK_H_
+#define CONTENT_RENDERER_MEDIA_RTC_EVENT_LOG_OUTPUT_SINK_H_
+
+#include <string>
+
+namespace content {
+
+class RtcEventLogOutputSink {
+ public:
+  virtual ~RtcEventLogOutputSink() = default;
+
+  virtual void OnWebRtcEventLogWrite(const std::string& output) = 0;
+};
+
+}  // namespace content
+
+#endif  // CONTENT_RENDERER_MEDIA_RTC_EVENT_LOG_OUTPUT_SINK_H_
diff --git a/content/renderer/media/rtc_event_log_output_sink_proxy.cc b/content/renderer/media/rtc_event_log_output_sink_proxy.cc
new file mode 100644
index 0000000..ad2500b
--- /dev/null
+++ b/content/renderer/media/rtc_event_log_output_sink_proxy.cc
@@ -0,0 +1,27 @@
+// Copyright (c) 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/renderer/media/rtc_event_log_output_sink_proxy.h"
+#include "base/logging.h"
+
+namespace content {
+
+RtcEventLogOutputSinkProxy::RtcEventLogOutputSinkProxy(
+    RtcEventLogOutputSink* sink)
+    : sink_(sink) {
+  CHECK(sink_);
+}
+
+RtcEventLogOutputSinkProxy::~RtcEventLogOutputSinkProxy() = default;
+
+bool RtcEventLogOutputSinkProxy::IsActive() const {
+  return true;  // Active until the proxy is destroyed.
+}
+
+bool RtcEventLogOutputSinkProxy::Write(const std::string& output) {
+  sink_->OnWebRtcEventLogWrite(output);
+  return true;
+}
+
+}  // namespace content
diff --git a/content/renderer/media/rtc_event_log_output_sink_proxy.h b/content/renderer/media/rtc_event_log_output_sink_proxy.h
new file mode 100644
index 0000000..abe5fec4c
--- /dev/null
+++ b/content/renderer/media/rtc_event_log_output_sink_proxy.h
@@ -0,0 +1,28 @@
+// Copyright (c) 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_RENDERER_MEDIA_RTC_EVENT_LOG_OUTPUT_SINK_PROXY_H_
+#define CONTENT_RENDERER_MEDIA_RTC_EVENT_LOG_OUTPUT_SINK_PROXY_H_
+
+#include "content/renderer/media/rtc_event_log_output_sink.h"
+#include "third_party/webrtc/api/rtceventlogoutput.h"
+
+namespace content {
+
+class RtcEventLogOutputSinkProxy final : public webrtc::RtcEventLogOutput {
+ public:
+  RtcEventLogOutputSinkProxy(RtcEventLogOutputSink* sink);
+  ~RtcEventLogOutputSinkProxy() override;
+
+  bool IsActive() const override;
+
+  bool Write(const std::string& output) override;
+
+ private:
+  RtcEventLogOutputSink* const sink_;
+};
+
+}  // namespace content
+
+#endif  // CONTENT_RENDERER_MEDIA_RTC_EVENT_LOG_OUTPUT_SINK_PROXY_H_
diff --git a/content/renderer/media/rtc_peer_connection_handler.cc b/content/renderer/media/rtc_peer_connection_handler.cc
index fd3f94f..ebbee5a 100644
--- a/content/renderer/media/rtc_peer_connection_handler.cc
+++ b/content/renderer/media/rtc_peer_connection_handler.cc
@@ -27,6 +27,8 @@
 #include "content/renderer/media/rtc_certificate.h"
 #include "content/renderer/media/rtc_data_channel_handler.h"
 #include "content/renderer/media/rtc_dtmf_sender_handler.h"
+#include "content/renderer/media/rtc_event_log_output_sink.h"
+#include "content/renderer/media/rtc_event_log_output_sink_proxy.h"
 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h"
 #include "content/renderer/media/webrtc/rtc_stats.h"
 #include "content/renderer/media/webrtc/webrtc_media_stream_adapter.h"
@@ -48,6 +50,7 @@
 #include "third_party/WebKit/public/platform/WebRTCSessionDescriptionRequest.h"
 #include "third_party/WebKit/public/platform/WebRTCVoidRequest.h"
 #include "third_party/WebKit/public/platform/WebURL.h"
+#include "third_party/webrtc/api/rtceventlogoutput.h"
 #include "third_party/webrtc/pc/mediasession.h"
 
 using webrtc::DataChannelInterface;
@@ -1140,14 +1143,28 @@
 // delivering callbacks on the main thread.
 class RTCPeerConnectionHandler::Observer
     : public base::RefCountedThreadSafe<RTCPeerConnectionHandler::Observer>,
-      public PeerConnectionObserver {
+      public PeerConnectionObserver,
+      public RtcEventLogOutputSink {
  public:
   Observer(const base::WeakPtr<RTCPeerConnectionHandler>& handler)
       : handler_(handler), main_thread_(base::ThreadTaskRunnerHandle::Get()) {}
 
+  // When an RTC event log is sent back from PeerConnection, it arrives here.
+  void OnWebRtcEventLogWrite(const std::string& output) override {
+    if (!main_thread_->BelongsToCurrentThread()) {
+      main_thread_->PostTask(
+          FROM_HERE,
+          base::BindOnce(
+              &RTCPeerConnectionHandler::Observer::OnWebRtcEventLogWrite, this,
+              output));
+    } else if (handler_) {
+      handler_->OnWebRtcEventLogWrite(output);
+    }
+  }
+
  protected:
   friend class base::RefCountedThreadSafe<RTCPeerConnectionHandler::Observer>;
-  virtual ~Observer() {}
+  ~Observer() override = default;
 
   void OnSignalingChange(
       PeerConnectionInterface::SignalingState new_state) override {
@@ -1252,7 +1269,8 @@
 RTCPeerConnectionHandler::RTCPeerConnectionHandler(
     blink::WebRTCPeerConnectionHandlerClient* client,
     PeerConnectionDependencyFactory* dependency_factory)
-    : client_(client),
+    : initialize_called_(false),
+      client_(client),
       is_closed_(false),
       dependency_factory_(dependency_factory),
       track_adapter_map_(
@@ -1299,6 +1317,9 @@
   DCHECK(thread_checker_.CalledOnValidThread());
   DCHECK(frame_);
 
+  CHECK(!initialize_called_);
+  initialize_called_ = true;
+
   peer_connection_tracker_ =
       RenderThreadImpl::current()->peer_connection_tracker()->AsWeakPtr();
 
@@ -1337,6 +1358,10 @@
     const blink::WebMediaConstraints& options,
     const base::WeakPtr<PeerConnectionTracker>& peer_connection_tracker) {
   DCHECK(thread_checker_.CalledOnValidThread());
+
+  CHECK(!initialize_called_);
+  initialize_called_ = true;
+
   GetNativeRtcConfiguration(server_configuration, &configuration_);
 
   peer_connection_observer_ = new Observer(weak_factory_.GetWeakPtr());
@@ -1920,15 +1945,37 @@
                                              int64_t max_file_size_bytes) {
   DCHECK(thread_checker_.CalledOnValidThread());
   DCHECK(file != IPC::InvalidPlatformFileForTransit());
+  // TODO(eladalon): StartRtcEventLog() return value is not useful; remove it
+  // or find a way to be able to use it.
+  // https://crbug.com/775415
   native_peer_connection_->StartRtcEventLog(
       IPC::PlatformFileForTransitToPlatformFile(file), max_file_size_bytes);
 }
 
+void RTCPeerConnectionHandler::StartEventLog() {
+  DCHECK(thread_checker_.CalledOnValidThread());
+  // TODO(eladalon): StartRtcEventLog() return value is not useful; remove it
+  // or find a way to be able to use it.
+  // https://crbug.com/775415
+  native_peer_connection_->StartRtcEventLog(
+      base::MakeUnique<RtcEventLogOutputSinkProxy>(
+          peer_connection_observer_.get()),
+      webrtc::RtcEventLog::kImmediateOutput);
+}
+
 void RTCPeerConnectionHandler::StopEventLog() {
   DCHECK(thread_checker_.CalledOnValidThread());
   native_peer_connection_->StopRtcEventLog();
 }
 
+void RTCPeerConnectionHandler::OnWebRtcEventLogWrite(
+    const std::string& output) {
+  DCHECK(thread_checker_.CalledOnValidThread());
+  if (peer_connection_tracker_) {
+    peer_connection_tracker_->TrackRtcEventLogWrite(this, output);
+  }
+}
+
 blink::WebRTCDataChannelHandler* RTCPeerConnectionHandler::CreateDataChannel(
     const blink::WebString& label,
     const blink::WebRTCDataChannelInit& init) {
diff --git a/content/renderer/media/rtc_peer_connection_handler.h b/content/renderer/media/rtc_peer_connection_handler.h
index e3bc454..9b17862 100644
--- a/content/renderer/media/rtc_peer_connection_handler.h
+++ b/content/renderer/media/rtc_peer_connection_handler.h
@@ -181,9 +181,13 @@
   // Start recording an event log.
   void StartEventLog(IPC::PlatformFileForTransit file,
                      int64_t max_file_size_bytes);
+  void StartEventLog();
   // Stop recording an event log.
   void StopEventLog();
 
+  // WebRTC event log fragments sent back from PeerConnection land here.
+  void OnWebRtcEventLogWrite(const std::string& output);
+
  protected:
   webrtc::PeerConnectionInterface* native_peer_connection() {
     return native_peer_connection_.get();
@@ -253,6 +257,10 @@
   void RunSynchronousClosureOnSignalingThread(const base::Closure& closure,
                                               const char* trace_event_name);
 
+  // Initialize() is never expected to be called more than once, even if the
+  // first call fails.
+  bool initialize_called_;
+
   base::ThreadChecker thread_checker_;
 
   // |client_| is a weak pointer to the blink object (blink::RTCPeerConnection)
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index 443fd02..b5ae64d 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -1774,6 +1774,7 @@
       "../browser/renderer_host/p2p/socket_host_test_utils.cc",
       "../browser/renderer_host/p2p/socket_host_test_utils.h",
       "../browser/renderer_host/p2p/socket_host_udp_unittest.cc",
+      "../browser/webrtc/webrtc_event_log_manager_unittest.cc",
       "../browser/webrtc/webrtc_eventlog_host_unittest.cc",
       "../browser/webrtc/webrtc_internals_unittest.cc",
       "../renderer/media/audio_repetition_detector_unittest.cc",
@@ -1875,7 +1876,9 @@
   # Screen capture unit tests.
   if (is_linux || is_mac || is_win) {
     deps += [ "//third_party/libyuv" ]
-    sources += [ "../browser/media/capture/web_contents_video_capture_device_unittest.cc" ]
+    sources += [
+      "../browser/media/capture/web_contents_video_capture_device_unittest.cc",
+    ]
     if (use_aura) {
       sources += [ "../browser/media/capture/cursor_renderer_aura_unittest.cc" ]
     }
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 3d6e133..c621cef 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -1949,8 +1949,6 @@
 crbug.com/704259 external/wpt/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html [ Skip ]
 crbug.com/704259 external/wpt/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html [ Skip ]
 
-crbug.com/626703 external/wpt/domxpath/001.html [ Failure ]
-
 # These HTTP tests that started failing after a web-platform-tests import.
 crbug.com/711529 http/tests/notifications/serviceworker-notification-event.html [ Timeout ]
 crbug.com/711529 http/tests/origin_trials/sample-api-workers.html [ Crash Timeout ]
@@ -3360,196 +3358,6 @@
 crbug.com/755405 [ Android ] compositing/layer-creation/fixed-position-out-of-view.html [ Failure ]
 crbug.com/755405 [ Android ] compositing/squashing/invisible-layers-should-not-affect-geometry.html [ Failure ]
 crbug.com/755405 [ Android ] compositing/will-change/composited-layers.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/FileAPI/fileReader.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/FileAPI/blob/Blob-XHR-revoke.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/FileAPI/reading-data-section/FileReader-event-handler-attributes.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/FileAPI/reading-data-section/filereader_readAsText.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/WebIDL/ecmascript-binding/interface-object.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/XMLHttpRequest/event-load.htm [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/XMLHttpRequest/open-after-abort.htm [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/connect-src/connect-src-beacon-blocked.sub.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/font-src/font-match-allowed.sub.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/font-src/font-none-blocked.sub.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-self-block.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-url-block.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/img-src/img-src-host-partial-wildcard-allowed.sub.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/img-src/img-src-none-blocks.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/meta/meta-modified.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/securitypolicyviolation/blockeduri-eval.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/style-src/style-src-inline-style-attribute-allowed.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/style-src/style-src-stylesheet-nonce-allowed.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/content-security-policy/svg/svg-from-guid.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/css/css-align/content-distribution/place-content-shorthand-002.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/css/css-align/content-distribution/place-content-shorthand-003.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/css/css-align/default-alignment/place-items-shorthand-001.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/css/css-display/display-contents-computed-style.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/css/css-typed-om/CSSMatrixComponent-DOMMatrix-mutable.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/css/css-typed-om/declared-styleMap-accepts-inherit.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/css/cssom/cssom-cssText-serialize.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/css/cssom/medialist-interfaces-004.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/css/cssom-view/cssom-view-window-screen-interface.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/css/cssom-view/media-query-list-interface.xht [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/custom-elements/HTMLElement-constructor.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/custom-elements/parser/parser-constructs-custom-element-in-document-write.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/custom-elements/parser/parser-constructs-custom-elements.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/custom-elements/reactions/Attr.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/custom-elements/reactions/Selection.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/custom-elements/upgrading/upgrading-parser-created-element.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/interface-objects.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/collections/HTMLCollection-as-proto-length-get-throws.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/events/AddEventListenerOptions-once.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/events/CustomEvent.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/events/Event-defaultPrevented-after-dispatch.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/events/Event-dispatch-order.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/lists/DOMTokenList-value.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/nodes/CharacterData-surrogates.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/nodes/Node-lookupPrefix.xhtml [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/nodes/Document-contentType/contentType/createHTMLDocument.html [ Failure Timeout ]
-crbug.com/755405 [ Android ] external/wpt/dom/ranges/Range-constructor.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/traversal/NodeFilter-constants.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/dom/traversal/TreeWalker-walking-outside-a-tree.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/domparsing/innerhtml-03.xhtml [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/domparsing/innerhtml-04.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/encoding/iso-2022-jp-encoder.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/encoding/textdecoder-fatal-streaming.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/fetch/api/basic/scheme-blob.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/fetch/api/headers/headers-casing.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/fetch/api/headers/headers-structure.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/fetch/api/policies/referrer-unsafe-url.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/fetch/api/request/request-clone.sub.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/fetch/api/response/response-static-error.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/fullscreen/api/element-request-fullscreen-not-allowed.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/fullscreen/api/element-request-fullscreen-top-manual.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/fullscreen/model/remove-parent-manual.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/gamepad/idlharness.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/001.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/browsers/history/the-history-interface/history_back.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/browsers/history/the-history-interface/history_pushstate.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/browsers/history/the-history-interface/history_replacestate_err.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/browsers/history/the-history-interface/history_replacestate_nooptionalparam.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/browsers/offline/application-cache-api/api_update_error.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/browsers/offline/introduction-4/event_cached.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-null-names.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/browsers/the-window-object/the-windowproxy-object/test-window-proxy-statusbar-manual.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null-undef.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-same.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/dom/dynamic-markup-insertion/document-write/042.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/dom/elements/global-attributes/dataset-get.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/dom/elements/global-attributes/the-translate-attribute-010.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/editing/activation/click.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/editing/dnd/dom/draggable.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/editing/focus/focus-management/focus-event-targets-simple.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/editing/focus/focus-management/focus-events.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/infrastructure/common-dom-interfaces/collections/htmloptionscollection.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/document-all.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/document-metadata/the-base-element/base_href_empty.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/document-metadata/the-title-element/title.text-02.xhtml [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/edits/the-del-element/del_effect.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/edits/the-ins-element/ins_effect.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackCue/onexit.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source-in-div.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/forms/textfieldselection/selection-not-application-textarea.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/forms/textfieldselection/selection-not-application.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/grouping-content/the-ol-element/ol.start-reflection-1.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_getter.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/scripting-1/the-script-element/scripting-enabled.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/selectors/pseudo-classes/dir01.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/selectors/pseudo-classes/required-optional.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/tabular-data/the-table-element/caption-methods.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/tabular-data/the-table-element/table-insertRow.html [ Failure Timeout ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/text-level-semantics/the-a-element/a.text-setter-01.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/semantics/text-level-semantics/the-time-element/001.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/syntax/parsing/Document.getElementsByTagName-foreign-01.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/syntax/parsing/Document.getElementsByTagName-foreign-02.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/syntax/parsing/template/additions-to-foster-parenting/template-is-a-foster-parent-element.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/syntax/parsing-html-fragments/the-input-byte-stream-016.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/webappapis/animation-frames/same-dispatch-time.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/webappapis/timers/type-long-setinterval.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html/webappapis/timers/type-long-settimeout.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html-imports/document/document-method-changes.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html-imports/fetching/already-in-import-map.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/html-imports/fetching/loading-attempt.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/innerText/setter.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/input-events/idlharness.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/media-capabilities/decodingInfo.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/mediacapture-record/BlobEvent-constructor.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/mediasession/mediametadata.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/mediasession/playbackstate.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/mediasession/setactionhandler.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/navigation-timing/nav2_test_instance_accessible_from_the_start.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/navigation-timing/test_navigation_redirectCount_none.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/orientation-event/devicemotionevent-init.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/pointerevents/pointerevent_touch-action-illegal.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/preload/avoid-delaying-onload-link-preload.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/referrer-policy/generic/subresource-test/attr-referrer-invalid-value.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/referrer-policy/origin/meta-referrer/cross-origin/http-http/xhr-request/generic.no-redirect.http.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/selection/Document-open.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/service-workers/service-worker/rejections.https.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/shadow-dom/Element-interface-shadowRoot-attribute.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/shadow-dom/event-with-related-target.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/dom-tree-accessors-002.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/shadow-dom/untriaged/styles/test-008.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/streams/byte-length-queuing-strategy.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/streams/piping/close-propagation-backward.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/streams/piping/multiple-propagation.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/streams/readable-streams/floating-point-total-queue-size.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/streams/writable-streams/bad-strategies.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/streams/writable-streams/brand-checks.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/touch-events/historical.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/touch-events/touch-globaleventhandler-interface.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/touch-events/touch-retargeting.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/uievents/legacy-domevents-tests/approved/stopPropagation.deferred.effect.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/uievents/legacy-domevents-tests/submissions/Microsoft/converted/EventListener.dispatch.new.event.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/uievents/order-of-events/focus-events/focus-automated-blink-webkit.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/user-timing/invoke_with_timing_attributes.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/user-timing/invoke_without_parameter.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/web-animations/animation-model/combining-effects/effect-composition.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/web-animations/animation-model/keyframe-effects/effect-value-context.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/web-animations/interfaces/Animatable/getAnimations.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/web-animations/interfaces/Animation/ready.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/web-animations/interfaces/AnimationEffectTiming/delay.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/web-animations/interfaces/Document/getAnimations.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/web-animations/interfaces/DocumentTimeline/constructor.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/web-animations/interfaces/KeyframeEffect/composite.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/web-animations/timing-model/animation-effects/active-time.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/web-animations/timing-model/animations/finishing-an-animation.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/web-animations/timing-model/time-transformations/transformed-progress.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webmessaging/Channel_postMessage_DataCloneErr.htm [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webmessaging/Channel_postMessage_target_source.htm [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webmessaging/broadcastchannel/basics.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webmessaging/broadcastchannel/interface.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webmessaging/message-channels/001.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webmessaging/with-ports/002.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webmessaging/with-ports/014.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webmessaging/without-ports/003.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webmessaging/without-ports/006.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webmessaging/without-ports/013.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webrtc/RTCPeerConnectionIceEvent-constructor.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webrtc/simplecall.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webstorage/storage_key.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webstorage/storage_length.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webvtt/api/VTTCue/size.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webvtt/api/VTTRegion/constructor.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webvtt/api/VTTRegion/regionAnchorX.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webvtt/parsing/file-parsing/tests/settings-line.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/webvtt/parsing/file-parsing/tests/timings-too-short.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/workers/Worker_dispatchEvent_ErrorEvent.htm [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/workers/constructors/Worker/no-arguments-ctor.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/second-argument-null-in-array.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/workers/interfaces/WorkerGlobalScope/close/sending-messages.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/workers/interfaces/WorkerUtils/navigator/005.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/workers/semantics/encodings/001.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/workers/semantics/multiple-workers/008.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/workers/semantics/run-a-worker/001.html [ Failure ]
-crbug.com/755405 [ Android ] external/wpt/workers/semantics/xhr/002.html [ Failure ]
 crbug.com/755405 [ Android ] fast/block/basic/018.html [ Failure ]
 crbug.com/755405 [ Android ] fast/block/float/002.html [ Failure ]
 crbug.com/755405 [ Android ] fast/block/float/centered-float-avoidance-complexity.html [ Failure ]
@@ -3604,7 +3412,6 @@
 crbug.com/755405 [ Android ] tables/mozilla_expected_failures/bugs/bug1055-2.html [ Failure ]
 crbug.com/755405 [ Android ] tables/mozilla_expected_failures/bugs/bug2479-5.html [ Failure ]
 crbug.com/755405 [ Android ] virtual/layout_ng/fast/block/margin-collapse/019.html [ Failure Crash ]
-crbug.com/755405 [ Android ] virtual/mojo-localstorage/external/wpt/webstorage/storage_enumerate.html [ Failure ]
 crbug.com/755405 [ Android ] virtual/rootlayerscrolls/fast/scrolling/scrollable-area-overflow-auto-display-none-in-parent.html [ Failure ]
 crbug.com/755405 [ Android ] compositing/sibling-positioning.html [ Failure ]
 crbug.com/755405 [ Android ] css3/selectors3/html/css3-modsel-18.html [ Failure Crash ]
@@ -3863,9 +3670,6 @@
 # Sheriff failures 2017-09-12
 crbug.com/764180 [ Android ] virtual/display_list_2d_canvas/fast/canvas/script-inside-canvas-fallback.html [ Pass Crash ]
 
-# Sheriff failure 2017-09-15
-crbug.com/765685 [ Android ] external/wpt/mediacapture-streams/MediaStream-idl.https.html [ Pass Failure ]
-
 # Sheriff failure 2017-09-18
 crbug.com/766404 [ Mac ] plugins/keyboard-events.html [ Pass Failure ]
 
@@ -3941,12 +3745,6 @@
 # Sheriff failures 2017-10-24
 crbug.com/773122 crbug.com/777813 [ Win ] fast/text/font-ascent-mac.html [ Failure Pass ]
 
-# Sheriff failures 2017-11-03
-crbug.com/781171 [ Android ] external/wpt/css/css-timing/cubic-bezier-timing-functions-output.html [ Failure Crash Pass ]
-crbug.com/781171 [ Android ] external/wpt/css/css-timing/frames-timing-functions-output.html [ Skip ]
-crbug.com/781171 [ Android ] external/wpt/css/css-timing/frames-timing-functions-syntax.html [ Skip ]
-crbug.com/781171 [ Android ] external/wpt/css/css-timing/step-timing-functions-output.html [ Skip ]
-
 # Sheriff failures 2017-11-07
 crbug.com/782067 [ Mac10.10 Mac10.11 ] fast/css/no-recalc-on-no-op-inline-style-changes.html [ Pass Failure ]
 
diff --git a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
index 5dab347..c1f82744 100644
--- a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
+++ b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
@@ -91351,6 +91351,11 @@
      {}
     ]
    ],
+   "accelerometer/Accelerometer_onerror-manual.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "accelerometer/OWNERS": [
     [
      {}
@@ -139131,6 +139136,11 @@
      {}
     ]
    ],
+   "magnetometer/Magnetometer_onerror-manual.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "magnetometer/OWNERS": [
     [
      {}
@@ -147321,21 +147331,31 @@
      {}
     ]
    ],
-   "wake-lock/wakelock-object-is-independent.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "wake-lock/wakelock-onactivechange.https-expected.txt": [
     [
      {}
     ]
    ],
+   "wake-lock/wakelock-promise.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "wake-lock/wakelock-state-is-global.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "wake-lock/wakelock-type.https-expected.txt": [
     [
      {}
     ]
    ],
+   "wake-lock/wakelockrequest-is-independent.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "wasm/OWNERS": [
     [
      {}
@@ -211149,24 +211169,36 @@
      {}
     ]
    ],
-   "wake-lock/wakelock-object-is-independent.https.html": [
-    [
-     "/wake-lock/wakelock-object-is-independent.https.html",
-     {}
-    ]
-   ],
    "wake-lock/wakelock-onactivechange.https.html": [
     [
      "/wake-lock/wakelock-onactivechange.https.html",
      {}
     ]
    ],
+   "wake-lock/wakelock-promise.https.html": [
+    [
+     "/wake-lock/wakelock-promise.https.html",
+     {}
+    ]
+   ],
+   "wake-lock/wakelock-state-is-global.https.html": [
+    [
+     "/wake-lock/wakelock-state-is-global.https.html",
+     {}
+    ]
+   ],
    "wake-lock/wakelock-type.https.html": [
     [
      "/wake-lock/wakelock-type.https.html",
      {}
     ]
    ],
+   "wake-lock/wakelockrequest-is-independent.https.html": [
+    [
+     "/wake-lock/wakelockrequest-is-independent.https.html",
+     {}
+    ]
+   ],
    "wasm/create_multiple_memory.worker.js": [
     [
      "/wasm/create_multiple_memory.worker.html",
@@ -230543,19 +230575,23 @@
    "support"
   ],
   "accelerometer/Accelerometer.https-expected.txt": [
-   "b963047a40779af7aece240d3bfaa134585d91ab",
+   "f45b4184c5d3d5ced06ed486d89970c87d6b2181",
    "support"
   ],
   "accelerometer/Accelerometer.https.html": [
-   "cdf386711da6ef6a795bcf179e7c7ce373751f56",
+   "c0ca55250886c6a8c6194b658ed362e8b10ccae3",
    "testharness"
   ],
   "accelerometer/Accelerometer_insecure_context.html": [
-   "da374eab5cbc963d8e5e2f2025d9fb1a94043643",
+   "ad29f70c8f506002154e6ffa430b87f5e5ae0923",
    "testharness"
   ],
+  "accelerometer/Accelerometer_onerror-manual.https-expected.txt": [
+   "31feaa72d7b84d017d459344462e0a38a72632ba",
+   "support"
+  ],
   "accelerometer/Accelerometer_onerror-manual.https.html": [
-   "e03faad7d297ce2c5d6fefa66a2397c3d9a32e2d",
+   "f20acb4b4e2f774fc13c870f972aaa2ca82afd27",
    "manual"
   ],
   "accelerometer/OWNERS": [
@@ -298439,7 +298475,7 @@
    "support"
   ],
   "generic-sensor/generic-sensor-tests.js": [
-   "6550b58fb02d2b6059e4f04822ff81df2c5c8ea2",
+   "2209b4cc293aefecded2d325b664d494820d38af",
    "support"
   ],
   "generic-sensor/idlharness.https.html": [
@@ -316847,7 +316883,7 @@
    "testharness"
   ],
   "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.html": [
-   "9ab91396894612ad2a71643cd5253fcc8572983a",
+   "d87ec96d53353fc63b9d3db4775414c6335cdd2d",
    "testharness"
   ],
   "html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html": [
@@ -317643,19 +317679,23 @@
    "support"
   ],
   "magnetometer/Magnetometer.https-expected.txt": [
-   "b37d90ce6c8e697cc08a7990fd64f995d5fd87e3",
+   "cd96b76956a4bd0299115e252c2407451e7e1a13",
    "support"
   ],
   "magnetometer/Magnetometer.https.html": [
-   "3fbdbbd6c3db9b1a44d7490101bea34045f1945e",
+   "240e7d0af55b8681f2f45ca22283634acc406325",
    "testharness"
   ],
   "magnetometer/Magnetometer_insecure_context.html": [
-   "417e00b969ea887ee4d3d4d9b0dc7af4d786e365",
+   "0eeb95340d7c74a0243eac8d3f004b6e06b87a92",
    "testharness"
   ],
+  "magnetometer/Magnetometer_onerror-manual.https-expected.txt": [
+   "5535f83d0f9d1dc22d9d27d2dd000cd076e6dd98",
+   "support"
+  ],
   "magnetometer/Magnetometer_onerror-manual.https.html": [
-   "6adfb807ff2c1b24dad702b21f636e7805543704",
+   "da4e6b8975beecdcae24da26920a56a652f781e4",
    "manual"
   ],
   "magnetometer/OWNERS": [
@@ -341434,14 +341474,6 @@
    "527a75868eab39b899113cae81601630f9850790",
    "testharness"
   ],
-  "wake-lock/wakelock-object-is-independent.https-expected.txt": [
-   "9f2c345a6fb831bc47a611af405f2bc0311a7fed",
-   "support"
-  ],
-  "wake-lock/wakelock-object-is-independent.https.html": [
-   "7db6e3ce66953a719bda56bf0ecee5a8d26a7292",
-   "testharness"
-  ],
   "wake-lock/wakelock-onactivechange.https-expected.txt": [
    "86824c041e03c445b74252cdf08278a7241b6df5",
    "support"
@@ -341450,6 +341482,22 @@
    "cbf4c5d6351e01ccc1a3e0e3e05afb16968a7edd",
    "testharness"
   ],
+  "wake-lock/wakelock-promise.https-expected.txt": [
+   "92db046964f31e99537b0238070e07999f7a9b29",
+   "support"
+  ],
+  "wake-lock/wakelock-promise.https.html": [
+   "2cf40b55e8875b3d2d0dc215f0547e9fc8c23389",
+   "testharness"
+  ],
+  "wake-lock/wakelock-state-is-global.https-expected.txt": [
+   "e7a55e0639695095c82030e5e33aa840beaf5df1",
+   "support"
+  ],
+  "wake-lock/wakelock-state-is-global.https.html": [
+   "7a8179b74d81b3ebda85aa440c183358b0ebe50b",
+   "testharness"
+  ],
   "wake-lock/wakelock-type.https-expected.txt": [
    "eb117ce815966975beb2c71f1bbdcad13263509d",
    "support"
@@ -341458,6 +341506,14 @@
    "583647213b49b7bc67cad08192db3e6abcd1de9f",
    "testharness"
   ],
+  "wake-lock/wakelockrequest-is-independent.https-expected.txt": [
+   "0e5910292dd302d23ba287e831e523ca777f92c6",
+   "support"
+  ],
+  "wake-lock/wakelockrequest-is-independent.https.html": [
+   "caaf2634451eb9228c0b20f0ac817d7a3d3fa685",
+   "testharness"
+  ],
   "wasm/OWNERS": [
    "126e62d01f281a96a4de7164138f3cdfc30e22ee",
    "support"
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https-expected.txt
index 41cf4ee..14629bf 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https-expected.txt
@@ -1,4 +1,5 @@
 This is a testharness.js-based test.
+Harness Error. harness_status.status = 1 , harness_status.message = Uncaught ReferenceError: GravitySensor is not defined
 FAIL Accelerometer: Test that 'onreading' is called and sensor reading is valid assert_equals: Expected reading event, but got error event instead expected "reading" but got "error"
 FAIL Accelerometer: sensor reading is correct assert_equals: Expected reading event, but got error event instead expected "reading" but got "error"
 FAIL Accelerometer: sensor timestamp is updated when time passes assert_equals: Expected reading event, but got error event instead expected "reading" but got "error"
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https.html
index 5835557..2a9bc543 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https.html
@@ -10,5 +10,6 @@
 <script>
 
 runGenericSensorTests(Accelerometer);
+runGenericSensorTests(GravitySensor);
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_insecure_context.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_insecure_context.html
index d55a62f1..96eeef2d 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_insecure_context.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_insecure_context.html
@@ -16,5 +16,6 @@
 <script>
 
 runGenericSensorInsecureContext("Accelerometer");
+runGenericSensorInsecureContext("GravitySensor");
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https-expected.txt
new file mode 100644
index 0000000..d0f2a19
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https-expected.txt
@@ -0,0 +1,5 @@
+This is a testharness.js-based test.
+Harness Error. harness_status.status = 1 , harness_status.message = Uncaught ReferenceError: GravitySensor is not defined
+PASS Accelerometer: 'onerror' event is fired when sensor is not supported
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https.html
index a3e8150..8778693 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https.html
@@ -16,5 +16,6 @@
 <script>
 
 runGenericSensorOnerror(Accelerometer);
+runGenericSensorOnerror(GravitySensor);
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/domxpath/001-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/domxpath/001-expected.txt
new file mode 100644
index 0000000..e8e17ecc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/domxpath/001-expected.txt
@@ -0,0 +1,14 @@
+This is a testharness.js-based test.
+PASS HTML elements no namespace prefix
+PASS HTML elements namespace prefix
+PASS HTML elements mixed use of prefix
+PASS SVG elements no namespace prefix
+PASS SVG elements namespace prefix
+PASS HTML elements mixed case
+PASS SVG elements mixed case selector
+PASS Non-ascii HTML element
+FAIL Non-ascii HTML element2 assert_array_equals: lengths differ, expected 0 got 1
+PASS Non-ascii HTML element3
+PASS Throw with invalid prefix
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/generic-sensor-tests.js b/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/generic-sensor-tests.js
index bd819c2..cde2374 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/generic-sensor-tests.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/generic-sensor-tests.js
@@ -2,8 +2,11 @@
   'AmbientLightSensor' : ['timestamp', 'illuminance'],
   'Accelerometer' : ['timestamp', 'x', 'y', 'z'],
   'LinearAccelerationSensor' : ['timestamp', 'x', 'y', 'z'],
+  "GravitySensor" : ['timestamp', 'x', 'y', 'z'],
   'Gyroscope' : ['timestamp', 'x', 'y', 'z'],
   'Magnetometer' : ['timestamp', 'x', 'y', 'z'],
+  "UncalibratedMagnetometer" : ['timestamp', 'x', 'y', 'z',
+                                'xBias', 'yBias', 'zBias'],
   'AbsoluteOrientationSensor' : ['timestamp', 'quaternion'],
   'RelativeOrientationSensor' : ['timestamp', 'quaternion'],
   'GeolocationSensor' : ['timestamp', 'latitude', 'longitude', 'altitude',
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https-expected.txt
index 3998344..5454d299 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https-expected.txt
@@ -1,4 +1,5 @@
 This is a testharness.js-based test.
+Harness Error. harness_status.status = 1 , harness_status.message = Uncaught ReferenceError: UncalibratedMagnetometer is not defined
 FAIL Magnetometer: Test that 'onreading' is called and sensor reading is valid assert_equals: Expected reading event, but got error event instead expected "reading" but got "error"
 FAIL Magnetometer: sensor reading is correct assert_equals: Expected reading event, but got error event instead expected "reading" but got "error"
 FAIL Magnetometer: sensor timestamp is updated when time passes assert_equals: Expected reading event, but got error event instead expected "reading" but got "error"
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https.html
index f327ed3c..a3cefc2 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https.html
@@ -10,5 +10,6 @@
 <script>
 
 runGenericSensorTests(Magnetometer);
+runGenericSensorTests(UncalibratedMagnetometer);
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_insecure_context.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_insecure_context.html
index 307c19b..45ff584b 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_insecure_context.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_insecure_context.html
@@ -16,5 +16,6 @@
 <script>
 
 runGenericSensorInsecureContext("Magnetometer");
+runGenericSensorInsecureContext("UncalibratedMagnetometer");
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https-expected.txt
new file mode 100644
index 0000000..163ea371
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https-expected.txt
@@ -0,0 +1,5 @@
+This is a testharness.js-based test.
+Harness Error. harness_status.status = 1 , harness_status.message = Uncaught ReferenceError: UncalibratedMagnetometer is not defined
+PASS Magnetometer: 'onerror' event is fired when sensor is not supported
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https.html
index 3cd62db..04b9877 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https.html
@@ -16,5 +16,6 @@
 <script>
 
 runGenericSensorOnerror(Magnetometer);
+runGenericSensorOnerror(UncalibratedMagnetometer);
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-object-is-independent.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-object-is-independent.https-expected.txt
deleted file mode 100644
index 9a760c17..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-object-is-independent.https-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL Test that the WakeLock object is independent. promise_test: Unhandled rejection with value: object "TypeError: navigator.getWakeLock is not a function"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-object-is-independent.https.html b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-object-is-independent.https.html
deleted file mode 100644
index f0493ee..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-object-is-independent.https.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>WakeLock object is independent</title>
-<link rel="help" href="https://w3c.github.io/wake-lock/">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<body>
-<script id="iframe" type="text/plain">
-let iframeWakeLock, iframeRequest;
-window.onmessage = async message => {
-  switch(message.data) {
-  case "INIT":
-    iframeWakeLock = await navigator.getWakeLock("screen");
-    parent.postMessage(iframeWakeLock.active, "*");
-    break;
-  case "ACQUIRED":
-    iframeRequest = iframeWakeLock.createRequest();
-    parent.postMessage(iframeWakeLock.active, "*");
-    break;
-  case "RELEASED":
-    iframeRequest.cancel();
-    parent.postMessage(iframeWakeLock.active, "*");
-    break;
-  default:
-    parent.postMessage("unknown operation", "*");
-  }
-}
-</script>
-
-<script>
-function load_iframe() {
-  return new Promise(resolve => {
-    const iframe = document.createElement("iframe");
-    iframe.onload = () => { resolve(iframe); };
-    iframe.srcdoc = "<script>" +
-                    document.getElementById('iframe').textContent +
-                    "<\/script>";
-    document.body.appendChild(iframe);
-  });
-}
-
-function wait_for_message(iframe) {
-  return new Promise(resolve => {
-    self.addEventListener("message", function listener(e) {
-      if (e.source === iframe.contentWindow) {
-        resolve(e.data);
-        self.removeEventListener("message", listener);
-      }
-    });
-  });
-}
-
-promise_test(async t => {
-  const wakeLock1 = await navigator.getWakeLock("screen");
-  const wakeLock2 = await navigator.getWakeLock("screen");
-  const iframe = await load_iframe();
-
-  //when wakeLock1 is acquired, wakeLock2 and iframeWakeLock are still inactived
-  iframe.contentWindow.postMessage("INIT", "*");
-  let request1 = wakeLock1.createRequest();
-  let isActive1 = await wait_for_message(iframe);
-  assert_true(wakeLock1.active, "the active is true when wakeLock1 is acquired");
-  assert_false(wakeLock2.active, "the active is false before wakeLock2 is acquired");
-  assert_false(isActive1, "the active is false before iframeWakeLock is acquired");
-
-  //when wakeLock2 and iframeWakeLock are acquired, release wakeLock1
-  iframe.contentWindow.postMessage("ACQUIRED", "*");
-  let isActive2 = await wait_for_message(iframe);
-  request1.cancel();
-  let request2 = wakeLock2.createRequest();
-  assert_false(wakeLock1.active, "the active is false when wakeLock1 is released");
-  assert_true(wakeLock2.active, "the active is true when wakeLock2 is acquired");
-  assert_true(isActive2, "the active is true when iframeWakeLock is acquired");
-
-  //release all WakeLock objects
-  iframe.contentWindow.postMessage("RELEASED", "*");
-  let isActive3 = await wait_for_message(iframe);
-  request2.cancel();
-  assert_false(wakeLock1.active, "the active is false when wakeLock1 is released");
-  assert_false(wakeLock2.active, "the active is false when wakeLock2 is released");
-  assert_false(isActive3, "the active is false when iframeWakeLock is released");
-}, "Test that the WakeLock object is independent.");
-</script>
-</body>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-promise.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-promise.https-expected.txt
new file mode 100644
index 0000000..fa90c3e7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-promise.https-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL navigator.getWakeLock() for the same Document always return same WakeLock promise promise_test: Unhandled rejection with value: object "TypeError: navigator.getWakeLock is not a function"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-promise.https.html b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-promise.https.html
new file mode 100644
index 0000000..3d4c4868
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-promise.https.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>navigator.getWakeLock() for the same Document always return same WakeLock promise</title>
+<link rel="help" href="https://w3c.github.io/wake-lock/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+promise_test(async t => {
+  const wakeLock1 = await navigator.getWakeLock("screen");
+  const wakeLock2 = await navigator.getWakeLock("screen");
+  assert_equals(wakeLock1, wakeLock2);
+}, "navigator.getWakeLock() for the same Document always return same WakeLock promise");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-state-is-global.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-state-is-global.https-expected.txt
new file mode 100644
index 0000000..78181e8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-state-is-global.https-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Test that wake lock state should be global promise_test: Unhandled rejection with value: object "TypeError: navigator.getWakeLock is not a function"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-state-is-global.https.html b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-state-is-global.https.html
new file mode 100644
index 0000000..98cebe01
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelock-state-is-global.https.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>wake lock state should be global</title>
+<link rel="help" href="https://w3c.github.io/wake-lock/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<body>
+<script id="iframe" type="text/plain">
+let iframeWakeLock, iframeRequest;
+window.onmessage = async message => {
+  switch(message.data) {
+  case "ACQUIRED":
+    iframeWakeLock = await navigator.getWakeLock("screen");
+    iframeRequest = iframeWakeLock.createRequest();
+    parent.postMessage(iframeWakeLock.active, "*");
+    break;
+  case "RELEASED":
+    iframeRequest.cancel();
+    parent.postMessage(iframeWakeLock.active, "*");
+    break;
+  default:
+    parent.postMessage("unknown operation", "*");
+  }
+}
+</script>
+
+<script>
+function load_iframe() {
+  return new Promise(resolve => {
+    const iframe = document.createElement("iframe");
+    iframe.onload = () => { resolve(iframe); };
+    iframe.srcdoc = "<script>" +
+                    document.getElementById('iframe').textContent +
+                    "<\/script>";
+    document.body.appendChild(iframe);
+  });
+}
+
+function wait_for_message(iframe) {
+  return new Promise(resolve => {
+    self.addEventListener("message", function listener(e) {
+      if (e.source === iframe.contentWindow) {
+        resolve(e.data);
+        self.removeEventListener("message", listener);
+      }
+    });
+  });
+}
+
+promise_test(async t => {
+  const wakeLock = await navigator.getWakeLock("screen");
+  const iframe = await load_iframe();
+  const eventWatcher = new EventWatcher(t, wakeLock, "activechange");
+
+  assert_false(wakeLock.active, "wakeLock is initially false");
+
+  //when iframe wake lock is acquired, parent wake lock should be actived
+  iframe.contentWindow.postMessage("ACQUIRED", "*");
+  const isActive1 = await wait_for_message(iframe);
+  await eventWatcher.wait_for("activechange");
+  assert_true(isActive1, "the iframe wake lock state is actived when iframe wake lock is acquired");
+  assert_true(wakeLock.active, "the wake lock state is actived when iframe wake lock is acquired");
+
+  //when iframe wake lock is released, parent wake lock should be inactived
+  iframe.contentWindow.postMessage("RELEASED", "*");
+  const isActive2 = await wait_for_message(iframe);
+  eventWatcher.wait_for("activechange");
+  assert_false(isActive2, "the iframe wake lock state is inactived when iframe wake lock is released");
+  assert_false(wakeLock.active, "the wake lock state is inactived when iframe wake lock is released");
+}, "Test that wake lock state should be global");
+</script>
+</body>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelockrequest-is-independent.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelockrequest-is-independent.https-expected.txt
new file mode 100644
index 0000000..577bf6f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelockrequest-is-independent.https-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Test that the WakeLockRequest object is independent. promise_test: Unhandled rejection with value: object "TypeError: navigator.getWakeLock is not a function"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelockrequest-is-independent.https.html b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelockrequest-is-independent.https.html
new file mode 100644
index 0000000..a113b00
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/wake-lock/wakelockrequest-is-independent.https.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>WakeLockRequest object is independent</title>
+<link rel="help" href="https://w3c.github.io/wake-lock/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+promise_test(async t => {
+  const wakeLock1 = await navigator.getWakeLock("screen");
+  const wakeLock2 = await navigator.getWakeLock("screen");
+  const request1 = wakeLock1.createRequest();
+  const request2 = wakeLock2.createRequest();
+  assert_not_equals(request1, request2);
+}, "Test that the WakeLockRequest object is independent.");
+</script>
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/blob/Blob-XHR-revoke-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/blob/Blob-XHR-revoke-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/blob/Blob-XHR-revoke-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/fileReader-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/fileReader-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/fileReader-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/reading-data-section/FileReader-event-handler-attributes-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/reading-data-section/FileReader-event-handler-attributes-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/reading-data-section/FileReader-event-handler-attributes-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/reading-data-section/filereader_readAsText-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/reading-data-section/filereader_readAsText-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/FileAPI/reading-data-section/filereader_readAsText-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/WebIDL/ecmascript-binding/interface-object-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/WebIDL/ecmascript-binding/interface-object-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/WebIDL/ecmascript-binding/interface-object-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/XMLHttpRequest/event-load-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/XMLHttpRequest/event-load-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/XMLHttpRequest/event-load-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/XMLHttpRequest/open-after-abort-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/XMLHttpRequest/open-after-abort-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/XMLHttpRequest/open-after-abort-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/connect-src/connect-src-beacon-blocked.sub-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/connect-src/connect-src-beacon-blocked.sub-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/connect-src/connect-src-beacon-blocked.sub-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/font-src/font-match-allowed.sub-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/font-src/font-match-allowed.sub-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/font-src/font-match-allowed.sub-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/font-src/font-none-blocked.sub-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/font-src/font-none-blocked.sub-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/font-src/font-none-blocked.sub-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/frame-ancestors/frame-ancestors-self-block-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/frame-ancestors/frame-ancestors-self-block-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/frame-ancestors/frame-ancestors-self-block-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/frame-ancestors/frame-ancestors-url-block-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/frame-ancestors/frame-ancestors-url-block-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/frame-ancestors/frame-ancestors-url-block-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/img-src/img-src-host-partial-wildcard-allowed.sub-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/img-src/img-src-host-partial-wildcard-allowed.sub-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/img-src/img-src-host-partial-wildcard-allowed.sub-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/img-src/img-src-none-blocks-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/img-src/img-src-none-blocks-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/img-src/img-src-none-blocks-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/meta/meta-modified-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/meta/meta-modified-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/meta/meta-modified-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/securitypolicyviolation/blockeduri-eval-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/securitypolicyviolation/blockeduri-eval-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/securitypolicyviolation/blockeduri-eval-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/style-src/style-src-inline-style-attribute-allowed-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/style-src/style-src-inline-style-attribute-allowed-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/style-src/style-src-inline-style-attribute-allowed-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/style-src/style-src-stylesheet-nonce-allowed-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/style-src/style-src-stylesheet-nonce-allowed-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/style-src/style-src-stylesheet-nonce-allowed-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/svg/svg-from-guid-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/svg/svg-from-guid-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/content-security-policy/svg/svg-from-guid-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-align/content-distribution/place-content-shorthand-002-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-align/content-distribution/place-content-shorthand-002-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-align/content-distribution/place-content-shorthand-002-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-align/content-distribution/place-content-shorthand-003-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-align/content-distribution/place-content-shorthand-003-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-align/content-distribution/place-content-shorthand-003-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-align/default-alignment/place-items-shorthand-001-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-align/default-alignment/place-items-shorthand-001-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-align/default-alignment/place-items-shorthand-001-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-display/display-contents-computed-style-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-display/display-contents-computed-style-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-display/display-contents-computed-style-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-grid/grid-layout-properties-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-grid/grid-layout-properties-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-grid/grid-layout-properties-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-typed-om/CSSMatrixComponent-DOMMatrix-mutable-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-typed-om/CSSMatrixComponent-DOMMatrix-mutable-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-typed-om/CSSMatrixComponent-DOMMatrix-mutable-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-typed-om/declared-styleMap-accepts-inherit-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-typed-om/declared-styleMap-accepts-inherit-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/css-typed-om/declared-styleMap-accepts-inherit-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom-view/cssom-view-window-screen-interface-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom-view/cssom-view-window-screen-interface-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom-view/cssom-view-window-screen-interface-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom-view/cssom-view/media-query-list-interface-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom-view/cssom-view/media-query-list-interface-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom-view/cssom-view/media-query-list-interface-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom/cssom-cssText-serialize-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom/cssom-cssText-serialize-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom/cssom-cssText-serialize-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom/medialist-interfaces-004-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom/medialist-interfaces-004-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/css/cssom/medialist-interfaces-004-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/HTMLElement-constructor-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/HTMLElement-constructor-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/HTMLElement-constructor-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/parser/parser-constructs-custom-element-in-document-write-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/parser/parser-constructs-custom-element-in-document-write-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/parser/parser-constructs-custom-element-in-document-write-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/parser/parser-constructs-custom-elements-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/parser/parser-constructs-custom-elements-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/parser/parser-constructs-custom-elements-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/reactions/Attr-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/reactions/Attr-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/reactions/Attr-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/reactions/Selection-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/reactions/Selection-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/reactions/Selection-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/upgrading/upgrading-parser-created-element-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/upgrading/upgrading-parser-created-element-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/custom-elements/upgrading/upgrading-parser-created-element-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/collections/HTMLCollection-as-proto-length-get-throws-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/collections/HTMLCollection-as-proto-length-get-throws-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/collections/HTMLCollection-as-proto-length-get-throws-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/AddEventListenerOptions-once-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/AddEventListenerOptions-once-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/AddEventListenerOptions-once-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/CustomEvent-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/CustomEvent-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/CustomEvent-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/Event-defaultPrevented-after-dispatch-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/Event-defaultPrevented-after-dispatch-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/Event-defaultPrevented-after-dispatch-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/Event-dispatch-order-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/Event-dispatch-order-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/events/Event-dispatch-order-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/interface-objects-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/interface-objects-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/interface-objects-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/lists/DOMTokenList-value-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/lists/DOMTokenList-value-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/lists/DOMTokenList-value-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/nodes/CharacterData-surrogates-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/nodes/CharacterData-surrogates-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/nodes/CharacterData-surrogates-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/nodes/Document-contentType/contentType/createHTMLDocument-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/nodes/Document-contentType/contentType/createHTMLDocument-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/nodes/Document-contentType/contentType/createHTMLDocument-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/nodes/Node-lookupPrefix-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/nodes/Node-lookupPrefix-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/nodes/Node-lookupPrefix-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/ranges/Range-constructor-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/ranges/Range-constructor-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/ranges/Range-constructor-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/traversal/NodeFilter-constants-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/traversal/NodeFilter-constants-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/traversal/NodeFilter-constants-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/traversal/TreeWalker-walking-outside-a-tree-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/traversal/TreeWalker-walking-outside-a-tree-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/dom/traversal/TreeWalker-walking-outside-a-tree-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/domparsing/innerhtml-03-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/domparsing/innerhtml-03-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/domparsing/innerhtml-03-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/domparsing/innerhtml-04-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/domparsing/innerhtml-04-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/domparsing/innerhtml-04-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/domxpath/001-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/domxpath/001-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/domxpath/001-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/encoding/iso-2022-jp-encoder-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/encoding/iso-2022-jp-encoder-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/encoding/iso-2022-jp-encoder-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/encoding/textdecoder-fatal-streaming-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/encoding/textdecoder-fatal-streaming-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/encoding/textdecoder-fatal-streaming-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/basic/scheme-blob-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/basic/scheme-blob-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/basic/scheme-blob-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/headers/headers-casing-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/headers/headers-casing-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/headers/headers-casing-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/headers/headers-structure-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/headers/headers-structure-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/headers/headers-structure-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/policies/referrer-unsafe-url-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/policies/referrer-unsafe-url-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/policies/referrer-unsafe-url-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/request/request-clone.sub-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/request/request-clone.sub-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/request/request-clone.sub-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/response/response-static-error-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/response/response-static-error-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fetch/api/response/response-static-error-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fullscreen/api/element-request-fullscreen-not-allowed-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/fullscreen/api/element-request-fullscreen-not-allowed-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/fullscreen/api/element-request-fullscreen-not-allowed-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/gamepad/idlharness-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/gamepad/idlharness-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/gamepad/idlharness-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html-imports/document/document-method-changes-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html-imports/document/document-method-changes-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html-imports/document/document-method-changes-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html-imports/fetching/already-in-import-map-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html-imports/fetching/already-in-import-map-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html-imports/fetching/already-in-import-map-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html-imports/fetching/loading-attempt-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html-imports/fetching/loading-attempt-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html-imports/fetching/loading-attempt-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/001-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/001-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/001-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_back-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_back-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_back-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_pushstate-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_pushstate-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_pushstate-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_replacestate_err-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_replacestate_err-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_replacestate_err-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_replacestate_nooptionalparam-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_replacestate_nooptionalparam-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/history/the-history-interface/history_replacestate_nooptionalparam-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/offline/application-cache-api/api_update_error-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/offline/application-cache-api/api_update_error-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/offline/application-cache-api/api_update_error-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/offline/introduction-4/event_cached-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/offline/introduction-4/event_cached-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/offline/introduction-4/event_cached-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-null-names-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-null-names-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-null-names-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null-undef-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null-undef-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null-undef-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-same-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-same-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-same-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/dynamic-markup-insertion/document-write/042-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/dynamic-markup-insertion/document-write/042-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/dynamic-markup-insertion/document-write/042-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/elements/global-attributes/dataset-get-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/elements/global-attributes/dataset-get-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/elements/global-attributes/dataset-get-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/elements/global-attributes/the-translate-attribute-010-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/elements/global-attributes/the-translate-attribute-010-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/dom/elements/global-attributes/the-translate-attribute-010-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/activation/click-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/activation/click-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/activation/click-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/dnd/dom/draggable-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/dnd/dom/draggable-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/dnd/dom/draggable-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/focus/focus-management/focus-event-targets-simple-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/focus/focus-management/focus-event-targets-simple-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/focus/focus-management/focus-event-targets-simple-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/focus/focus-management/focus-events-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/focus/focus-management/focus-events-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/editing/focus/focus-management/focus-events-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/infrastructure/common-dom-interfaces/collections/htmloptionscollection-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/infrastructure/common-dom-interfaces/collections/htmloptionscollection-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/infrastructure/common-dom-interfaces/collections/htmloptionscollection-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/document-all-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/document-all-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/document-all-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-standards-mode-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-standards-mode-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-standards-mode-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/document-metadata/the-base-element/base_href_empty-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/document-metadata/the-base-element/base_href_empty-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/document-metadata/the-base-element/base_href_empty-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/document-metadata/the-title-element/title.text-02-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/document-metadata/the-title-element/title.text-02-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/document-metadata/the-title-element/title.text-02-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/edits/the-del-element/del_effect-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/edits/the-del-element/del_effect-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/edits/the-del-element/del_effect-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/edits/the-ins-element/ins_effect-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/edits/the-ins-element/ins_effect-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/edits/the-ins-element/ins_effect-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackCue/onexit-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackCue/onexit-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackCue/onexit-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source-in-div-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source-in-div-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source-in-div-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/forms/textfieldselection/selection-not-application-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/forms/textfieldselection/selection-not-application-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/forms/textfieldselection/selection-not-application-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/grouping-content/the-ol-element/ol.start-reflection-1-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/grouping-content/the-ol-element/ol.start-reflection-1-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/grouping-content/the-ol-element/ol.start-reflection-1-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_getter-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_getter-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_getter-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/scripting-1/the-script-element/scripting-enabled-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/scripting-1/the-script-element/scripting-enabled-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/scripting-1/the-script-element/scripting-enabled-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/selectors/pseudo-classes/dir01-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/selectors/pseudo-classes/dir01-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/selectors/pseudo-classes/dir01-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/selectors/pseudo-classes/required-optional-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/selectors/pseudo-classes/required-optional-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/selectors/pseudo-classes/required-optional-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/tabular-data/the-table-element/caption-methods-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/tabular-data/the-table-element/caption-methods-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/tabular-data/the-table-element/caption-methods-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/tabular-data/the-table-element/table-insertRow-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/tabular-data/the-table-element/table-insertRow-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/tabular-data/the-table-element/table-insertRow-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/text-level-semantics/the-a-element/a.text-setter-01-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/text-level-semantics/the-a-element/a.text-setter-01-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/text-level-semantics/the-a-element/a.text-setter-01-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/text-level-semantics/the-time-element/001-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/text-level-semantics/the-time-element/001-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/semantics/text-level-semantics/the-time-element/001-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing-html-fragments/the-input-byte-stream-016-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing-html-fragments/the-input-byte-stream-016-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing-html-fragments/the-input-byte-stream-016-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing/Document.getElementsByTagName-foreign-01-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing/Document.getElementsByTagName-foreign-01-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing/Document.getElementsByTagName-foreign-01-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing/Document.getElementsByTagName-foreign-02-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing/Document.getElementsByTagName-foreign-02-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing/Document.getElementsByTagName-foreign-02-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing/template/additions-to-foster-parenting/template-is-a-foster-parent-element-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing/template/additions-to-foster-parenting/template-is-a-foster-parent-element-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/syntax/parsing/template/additions-to-foster-parenting/template-is-a-foster-parent-element-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/animation-frames/same-dispatch-time-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/animation-frames/same-dispatch-time-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/animation-frames/same-dispatch-time-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/timers/type-long-setinterval-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/timers/type-long-setinterval-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/timers/type-long-setinterval-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/timers/type-long-settimeout-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/timers/type-long-settimeout-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/html/webappapis/timers/type-long-settimeout-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/innerText/setter-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/innerText/setter-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/innerText/setter-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/input-events/idlharness-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/input-events/idlharness-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/input-events/idlharness-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/media-capabilities/decodingInfo-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/media-capabilities/decodingInfo-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/media-capabilities/decodingInfo-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediacapture-record/BlobEvent-constructor-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediacapture-record/BlobEvent-constructor-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediacapture-record/BlobEvent-constructor-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediasession/mediametadata-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediasession/mediametadata-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediasession/mediametadata-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediasession/playbackstate-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediasession/playbackstate-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediasession/playbackstate-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediasession/setactionhandler-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediasession/setactionhandler-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/mediasession/setactionhandler-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/navigation-timing/nav2_test_instance_accessible_from_the_start-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/navigation-timing/nav2_test_instance_accessible_from_the_start-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/navigation-timing/nav2_test_instance_accessible_from_the_start-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/navigation-timing/test_navigation_redirectCount_none-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/navigation-timing/test_navigation_redirectCount_none-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/navigation-timing/test_navigation_redirectCount_none-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/orientation-event/devicemotionevent-init-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/orientation-event/devicemotionevent-init-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/orientation-event/devicemotionevent-init-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/pointerevents/pointerevent_touch-action-illegal-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/pointerevents/pointerevent_touch-action-illegal-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/pointerevents/pointerevent_touch-action-illegal-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/preload/avoid-delaying-onload-link-preload-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/preload/avoid-delaying-onload-link-preload-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/preload/avoid-delaying-onload-link-preload-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/generic/subresource-test/attr-referrer-invalid-value-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/generic/subresource-test/attr-referrer-invalid-value-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/generic/subresource-test/attr-referrer-invalid-value-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/origin/meta-referrer/cross-origin/http-http/xhr-request/generic.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/origin/meta-referrer/cross-origin/http-http/xhr-request/generic.no-redirect.http-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/referrer-policy/origin/meta-referrer/cross-origin/http-http/xhr-request/generic.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/selection/Document-open-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/selection/Document-open-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/selection/Document-open-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/service-workers/service-worker/rejections.https-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/service-workers/service-worker/rejections.https-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/service-workers/service-worker/rejections.https-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/Element-interface-shadowRoot-attribute-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/Element-interface-shadowRoot-attribute-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/Element-interface-shadowRoot-attribute-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/event-with-related-target-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/event-with-related-target-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/event-with-related-target-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/dom-tree-accessors-002-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/dom-tree-accessors-002-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/dom-tree-accessors-002-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/untriaged/styles/test-008-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/untriaged/styles/test-008-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/shadow-dom/untriaged/styles/test-008-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/byte-length-queuing-strategy-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/byte-length-queuing-strategy-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/byte-length-queuing-strategy-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/piping/close-propagation-backward-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/piping/close-propagation-backward-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/piping/close-propagation-backward-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/piping/multiple-propagation-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/piping/multiple-propagation-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/piping/multiple-propagation-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/readable-streams/floating-point-total-queue-size-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/readable-streams/floating-point-total-queue-size-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/readable-streams/floating-point-total-queue-size-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/writable-streams/bad-strategies-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/writable-streams/bad-strategies-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/writable-streams/bad-strategies-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/writable-streams/brand-checks-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/writable-streams/brand-checks-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/streams/writable-streams/brand-checks-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/touch-events/historical-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/touch-events/historical-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/touch-events/historical-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/touch-events/touch-globaleventhandler-interface-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/touch-events/touch-globaleventhandler-interface-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/touch-events/touch-globaleventhandler-interface-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/touch-events/touch-retargeting-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/touch-events/touch-retargeting-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/touch-events/touch-retargeting-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/uievents/legacy-domevents-tests/approved/stopPropagation.deferred.effect-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/uievents/legacy-domevents-tests/approved/stopPropagation.deferred.effect-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/uievents/legacy-domevents-tests/approved/stopPropagation.deferred.effect-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/uievents/legacy-domevents-tests/submissions/Microsoft/converted/EventListener.dispatch.new.event-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/uievents/legacy-domevents-tests/submissions/Microsoft/converted/EventListener.dispatch.new.event-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/uievents/legacy-domevents-tests/submissions/Microsoft/converted/EventListener.dispatch.new.event-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/uievents/order-of-events/focus-events/focus-automated-blink-webkit-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/uievents/order-of-events/focus-events/focus-automated-blink-webkit-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/uievents/order-of-events/focus-events/focus-automated-blink-webkit-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/user-timing/invoke_with_timing_attributes-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/user-timing/invoke_with_timing_attributes-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/user-timing/invoke_with_timing_attributes-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/user-timing/invoke_without_parameter-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/user-timing/invoke_without_parameter-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/user-timing/invoke_without_parameter-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/animation-model/combining-effects/effect-composition-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/animation-model/combining-effects/effect-composition-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/animation-model/combining-effects/effect-composition-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/animation-model/keyframe-effects/effect-value-context-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/animation-model/keyframe-effects/effect-value-context-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/animation-model/keyframe-effects/effect-value-context-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/Animatable/getAnimations-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/Animatable/getAnimations-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/Animatable/getAnimations-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/Animation/ready-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/Animation/ready-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/Animation/ready-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/AnimationEffectTiming/delay-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/AnimationEffectTiming/delay-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/AnimationEffectTiming/delay-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/Document/getAnimations-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/Document/getAnimations-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/Document/getAnimations-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/DocumentTimeline/constructor-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/DocumentTimeline/constructor-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/DocumentTimeline/constructor-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/KeyframeEffect/composite-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/KeyframeEffect/composite-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/interfaces/KeyframeEffect/composite-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/animation-effects/active-time-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/animation-effects/active-time-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/animation-effects/active-time-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/animations/finishing-an-animation-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/animations/finishing-an-animation-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/animations/finishing-an-animation-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/animations/set-the-animation-start-time-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/animations/set-the-animation-start-time-expected.txt
index 231fddb2..cc38ff5 100644
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/animations/set-the-animation-start-time-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/animations/set-the-animation-start-time-expected.txt
@@ -1,5 +1,10 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
+This is a testharness.js-based test.
+FAIL Setting the start time of an animation without an active timeline assert_equals: Setting the start time clears the current time expected (object) null but got (number) -463.4576666666703
+FAIL Setting an unresolved start time an animation without an active timeline does not clear the current time assert_equals: Start time remains unresolved expected (object) null but got (number) 0
+PASS Setting the start time clears the hold time
+FAIL Setting an unresolved start time sets the hold time assert_approx_equals: Hold time is set after start time is made unresolved expected 1000 +/- 0.0005 but got 536.5423333333297
+FAIL Setting the start time resolves a pending ready promise assert_true: Animation is in play-pending state expected true got undefined
+FAIL Setting the start time resolves a pending pause task assert_true: Animation is in pause-pending state expected true got undefined
+FAIL Setting the start time updates the finished state assert_greater_than: Setting the start time updated the finished state with the 'did seek' flag set to true expected a number greater than 100000 but got 100000
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/time-transformations/transformed-progress-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/time-transformations/transformed-progress-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/web-animations/timing-model/time-transformations/transformed-progress-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/Channel_postMessage_DataCloneErr-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/Channel_postMessage_DataCloneErr-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/Channel_postMessage_DataCloneErr-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/Channel_postMessage_target_source-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/Channel_postMessage_target_source-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/Channel_postMessage_target_source-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/broadcastchannel/basics-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/broadcastchannel/basics-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/broadcastchannel/basics-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/broadcastchannel/interface-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/broadcastchannel/interface-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/broadcastchannel/interface-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/message-channels/001-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/message-channels/001-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/message-channels/001-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/with-ports/002-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/with-ports/002-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/with-ports/002-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/with-ports/014-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/with-ports/014-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/with-ports/014-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/without-ports/003-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/without-ports/003-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/without-ports/003-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/without-ports/006-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/without-ports/006-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/without-ports/006-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/without-ports/013-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/without-ports/013-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webmessaging/without-ports/013-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webrtc/simplecall-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webrtc/simplecall-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webrtc/simplecall-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webstorage/storage_key-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webstorage/storage_key-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webstorage/storage_key-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webstorage/storage_length-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webstorage/storage_length-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webstorage/storage_length-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/api/VTTCue/size-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/api/VTTCue/size-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/api/VTTCue/size-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/api/VTTRegion/constructor-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/api/VTTRegion/constructor-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/api/VTTRegion/constructor-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/api/VTTRegion/regionAnchorX-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/api/VTTRegion/regionAnchorX-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/api/VTTRegion/regionAnchorX-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/parsing/file-parsing/tests/settings-line-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/parsing/file-parsing/tests/settings-line-expected.txt
deleted file mode 100644
index b39aff9..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/parsing/file-parsing/tests/settings-line-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL settings, lineassert_equals: Failed with cue 9 expected 1e+34 but got 9.999999790214768e+33
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/parsing/file-parsing/tests/timings-too-short-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/parsing/file-parsing/tests/timings-too-short-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/webvtt/parsing/file-parsing/tests/timings-too-short-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/Worker_dispatchEvent_ErrorEvent-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/Worker_dispatchEvent_ErrorEvent-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/Worker_dispatchEvent_ErrorEvent-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/constructors/SharedWorker/unresolvable-url-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/constructors/SharedWorker/unresolvable-url-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/constructors/SharedWorker/unresolvable-url-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/constructors/Worker/no-arguments-ctor-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/constructors/Worker/no-arguments-ctor-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/constructors/Worker/no-arguments-ctor-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/second-argument-null-in-array-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/second-argument-null-in-array-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/second-argument-null-in-array-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/interfaces/WorkerGlobalScope/close/sending-messages-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/interfaces/WorkerGlobalScope/close/sending-messages-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/interfaces/WorkerGlobalScope/close/sending-messages-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/interfaces/WorkerUtils/navigator/005-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/interfaces/WorkerUtils/navigator/005-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/interfaces/WorkerUtils/navigator/005-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/encodings/001-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/encodings/001-expected.txt
deleted file mode 100644
index cdc4d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/encodings/001-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 980x735
-  LayoutView at (0,0) size 980x735
-layer at (0,0) size 980x735
-  LayoutBlockFlow {HTML} at (0,0) size 980x735
-    LayoutBlockFlow {BODY} at (8,8) size 964x719
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/multiple-workers/008-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/multiple-workers/008-expected.txt
index 231fddb2..cfe8169 100644
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/multiple-workers/008-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/multiple-workers/008-expected.txt
@@ -1,5 +1,4 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
+This is a testharness.js-based test.
+FAIL messagechannel in shared worker SharedWorker is not defined
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/reporting-errors/002-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/reporting-errors/002-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/reporting-errors/002-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/run-a-worker/001-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/run-a-worker/001-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/run-a-worker/001-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/xhr/002-expected.txt b/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/xhr/002-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/external/wpt/workers/semantics/xhr/002-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/LayoutTests/platform/android/virtual/mojo-localstorage/external/wpt/webstorage/storage_enumerate-expected.txt b/third_party/WebKit/LayoutTests/platform/android/virtual/mojo-localstorage/external/wpt/webstorage/storage_enumerate-expected.txt
deleted file mode 100644
index 231fddb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/virtual/mojo-localstorage/external/wpt/webstorage/storage_enumerate-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_box_state.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_box_state.cc
index edaed3b..c35f21a 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_box_state.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_box_state.cc
@@ -270,9 +270,10 @@
   // |text0|text1|null |null | box |text5|
   for (const BoxFragmentPlaceholder& placeholder : box_placeholders_) {
     const ComputedStyle* style = placeholder.item->Style();
+    // Because children are already in the visual order, use LTR for the
+    // fragment builder so that it should not transform the coordinates for RTL.
     NGFragmentBuilder box(placeholder.item->GetLayoutObject(), style,
-                          style->GetWritingMode(),
-                          placeholder.item->Direction());
+                          style->GetWritingMode(), TextDirection::kLtr);
     const NGLogicalOffset& box_offset =
         (*line_box)[placeholder.fragment_end].offset;
     for (unsigned i = placeholder.fragment_start; i < placeholder.fragment_end;