diff --git a/DEPS b/DEPS
index 9b4f54ac..50c35b1 100644
--- a/DEPS
+++ b/DEPS
@@ -82,7 +82,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': '3a16c856cbe26b11cc603e105c60a043727703dc',
+  'v8_revision': '99a1beae7fce084459d540fa5bef1c4cd9d9fc38',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -102,7 +102,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': '1986bdfb19614b1bf18941b89ded895e237b53ae',
+  'pdfium_revision': '208eecfa7850ced5c0d776b9e5df5b104428608f',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling openmax_dl
   # and whatever else without interference from each other.
@@ -134,7 +134,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': 'a586b0072a208470e55680d2d6f097e5b7c674ff',
+  'catapult_revision': '698f9fc1eec6508c91d1cb8621d1e6c25bf5934e',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -322,12 +322,12 @@
   },
 
   'src/third_party/custom_tabs_client/src': {
-      'url': Var('chromium_git') + '/custom-tabs-client.git' + '@' + 'afe8a13457103292fb1ba49877a0b0e5abdc2f36',
+      'url': Var('chromium_git') + '/custom-tabs-client.git' + '@' + 'a0b6c6f7db4127c191ebb9ef008609224658edb2',
       'condition': 'checkout_android',
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '9b5cb92fa457c8f61a058c6584c3bec233088c3b',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '72572b8c8d21b9e36fc1839f0ed239f0bce249c1',
 
   # DevTools node modules. Used on Linux buildbots only.
   'src/third_party/devtools-node-modules': {
@@ -484,7 +484,7 @@
     Var('chromium_git') + '/webm/libwebm.git' + '@' + '4956b2dec65352af32dc71bab553acb631c64177',
 
   'src/third_party/libyuv':
-    Var('chromium_git') + '/libyuv/libyuv.git' + '@' + 'd94a4867bf8be91e4c0fa8b7a4133ba060fe524f',  # from r1682
+    Var('chromium_git') + '/libyuv/libyuv.git' + '@' + '56480051e074f8d75f62fcabde9164fc51817467',  # from r1688
 
   'src/third_party/lighttpd': {
       'url': Var('chromium_git') + '/chromium/deps/lighttpd.git' + '@' + Var('lighttpd_revision'),
@@ -643,7 +643,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'd458ada06171a85af00367251a4ed55db7fe2018',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '56adc122cf1ef592d113f52fd096a647c6bcdc53', # commit position 20628
+    Var('webrtc_git') + '/src.git' + '@' + 'ec8410796af7f7f67cd2018e85aaefc160e4bfa3', # commit position 20628
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
@@ -1146,7 +1146,7 @@
                 'src/third_party/catapult/telemetry/bin/fetch_telemetry_binary_dependencies',
     ],
   },
-	#
+        #
   # Download Telemetry's benchmark binary dependencies via conditionals
   {
     'name': 'checkout_telemetry_benchmark_deps',
diff --git a/base/files/dir_reader_posix.h b/base/files/dir_reader_posix.h
index 6a32d9f..15fc744f 100644
--- a/base/files/dir_reader_posix.h
+++ b/base/files/dir_reader_posix.h
@@ -17,7 +17,7 @@
 // seems worse than falling back to enumerating all file descriptors so we will
 // probably never implement this on the Mac.
 
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_ANDROID)
 #include "base/files/dir_reader_linux.h"
 #else
 #include "base/files/dir_reader_fallback.h"
@@ -25,7 +25,7 @@
 
 namespace base {
 
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_ANDROID)
 typedef DirReaderLinux DirReaderPosix;
 #else
 typedef DirReaderFallback DirReaderPosix;
diff --git a/base/process/process_metrics.h b/base/process/process_metrics.h
index 52a5912a..7a12b6e 100644
--- a/base/process/process_metrics.h
+++ b/base/process/process_metrics.h
@@ -245,7 +245,7 @@
   // otherwise.
   bool GetIOCounters(IoCounters* io_counters) const;
 
-#if defined(OS_LINUX) || defined(OS_AIX)
+#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_ANDROID)
   // Returns the number of file descriptors currently open by the process, or
   // -1 on error.
   int GetOpenFdCount() const;
@@ -253,7 +253,7 @@
   // Returns the soft limit of file descriptors that can be opened by the
   // process, or -1 on error.
   int GetOpenFdSoftLimit() const;
-#endif  // defined(OS_LINUX) || defined(OS_AIX)
+#endif  // defined(OS_LINUX) || defined(OS_AIX) || defined(OS_ANDROID)
 
 #if defined(OS_LINUX) || defined(OS_ANDROID)
   // Bytes of swap as reported by /proc/[pid]/status.
diff --git a/base/process/process_metrics_linux.cc b/base/process/process_metrics_linux.cc
index 1fb76e5a..d8c1e1c1 100644
--- a/base/process/process_metrics_linux.cc
+++ b/base/process/process_metrics_linux.cc
@@ -352,7 +352,6 @@
 }
 #endif  // defined(OS_LINUX) || defined(OS_ANDROID)
 
-#if defined(OS_LINUX) || defined(OS_AIX)
 int ProcessMetrics::GetOpenFdCount() const {
   // Use /proc/<pid>/fd to count the number of entries there.
   FilePath fd_path = internal::GetProcPidDir(process_).Append("fd");
@@ -395,7 +394,6 @@
   }
   return -1;
 }
-#endif  // defined(OS_LINUX) || defined(OS_AIX)
 
 ProcessMetrics::ProcessMetrics(ProcessHandle process)
     : process_(process),
diff --git a/base/process/process_metrics_unittest.cc b/base/process/process_metrics_unittest.cc
index fdf9c96a..c622050 100644
--- a/base/process/process_metrics_unittest.cc
+++ b/base/process/process_metrics_unittest.cc
@@ -550,7 +550,8 @@
 #if defined(OS_LINUX)
 namespace {
 
-// Keep these in sync so the GetOpenFdCount test can refer to correct test main.
+// Keep these in sync so the GetChildOpenFdCount test can refer to correct test
+// main.
 #define ChildMain ChildFdCount
 #define ChildMainString "ChildFdCount"
 
@@ -596,7 +597,7 @@
 
 }  // namespace
 
-TEST(ProcessMetricsTest, GetOpenFdCount) {
+TEST(ProcessMetricsTest, GetChildOpenFdCount) {
   ScopedTempDir temp_dir;
   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
   const FilePath temp_path = temp_dir.GetPath();
@@ -615,6 +616,20 @@
 #endif  // defined(OS_LINUX)
 
 #if defined(OS_ANDROID) || defined(OS_LINUX)
+
+TEST(ProcessMetricsTest, GetOpenFdCount) {
+  std::unique_ptr<base::ProcessMetrics> metrics(
+      base::ProcessMetrics::CreateProcessMetrics(
+          base::GetCurrentProcessHandle()));
+  int fd_count = metrics->GetOpenFdCount();
+  EXPECT_GT(fd_count, 0);
+  ScopedFILE file(fopen("/proc/self/statm", "r"));
+  EXPECT_TRUE(file);
+  int new_fd_count = metrics->GetOpenFdCount();
+  EXPECT_GT(new_fd_count, 0);
+  EXPECT_EQ(new_fd_count, fd_count + 1);
+}
+
 TEST(ProcessMetricsTestLinux, GetPageFaultCounts) {
   std::unique_ptr<base::ProcessMetrics> process_metrics(
       base::ProcessMetrics::CreateProcessMetrics(
diff --git a/cc/resources/resource_provider_unittest.cc b/cc/resources/resource_provider_unittest.cc
index 800510d..24e8dc3 100644
--- a/cc/resources/resource_provider_unittest.cc
+++ b/cc/resources/resource_provider_unittest.cc
@@ -18,6 +18,7 @@
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
+#include "cc/test/render_pass_test_utils.h"
 #include "cc/test/test_context_provider.h"
 #include "cc/test/test_shared_bitmap_manager.h"
 #include "cc/test/test_texture.h"
@@ -548,9 +549,9 @@
 };
 
 void CheckCreateResource(viz::ResourceType expected_default_type,
-                         DisplayResourceProvider* resource_provider,
+                         LayerTreeResourceProvider* child_resource_provider,
                          ResourceProviderContext* context) {
-  DCHECK_EQ(resource_provider->IsSoftware(),
+  DCHECK_EQ(child_resource_provider->IsSoftware(),
             expected_default_type == viz::ResourceType::kBitmap);
 
   gfx::Size size(1, 1);
@@ -558,29 +559,26 @@
   size_t pixel_size = TextureSizeBytes(size, format);
   ASSERT_EQ(4U, pixel_size);
 
-  viz::ResourceId id = resource_provider->CreateResource(
+  viz::ResourceId id = child_resource_provider->CreateResource(
       size, viz::ResourceTextureHint::kDefault, format, gfx::ColorSpace());
-  EXPECT_EQ(1, static_cast<int>(resource_provider->num_resources()));
+  EXPECT_EQ(1, static_cast<int>(child_resource_provider->num_resources()));
   if (expected_default_type == viz::ResourceType::kTexture)
     EXPECT_EQ(0u, context->NumTextures());
 
   uint8_t data[4] = {1, 2, 3, 4};
-  resource_provider->CopyToResource(id, data, size);
+  child_resource_provider->CopyToResource(id, data, size);
+
   if (expected_default_type == viz::ResourceType::kTexture)
     EXPECT_EQ(1u, context->NumTextures());
 
-  uint8_t result[4] = {0};
-  GetResourcePixels(resource_provider, context, id, size, format, result);
-  EXPECT_EQ(0, memcmp(data, result, pixel_size));
-
-  resource_provider->DeleteResource(id);
-  EXPECT_EQ(0, static_cast<int>(resource_provider->num_resources()));
+  child_resource_provider->DeleteResource(id);
+  EXPECT_EQ(0, static_cast<int>(child_resource_provider->num_resources()));
   if (expected_default_type == viz::ResourceType::kTexture)
     EXPECT_EQ(0u, context->NumTextures());
 }
 
 TEST_P(ResourceProviderTest, Basic) {
-  CheckCreateResource(GetParam(), resource_provider_.get(), context());
+  CheckCreateResource(GetParam(), child_resource_provider_.get(), context());
 }
 
 TEST_P(ResourceProviderTest, SimpleUpload) {
@@ -1812,8 +1810,8 @@
     if (GetParam() == viz::ResourceType::kTexture)
       EXPECT_TRUE(returned_to_child[0].sync_token.HasData());
     child_resource_provider_->ReceiveReturnsFromParent(returned_to_child);
+    EXPECT_EQ(0u, child_resource_provider_->num_resources());
   }
-  EXPECT_EQ(0u, child_resource_provider_->num_resources());
 }
 
 class ResourceProviderTestTextureFilters : public ResourceProviderTest {
diff --git a/cc/tiles/software_image_decode_cache.cc b/cc/tiles/software_image_decode_cache.cc
index 2da87d6e..ca7657c 100644
--- a/cc/tiles/software_image_decode_cache.cc
+++ b/cc/tiles/software_image_decode_cache.cc
@@ -121,22 +121,24 @@
 SkSize GetScaleAdjustment(const ImageDecodeCacheKey& key) {
   // If the requested filter quality did not require scale, then the adjustment
   // is identity.
-  if (key.can_use_original_size_decode() || key.should_use_subrect()) {
+  if (key.type() != ImageDecodeCacheKey::kSubrectAndScale) {
     return SkSize::Make(1.f, 1.f);
-  } else if (key.filter_quality() == kMedium_SkFilterQuality) {
+  } else {
     return MipMapUtil::GetScaleAdjustmentForSize(key.src_rect().size(),
                                                  key.target_size());
-  } else {
-    float x_scale =
-        key.target_size().width() / static_cast<float>(key.src_rect().width());
-    float y_scale = key.target_size().height() /
-                    static_cast<float>(key.src_rect().height());
-    return SkSize::Make(x_scale, y_scale);
   }
 }
 
+// Returns the filter quality to be used with the decoded result of the image.
+// Note that in most cases this yields Low filter quality, meaning bilinear
+// interpolation. This is because the processing for the image would have
+// already been done, including scaling down to a mip level. So what remains is
+// to do a bilinear interpolation. The exception to this is if the developer
+// specified a pixelated effect, which results in a None filter quality (nearest
+// neighbor).
 SkFilterQuality GetDecodedFilterQuality(const ImageDecodeCacheKey& key) {
-  return std::min(key.filter_quality(), kLow_SkFilterQuality);
+  return key.is_nearest_neighbor() ? kNone_SkFilterQuality
+                                   : kLow_SkFilterQuality;
 }
 
 SkImageInfo CreateImageInfo(const SkISize& size, SkColorType color_type) {
@@ -399,7 +401,7 @@
 
   std::unique_ptr<CacheEntry> local_cache_entry;
   // If we can use the original decode, we'll definitely need a decode.
-  if (key.can_use_original_size_decode()) {
+  if (key.type() == ImageDecodeCacheKey::kOriginal) {
     base::AutoUnlock release(lock_);
     local_cache_entry = DoDecodeImage(key, paint_image);
   } else {
@@ -446,18 +448,17 @@
       // unclear how to adjust the src rect to account for the candidate scale
       // if the candidate came from above.
       //
-      // However, if we're in the key.should_use_subrect() case, then this would
-      // generate an exactly same key as we want in the first place, causing
-      // infinite recursion. (There is a CHECK guard for this below, since this
-      // is a pretty bad case.)
+      // However, if the key type is kSubrectOriginal, then this would generate
+      // an exactly same key as we want in the first place, causing infinite
+      // recursion. (There is a CHECK guard for this below, since this is a
+      // pretty bad case.)
       //
-      // In order to avoid this, if we have key.should_use_subrect(), then it
-      // means that we have no scale associated with this key. So, instead, we
-      // use the full image rect as the src for this temporary candidate so that
-      // the GenerateCacheEntryFromCandidate() function will simply extract the
-      // subset and be done with it.
+      // Since kSubrectOriginal means we have no scale, to remedy the situation
+      // we use the full image rect as the src for this temporary candidate.
+      // This way the GenerateCacheEntryFromCandidate() function will simply
+      // extract the subset and be done with it.
       auto src_rect =
-          key.should_use_subrect()
+          key.type() == ImageDecodeCacheKey::kSubrectOriginal
               ? SkIRect::MakeWH(paint_image.width(), paint_image.height())
               : gfx::RectToSkIRect(key.src_rect());
       DrawImage candidate_draw_image(
@@ -480,7 +481,7 @@
       // already been done to generate the candidate.
       local_cache_entry = GenerateCacheEntryFromCandidate(
           key, decoded_draw_image,
-          candidate_key->can_use_original_size_decode());
+          candidate_key->type() == ImageDecodeCacheKey::kOriginal);
     }
 
     // Unref to balance the GetDecodedImageForDrawInternal() call.
@@ -524,7 +525,7 @@
   TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"),
                "SoftwareImageDecodeCache::DoDecodeImage - "
                "decode");
-  DCHECK(!key.should_use_subrect());
+  DCHECK_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   bool result = paint_image.Decode(target_pixels->data(), &target_info,
                                    key.target_color_space().ToSkColorSpace(),
                                    key.frame_key().frame_index());
@@ -548,7 +549,8 @@
       AllocateDiscardable(target_info);
   DCHECK(target_pixels);
 
-  if (key.should_use_subrect()) {
+  if (key.type() == ImageDecodeCacheKey::kSubrectOriginal) {
+    DCHECK(needs_extract_subset);
     TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"),
                  "SoftwareImageDecodeCache::GenerateCacheEntryFromCandidate - "
                  "subrect");
@@ -564,6 +566,7 @@
         SkSize::Make(-key.src_rect().x(), -key.src_rect().y()));
   }
 
+  DCHECK_EQ(key.type(), ImageDecodeCacheKey::kSubrectAndScale);
   TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"),
                "SoftwareImageDecodeCache::GenerateCacheEntryFromCandidate - "
                "scale");
@@ -578,9 +581,12 @@
     DCHECK(result) << key.ToString();
   }
 
+  // Nearest neighbor would only be set in the unscaled case.
+  DCHECK(!key.is_nearest_neighbor());
   SkPixmap target_pixmap(target_info, target_pixels->data(),
                          target_info.minRowBytes());
-  result = decoded_pixmap.scalePixels(target_pixmap, key.filter_quality());
+  // Always use medium quality for scaling.
+  result = decoded_pixmap.scalePixels(target_pixmap, kMedium_SkFilterQuality);
   DCHECK(result) << key.ToString();
   return std::make_unique<CacheEntry>(
       target_info.makeColorSpace(candidate_image.image()->refColorSpace()),
@@ -755,7 +761,42 @@
   return true;
 }
 
-// SoftwareImageDecodeCacheKey
+void SoftwareImageDecodeCache::OnMemoryStateChange(base::MemoryState state) {
+  {
+    base::AutoLock hold(lock_);
+    switch (state) {
+      case base::MemoryState::NORMAL:
+        max_items_in_cache_ = kNormalMaxItemsInCacheForSoftware;
+        break;
+      case base::MemoryState::THROTTLED:
+        max_items_in_cache_ = kThrottledMaxItemsInCacheForSoftware;
+        break;
+      case base::MemoryState::SUSPENDED:
+        max_items_in_cache_ = kSuspendedMaxItemsInCacheForSoftware;
+        break;
+      case base::MemoryState::UNKNOWN:
+        NOTREACHED();
+        return;
+    }
+  }
+}
+
+void SoftwareImageDecodeCache::OnPurgeMemory() {
+  base::AutoLock lock(lock_);
+  ReduceCacheUsageUntilWithinLimit(0);
+}
+
+SoftwareImageDecodeCache::CacheEntry* SoftwareImageDecodeCache::AddCacheEntry(
+    const ImageKey& key) {
+  lock_.AssertAcquired();
+  frame_key_to_image_keys_[key.frame_key()].push_back(key);
+  auto it = decoded_images_.Put(key, std::make_unique<CacheEntry>());
+  it->second.get()->mark_cached();
+  return it->second.get();
+}
+
+// SoftwareImageDecodeCacheKey -------------------------------------------------
+// static
 ImageDecodeCacheKey ImageDecodeCacheKey::FromDrawImage(const DrawImage& image,
                                                        SkColorType color_type) {
   const PaintImage::FrameKey frame_key = image.frame_key();
@@ -777,15 +818,12 @@
   // If the target size is empty, then we'll be skipping the decode anyway, so
   // the filter quality doesn't matter. Early out instead.
   if (target_size.IsEmpty()) {
-    return ImageDecodeCacheKey(frame_key, src_rect, target_size,
-                               image.target_color_space(), kLow_SkFilterQuality,
-                               true /* can_use_original_decode */,
-                               false /* should_use_subrect */);
+    return ImageDecodeCacheKey(frame_key, kOriginal, false, src_rect,
+                               target_size, image.target_color_space());
   }
 
-  // Start with the given filter quality.
-  SkFilterQuality quality = image.filter_quality();
-
+  ProcessingType type = kOriginal;
+  bool is_nearest_neighbor = image.filter_quality() == kNone_SkFilterQuality;
   int mip_level = MipMapUtil::GetLevelForSize(src_rect.size(), target_size);
   // If any of the following conditions hold, then use at most low filter
   // quality and adjust the target size to match the original image:
@@ -796,15 +834,14 @@
   //   filter quality.
   // - Matrix is not decomposable: There's perspective on this image and we
   //   can't determine the size, so use the original.
-  if (quality == kNone_SkFilterQuality ||
-      color_type == kARGB_4444_SkColorType || mip_level == 0 ||
-      !image.matrix_is_decomposable()) {
-    quality = std::min(quality, kLow_SkFilterQuality);
+  if (is_nearest_neighbor || color_type == kARGB_4444_SkColorType ||
+      mip_level == 0 || !image.matrix_is_decomposable()) {
+    type = kOriginal;
     // Update the size to be the original image size.
     target_size =
         gfx::Size(image.paint_image().width(), image.paint_image().height());
   } else {
-    quality = kMedium_SkFilterQuality;
+    type = kSubrectAndScale;
     // Update the target size to be a mip level size.
     // TODO(vmpstr): MipMapUtil and JPEG decoders disagree on what to do with
     // odd sizes. If width = 2k + 1, and the mip level is 1, then this will
@@ -816,14 +853,9 @@
     target_size.set_height(src_rect.height() * mip_scale_adjustment.height());
   }
 
-  // Now the quality is fixed, determine the other parameters we need.
-  bool can_use_original_size_decode =
-      quality == kLow_SkFilterQuality || quality == kNone_SkFilterQuality;
-  bool should_use_subrect = false;
-
   // If the original image is large, we might want to do a subrect instead if
   // the subrect would be kMemoryRatioToSubrect times smaller.
-  if (can_use_original_size_decode &&
+  if (type == kOriginal &&
       (image.paint_image().width() >= kMinDimensionToSubrect ||
        image.paint_image().height() >= kMinDimensionToSubrect)) {
     base::CheckedNumeric<size_t> checked_original_size = 4u;
@@ -843,33 +875,29 @@
     // the rect we want to use.
     if (original_size > kMemoryThresholdToSubrect &&
         src_rect_size <= original_size * kMemoryRatioToSubrect) {
-      should_use_subrect = true;
-      can_use_original_size_decode = false;
+      type = kSubrectOriginal;
       target_size = src_rect.size();
     }
   }
 
-  return ImageDecodeCacheKey(frame_key, src_rect, target_size,
-                             image.target_color_space(), quality,
-                             can_use_original_size_decode, should_use_subrect);
+  return ImageDecodeCacheKey(frame_key, type, is_nearest_neighbor, src_rect,
+                             target_size, image.target_color_space());
 }
 
 ImageDecodeCacheKey::ImageDecodeCacheKey(
     PaintImage::FrameKey frame_key,
+    ProcessingType type,
+    bool is_nearest_neighbor,
     const gfx::Rect& src_rect,
     const gfx::Size& target_size,
-    const gfx::ColorSpace& target_color_space,
-    SkFilterQuality filter_quality,
-    bool can_use_original_size_decode,
-    bool should_use_subrect)
+    const gfx::ColorSpace& target_color_space)
     : frame_key_(frame_key),
+      type_(type),
+      is_nearest_neighbor_(is_nearest_neighbor),
       src_rect_(src_rect),
       target_size_(target_size),
-      target_color_space_(target_color_space),
-      filter_quality_(filter_quality),
-      can_use_original_size_decode_(can_use_original_size_decode),
-      should_use_subrect_(should_use_subrect) {
-  if (can_use_original_size_decode_) {
+      target_color_space_(target_color_space) {
+  if (type == kOriginal) {
     hash_ = frame_key_.hash();
   } else {
     // TODO(vmpstr): This is a mess. Maybe it's faster to just search the vector
@@ -883,7 +911,7 @@
         base::HashInts(target_size_.width(), target_size_.height());
 
     hash_ = base::HashInts(base::HashInts(src_rect_hash, target_size_hash),
-                           base::HashInts(frame_key_.hash(), filter_quality_));
+                           frame_key_.hash());
   }
   // Include the target color space in the hash regardless of scaling.
   hash_ = base::HashInts(hash_, target_color_space.GetHash());
@@ -894,18 +922,26 @@
 
 std::string ImageDecodeCacheKey::ToString() const {
   std::ostringstream str;
-  str << "frame_key[" << frame_key_.ToString() << "] src_rect[" << src_rect_.x()
-      << "," << src_rect_.y() << " " << src_rect_.width() << "x"
-      << src_rect_.height() << "] target_size[" << target_size_.width() << "x"
-      << target_size_.height() << "] target_color_space"
-      << target_color_space_.ToString() << " filter_quality[" << filter_quality_
-      << "] can_use_original_size_decode [" << can_use_original_size_decode_
-      << "] should_use_subrect [" << should_use_subrect_ << "] hash [" << hash_
-      << "]";
+  str << "frame_key[" << frame_key_.ToString() << "]\ntype[";
+  switch (type_) {
+    case kOriginal:
+      str << "Original";
+      break;
+    case kSubrectOriginal:
+      str << "SubrectOriginal";
+      break;
+    case kSubrectAndScale:
+      str << "SubrectAndScale";
+      break;
+  }
+  str << "]\nis_nearest_neightbor[" << is_nearest_neighbor_ << "]\nsrc_rect["
+      << src_rect_.ToString() << "]\ntarget_size[" << target_size_.ToString()
+      << "]\ntarget_color_space[" << target_color_space_.ToString()
+      << "]\nhash[" << hash_ << "]";
   return str.str();
 }
 
-// CacheEntry
+// CacheEntry ------------------------------------------------------------------
 SoftwareImageDecodeCache::CacheEntry::CacheEntry()
     : tracing_id_(g_next_tracing_id_.GetNext()) {}
 SoftwareImageDecodeCache::CacheEntry::CacheEntry(
@@ -1023,7 +1059,7 @@
     usage_stats_.first_lock_wasted = !usage_stats_.used;
 }
 
-// MemoryBudget
+// MemoryBudget ----------------------------------------------------------------
 SoftwareImageDecodeCache::MemoryBudget::MemoryBudget(size_t limit_bytes)
     : limit_bytes_(limit_bytes), current_usage_bytes_(0u) {}
 
@@ -1049,38 +1085,4 @@
   return current_usage_bytes_.ValueOrDie();
 }
 
-void SoftwareImageDecodeCache::OnMemoryStateChange(base::MemoryState state) {
-  {
-    base::AutoLock hold(lock_);
-    switch (state) {
-      case base::MemoryState::NORMAL:
-        max_items_in_cache_ = kNormalMaxItemsInCacheForSoftware;
-        break;
-      case base::MemoryState::THROTTLED:
-        max_items_in_cache_ = kThrottledMaxItemsInCacheForSoftware;
-        break;
-      case base::MemoryState::SUSPENDED:
-        max_items_in_cache_ = kSuspendedMaxItemsInCacheForSoftware;
-        break;
-      case base::MemoryState::UNKNOWN:
-        NOTREACHED();
-        return;
-    }
-  }
-}
-
-void SoftwareImageDecodeCache::OnPurgeMemory() {
-  base::AutoLock lock(lock_);
-  ReduceCacheUsageUntilWithinLimit(0);
-}
-
-SoftwareImageDecodeCache::CacheEntry* SoftwareImageDecodeCache::AddCacheEntry(
-    const ImageKey& key) {
-  lock_.AssertAcquired();
-  frame_key_to_image_keys_[key.frame_key()].push_back(key);
-  auto it = decoded_images_.Put(key, std::make_unique<CacheEntry>());
-  it->second.get()->mark_cached();
-  return it->second.get();
-}
-
 }  // namespace cc
diff --git a/cc/tiles/software_image_decode_cache.h b/cc/tiles/software_image_decode_cache.h
index 6babeeb2..951b1d5 100644
--- a/cc/tiles/software_image_decode_cache.h
+++ b/cc/tiles/software_image_decode_cache.h
@@ -34,6 +34,14 @@
 // in the cache multiple times at different scales and filter qualities.
 class CC_EXPORT ImageDecodeCacheKey {
  public:
+  // Enum indicating the type of processing to do for this key:
+  // kOriginal - use the original decode without any subrecting or scaling.
+  // kSubrectOriginal - extract a subrect from the original decode but do not
+  //                    scale it.
+  // kSubrectAndScale - extract a subrect (if needed) from the original decode
+  //                    and scale it.
+  enum ProcessingType { kOriginal, kSubrectOriginal, kSubrectAndScale };
+
   static ImageDecodeCacheKey FromDrawImage(const DrawImage& image,
                                            SkColorType color_type);
 
@@ -43,14 +51,15 @@
     // The frame_key always has to be the same. However, after that all original
     // decodes are the same, so if we can use the original decode, return true.
     // If not, then we have to compare every field.
-    return frame_key_ == other.frame_key_ &&
-           can_use_original_size_decode_ ==
-               other.can_use_original_size_decode_ &&
+    // Note we don't compare |nearest_neighbor_| because we would only use
+    // kOriginal type in that case (dchecked below), which implies no scale. The
+    // returned scale to Skia would respect the nearest neighbor value of the
+    // requested image.
+    DCHECK(!is_nearest_neighbor_ || type_ == kOriginal);
+    return frame_key_ == other.frame_key_ && type_ == other.type_ &&
            target_color_space_ == other.target_color_space_ &&
-           (can_use_original_size_decode_ ||
-            (src_rect_ == other.src_rect_ &&
-             target_size_ == other.target_size_ &&
-             filter_quality_ == other.filter_quality_));
+           (type_ == kOriginal || (src_rect_ == other.src_rect_ &&
+                                   target_size_ == other.target_size_));
   }
 
   bool operator!=(const ImageDecodeCacheKey& other) const {
@@ -58,17 +67,14 @@
   }
 
   const PaintImage::FrameKey& frame_key() const { return frame_key_; }
-  SkFilterQuality filter_quality() const { return filter_quality_; }
+  ProcessingType type() const { return type_; }
+  bool is_nearest_neighbor() const { return is_nearest_neighbor_; }
   gfx::Rect src_rect() const { return src_rect_; }
   gfx::Size target_size() const { return target_size_; }
   const gfx::ColorSpace& target_color_space() const {
     return target_color_space_;
   }
 
-  bool can_use_original_size_decode() const {
-    return can_use_original_size_decode_;
-  }
-  bool should_use_subrect() const { return should_use_subrect_; }
   size_t get_hash() const { return hash_; }
 
   // Helper to figure out how much memory the locked image represented by this
@@ -85,20 +91,18 @@
 
  private:
   ImageDecodeCacheKey(PaintImage::FrameKey frame_key,
+                      ProcessingType type,
+                      bool is_nearest_neighbor,
                       const gfx::Rect& src_rect,
                       const gfx::Size& size,
-                      const gfx::ColorSpace& target_color_space,
-                      SkFilterQuality filter_quality,
-                      bool can_use_original_size_decode,
-                      bool should_use_subrect);
+                      const gfx::ColorSpace& target_color_space);
 
   PaintImage::FrameKey frame_key_;
+  ProcessingType type_;
+  bool is_nearest_neighbor_;
   gfx::Rect src_rect_;
   gfx::Size target_size_;
   gfx::ColorSpace target_color_space_;
-  SkFilterQuality filter_quality_;
-  bool can_use_original_size_decode_;
-  bool should_use_subrect_;
   size_t hash_;
 };
 
diff --git a/cc/tiles/software_image_decode_cache_unittest.cc b/cc/tiles/software_image_decode_cache_unittest.cc
index 1a3c1ac0..6577930 100644
--- a/cc/tiles/software_image_decode_cache_unittest.cc
+++ b/cc/tiles/software_image_decode_cache_unittest.cc
@@ -56,10 +56,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kNone_SkFilterQuality, key.filter_quality());
+  EXPECT_TRUE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   // Since the original decode will be used, the locked_bytes is that of the
   // original image.
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
@@ -77,10 +77,9 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kMedium_SkFilterQuality, key.filter_quality());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kSubrectAndScale);
   EXPECT_EQ(50, key.target_size().width());
   EXPECT_EQ(50, key.target_size().height());
-  EXPECT_FALSE(key.can_use_original_size_decode());
   EXPECT_EQ(50u * 50u * 4u, key.locked_bytes());
 }
 
@@ -95,10 +94,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -114,10 +113,10 @@
   auto key =
       ImageDecodeCacheKey::FromDrawImage(draw_image, kARGB_4444_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -133,10 +132,10 @@
   auto key =
       ImageDecodeCacheKey::FromDrawImage(draw_image, kARGB_4444_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -151,10 +150,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -170,10 +169,9 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(quality, key.filter_quality());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kSubrectAndScale);
   EXPECT_EQ(50, key.target_size().width());
   EXPECT_EQ(50, key.target_size().height());
-  EXPECT_FALSE(key.can_use_original_size_decode());
   EXPECT_EQ(50u * 50u * 4u, key.locked_bytes());
 }
 
@@ -189,10 +187,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -208,10 +206,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -228,10 +226,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -248,10 +246,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -269,10 +267,10 @@
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
 
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -288,10 +286,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(500, key.target_size().width());
   EXPECT_EQ(200, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(500u * 200u * 4u, key.locked_bytes());
 }
 
@@ -307,10 +305,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(500, key.target_size().width());
   EXPECT_EQ(200, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(500u * 200u * 4u, key.locked_bytes());
 }
 
@@ -326,10 +324,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(500, key.target_size().width());
   EXPECT_EQ(200, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(500u * 200u * 4u, key.locked_bytes());
 }
 
@@ -345,10 +343,9 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(quality, key.filter_quality());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kSubrectAndScale);
   EXPECT_EQ(250, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_FALSE(key.can_use_original_size_decode());
   EXPECT_EQ(250u * 100u * 4u, key.locked_bytes());
 }
 
@@ -364,10 +361,9 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(quality, key.filter_quality());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kSubrectAndScale);
   EXPECT_EQ(250, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_FALSE(key.can_use_original_size_decode());
   EXPECT_EQ(250u * 100u * 4u, key.locked_bytes());
 }
 
@@ -383,10 +379,9 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(quality, key.filter_quality());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kSubrectAndScale);
   EXPECT_EQ(62, key.target_size().width());
   EXPECT_EQ(25, key.target_size().height());
-  EXPECT_FALSE(key.can_use_original_size_decode());
   EXPECT_EQ(62u * 25u * 4u, key.locked_bytes());
 }
 
@@ -402,10 +397,9 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(quality, key.filter_quality());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kSubrectAndScale);
   EXPECT_EQ(7, key.target_size().width());
   EXPECT_EQ(3, key.target_size().height());
-  EXPECT_FALSE(key.can_use_original_size_decode());
   EXPECT_EQ(7u * 3u * 4u, key.locked_bytes());
 }
 
@@ -422,10 +416,9 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kMedium_SkFilterQuality, key.filter_quality());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kSubrectAndScale);
   EXPECT_EQ(50, key.target_size().width());
   EXPECT_EQ(50, key.target_size().height());
-  EXPECT_FALSE(key.can_use_original_size_decode());
   EXPECT_EQ(50u * 50u * 4u, key.locked_bytes());
 }
 
@@ -441,10 +434,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -463,10 +456,9 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kMedium_SkFilterQuality, key.filter_quality());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kSubrectAndScale);
   EXPECT_EQ(2277, key.target_size().width());
   EXPECT_EQ(1024, key.target_size().height());
-  EXPECT_FALSE(key.can_use_original_size_decode());
   EXPECT_EQ(2277u * 1024u * 4u, key.locked_bytes());
 }
 
@@ -483,10 +475,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -502,10 +494,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -522,10 +514,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -542,10 +534,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 }
 
@@ -561,10 +553,10 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kNone_SkFilterQuality, key.filter_quality());
+  EXPECT_TRUE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
-  EXPECT_TRUE(key.can_use_original_size_decode());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 
   DrawImage another_draw_image(
@@ -575,10 +567,10 @@
   auto another_key =
       ImageDecodeCacheKey::FromDrawImage(another_draw_image, kN32_SkColorType);
   EXPECT_EQ(another_draw_image.frame_key(), another_key.frame_key());
-  EXPECT_EQ(kNone_SkFilterQuality, another_key.filter_quality());
+  EXPECT_TRUE(another_key.is_nearest_neighbor());
   EXPECT_EQ(100, another_key.target_size().width());
   EXPECT_EQ(100, another_key.target_size().height());
-  EXPECT_TRUE(another_key.can_use_original_size_decode());
+  EXPECT_EQ(another_key.type(), ImageDecodeCacheKey::kOriginal);
   EXPECT_EQ(100u * 100u * 4u, another_key.locked_bytes());
 
   EXPECT_TRUE(key == another_key);
@@ -597,7 +589,7 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
+  EXPECT_FALSE(key.is_nearest_neighbor());
   EXPECT_EQ(100, key.target_size().width());
   EXPECT_EQ(100, key.target_size().height());
   EXPECT_EQ(gfx::Rect(25, 35, 75, 65), key.src_rect());
@@ -617,7 +609,7 @@
 
   auto key = ImageDecodeCacheKey::FromDrawImage(draw_image, kN32_SkColorType);
   EXPECT_EQ(draw_image.frame_key(), key.frame_key());
-  EXPECT_EQ(kMedium_SkFilterQuality, key.filter_quality());
+  EXPECT_EQ(key.type(), ImageDecodeCacheKey::kSubrectAndScale);
   EXPECT_EQ(40, key.target_size().width());
   EXPECT_EQ(35, key.target_size().height());
   EXPECT_EQ(gfx::Rect(20, 30, 80, 70), key.src_rect());
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 16355e3e..a7ce7dd 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2320,6 +2320,12 @@
      flag_descriptions::kBackgroundLoaderForDownloadsName,
      flag_descriptions::kBackgroundLoaderForDownloadsDescription, kOsAndroid,
      FEATURE_VALUE_TYPE(offline_pages::kBackgroundLoaderForDownloadsFeature)},
+    {"offline-pages-pending-download",
+     flag_descriptions::kOfflinePagesDescriptivePendingStatusName,
+     flag_descriptions::kOfflinePagesDescriptivePendingStatusDescription,
+     kOsAndroid,
+     FEATURE_VALUE_TYPE(
+         offline_pages::kOfflinePagesDescriptivePendingStatusFeature)},
     {"offline-pages-resource-based-snapshot",
      flag_descriptions::kOfflinePagesResourceBasedSnapshotName,
      flag_descriptions::kOfflinePagesResourceBasedSnapshotDescription,
diff --git a/chrome/browser/accessibility/interstitial_accessibility_browsertest.cc b/chrome/browser/accessibility/interstitial_accessibility_browsertest.cc
new file mode 100644
index 0000000..8cf1c3b7
--- /dev/null
+++ b/chrome/browser/accessibility/interstitial_accessibility_browsertest.cc
@@ -0,0 +1,84 @@
+// 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 "chrome/browser/ssl/ssl_blocking_page.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/ui_test_utils.h"
+#include "components/security_interstitials/core/controller_client.h"
+#include "content/public/browser/interstitial_page.h"
+#include "content/public/browser/navigation_entry.h"
+#include "content/public/test/browser_test_utils.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
+#include "net/test/embedded_test_server/request_handler_util.h"
+
+const base::FilePath::CharType kDocRoot[] =
+    FILE_PATH_LITERAL("chrome/test/data");
+
+class InterstitialAccessibilityBrowserTest : public InProcessBrowserTest {
+ public:
+  InterstitialAccessibilityBrowserTest()
+      : https_server_mismatched_(net::EmbeddedTestServer::TYPE_HTTPS) {
+    https_server_mismatched_.SetSSLConfig(
+        net::EmbeddedTestServer::CERT_MISMATCHED_NAME);
+    https_server_mismatched_.AddDefaultHandlers(base::FilePath(kDocRoot));
+  }
+
+  std::string GetNameOfFocusedNode(content::WebContents* web_contents) {
+    ui::AXNodeData focused_node_data =
+        content::GetFocusedAccessibilityNodeInfo(web_contents);
+    return focused_node_data.GetStringAttribute(ui::AX_ATTR_NAME);
+  }
+
+ protected:
+  net::EmbeddedTestServer https_server_mismatched_;
+
+  void ProceedThroughInterstitial(content::WebContents* web_contents) {
+    content::InterstitialPage* interstitial_page =
+        web_contents->GetInterstitialPage();
+    ASSERT_TRUE(interstitial_page);
+    ASSERT_EQ(SSLBlockingPage::kTypeForTesting,
+              interstitial_page->GetDelegateForTesting()->GetTypeForTesting());
+    SSLBlockingPage* ssl_interstitial = static_cast<SSLBlockingPage*>(
+        interstitial_page->GetDelegateForTesting());
+    ssl_interstitial->CommandReceived(
+        base::IntToString(security_interstitials::CMD_PROCEED));
+  }
+};
+
+IN_PROC_BROWSER_TEST_F(InterstitialAccessibilityBrowserTest,
+                       TestSSLInterstitialAccessibility) {
+  ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
+
+  content::WebContents* web_contents =
+      browser()->tab_strip_model()->GetActiveWebContents();
+  content::EnableAccessibilityForWebContents(web_contents);
+
+  ASSERT_TRUE(https_server_mismatched_.Start());
+
+  // Navigate to a page with an SSL error on it.
+  ui_test_utils::NavigateToURL(
+      browser(), https_server_mismatched_.GetURL("/ssl/blank_page.html"));
+
+  // Ensure that we got an interstitial page.
+  ASSERT_FALSE(web_contents->IsCrashed());
+  content::NavigationEntry* entry =
+      web_contents->GetController().GetActiveEntry();
+  ASSERT_TRUE(entry);
+  EXPECT_TRUE(entry->GetPageType() == content::PAGE_TYPE_ERROR ||
+              entry->GetPageType() == content::PAGE_TYPE_INTERSTITIAL);
+
+  // Now check from the perspective of accessibility - we should be focused
+  // on a page with title "Privacy error". Keep waiting on accessibility
+  // focus events until we get that page.
+  while (GetNameOfFocusedNode(web_contents) != "Privacy error")
+    content::WaitForAccessibilityFocusChange();
+
+  // Now proceed through the interstitial and ensure we get accessibility
+  // focus on the actual page.
+  ProceedThroughInterstitial(web_contents);
+  while (GetNameOfFocusedNode(web_contents) != "I am a blank page.")
+    content::WaitForAccessibilityFocusChange();
+}
diff --git a/chrome/browser/autofill/autofill_metrics_browsertest.cc b/chrome/browser/autofill/autofill_metrics_browsertest.cc
index cc32f4b..0cfefc37 100644
--- a/chrome/browser/autofill/autofill_metrics_browsertest.cc
+++ b/chrome/browser/autofill/autofill_metrics_browsertest.cc
@@ -51,18 +51,15 @@
   }
 
   void SetUpOnMainThread() override {
-    https_server_.reset(
-        new net::EmbeddedTestServer(net::EmbeddedTestServer::TYPE_HTTPS));
     host_resolver()->AddRule("*", "127.0.0.1");
-    ASSERT_TRUE(https_server_->InitializeAndListen());
-    content::SetupCrossSiteRedirector(https_server_.get());
-    https_server_->ServeFilesFromSourceDirectory(
+    ASSERT_TRUE(embedded_test_server()->InitializeAndListen());
+    content::SetupCrossSiteRedirector(embedded_test_server());
+    embedded_test_server()->ServeFilesFromSourceDirectory(
         "components/test/data/autofill");
-    https_server_->StartAcceptingConnections();
+    embedded_test_server()->StartAcceptingConnections();
   }
 
   std::unique_ptr<ukm::TestAutoSetUkmRecorder> test_ukm_recorder_;
-  std::unique_ptr<net::EmbeddedTestServer> https_server_;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(AutofillMetricsMetricsBrowserTest);
@@ -71,13 +68,13 @@
 IN_PROC_BROWSER_TEST_F(AutofillMetricsMetricsBrowserTest,
                        CorrectSourceForCrossSiteEmbeddedAddressForm) {
   GURL main_frame_url =
-      https_server_->GetURL("a.com", "/autofill_iframe_embedder.html");
+      embedded_test_server()->GetURL("a.com", "/autofill_iframe_embedder.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
   GURL iframe_url =
-      https_server_->GetURL("b.com", "/autofill_address_form.html");
+      embedded_test_server()->GetURL("b.com", "/autofill_address_form.html");
   EXPECT_TRUE(content::NavigateIframeToURL(tab, "test", iframe_url));
 
   EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing());
@@ -94,13 +91,13 @@
 IN_PROC_BROWSER_TEST_F(AutofillMetricsMetricsBrowserTest,
                        CorrectSourceForCrossSiteEmbeddedCreditCardForm) {
   GURL main_frame_url =
-      https_server_->GetURL("a.com", "/autofill_iframe_embedder.html");
+      embedded_test_server()->GetURL("a.com", "/autofill_iframe_embedder.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
-  GURL iframe_url =
-      https_server_->GetURL("b.com", "/autofill_credit_card_form.html");
+  GURL iframe_url = embedded_test_server()->GetURL(
+      "b.com", "/autofill_credit_card_form.html");
   EXPECT_TRUE(content::NavigateIframeToURL(tab, "test", iframe_url));
 
   EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing());
@@ -117,8 +114,8 @@
 // Flaky test, see crbug.com/793672
 IN_PROC_BROWSER_TEST_F(AutofillMetricsMetricsBrowserTest,
                        DISABLED_CorrectSourceForUnownedAddressCheckout) {
-  GURL main_frame_url =
-      https_server_->GetURL("a.com", "/autofill_unowned_address_checkout.html");
+  GURL main_frame_url = embedded_test_server()->GetURL(
+      "a.com", "/autofill_unowned_address_checkout.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
   // Make sure the UKM were logged for the main frame url.
@@ -130,7 +127,7 @@
 // Flaky test, see crbug.com/793638
 IN_PROC_BROWSER_TEST_F(AutofillMetricsMetricsBrowserTest,
                        DISABLED_CorrectSourceForUnownedCreditCardCheckout) {
-  GURL main_frame_url = https_server_->GetURL(
+  GURL main_frame_url = embedded_test_server()->GetURL(
       "a.com", "/autofill_unowned_credit_card_checkout.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
@@ -144,13 +141,13 @@
     AutofillMetricsMetricsBrowserTest,
     CorrectSourceForCrossSiteEmbeddedUnownedAddressCheckout) {
   GURL main_frame_url =
-      https_server_->GetURL("a.com", "/autofill_iframe_embedder.html");
+      embedded_test_server()->GetURL("a.com", "/autofill_iframe_embedder.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
-  GURL iframe_url =
-      https_server_->GetURL("b.com", "/autofill_unowned_address_checkout.html");
+  GURL iframe_url = embedded_test_server()->GetURL(
+      "b.com", "/autofill_unowned_address_checkout.html");
   EXPECT_TRUE(content::NavigateIframeToURL(tab, "test", iframe_url));
 
   EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing());
@@ -168,12 +165,12 @@
     AutofillMetricsMetricsBrowserTest,
     CorrectSourceForCrossSiteEmbeddedUnownedCreditCardCheckout) {
   GURL main_frame_url =
-      https_server_->GetURL("a.com", "/autofill_iframe_embedder.html");
+      embedded_test_server()->GetURL("a.com", "/autofill_iframe_embedder.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
-  GURL iframe_url = https_server_->GetURL(
+  GURL iframe_url = embedded_test_server()->GetURL(
       "b.com", "/autofill_unowned_credit_card_checkout.html");
   EXPECT_TRUE(content::NavigateIframeToURL(tab, "test", iframe_url));
 
@@ -210,13 +207,13 @@
 IN_PROC_BROWSER_TEST_F(SitePerProcessAutofillMetricsMetricsBrowserTest,
                        CorrectSourceForCrossSiteEmbeddedAddressForm) {
   GURL main_frame_url =
-      https_server_->GetURL("a.com", "/autofill_iframe_embedder.html");
+      embedded_test_server()->GetURL("a.com", "/autofill_iframe_embedder.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
   GURL iframe_url =
-      https_server_->GetURL("b.com", "/autofill_address_form.html");
+      embedded_test_server()->GetURL("b.com", "/autofill_address_form.html");
   EXPECT_TRUE(content::NavigateIframeToURL(tab, "test", iframe_url));
 
   EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing());
@@ -234,13 +231,13 @@
 IN_PROC_BROWSER_TEST_F(SitePerProcessAutofillMetricsMetricsBrowserTest,
                        CorrectSourceForCrossSiteEmbeddedCreditCardForm) {
   GURL main_frame_url =
-      https_server_->GetURL("a.com", "/autofill_iframe_embedder.html");
+      embedded_test_server()->GetURL("a.com", "/autofill_iframe_embedder.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
-  GURL iframe_url =
-      https_server_->GetURL("b.com", "/autofill_credit_card_form.html");
+  GURL iframe_url = embedded_test_server()->GetURL(
+      "b.com", "/autofill_credit_card_form.html");
   EXPECT_TRUE(content::NavigateIframeToURL(tab, "test", iframe_url));
 
   EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing());
@@ -258,8 +255,8 @@
 // Flaky test, see crbug.com/793578
 IN_PROC_BROWSER_TEST_F(SitePerProcessAutofillMetricsMetricsBrowserTest,
                        DISABLED_CorrectSourceForUnownedAddressCheckout) {
-  GURL main_frame_url =
-      https_server_->GetURL("a.com", "/autofill_unowned_address_checkout.html");
+  GURL main_frame_url = embedded_test_server()->GetURL(
+      "a.com", "/autofill_unowned_address_checkout.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
   // Make sure the UKM were logged for the main frame url.
@@ -271,7 +268,7 @@
 // Flaky test, see crbug.com/793634
 IN_PROC_BROWSER_TEST_F(SitePerProcessAutofillMetricsMetricsBrowserTest,
                        DISABLED_CorrectSourceForUnownedCreditCardCheckout) {
-  GURL main_frame_url = https_server_->GetURL(
+  GURL main_frame_url = embedded_test_server()->GetURL(
       "a.com", "/autofill_unowned_credit_card_checkout.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
@@ -285,13 +282,13 @@
     SitePerProcessAutofillMetricsMetricsBrowserTest,
     CorrectSourceForCrossSiteEmbeddedUnownedAddressCheckout) {
   GURL main_frame_url =
-      https_server_->GetURL("a.com", "/autofill_iframe_embedder.html");
+      embedded_test_server()->GetURL("a.com", "/autofill_iframe_embedder.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
-  GURL iframe_url =
-      https_server_->GetURL("b.com", "/autofill_unowned_address_checkout.html");
+  GURL iframe_url = embedded_test_server()->GetURL(
+      "b.com", "/autofill_unowned_address_checkout.html");
   EXPECT_TRUE(content::NavigateIframeToURL(tab, "test", iframe_url));
 
   EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing());
@@ -310,12 +307,12 @@
     SitePerProcessAutofillMetricsMetricsBrowserTest,
     CorrectSourceForCrossSiteEmbeddedUnownedCreditCardCheckout) {
   GURL main_frame_url =
-      https_server_->GetURL("a.com", "/autofill_iframe_embedder.html");
+      embedded_test_server()->GetURL("a.com", "/autofill_iframe_embedder.html");
   ui_test_utils::NavigateToURL(browser(), main_frame_url);
 
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
-  GURL iframe_url = https_server_->GetURL(
+  GURL iframe_url = embedded_test_server()->GetURL(
       "b.com", "/autofill_unowned_credit_card_checkout.html");
   EXPECT_TRUE(content::NavigateIframeToURL(tab, "test", iframe_url));
 
diff --git a/chrome/browser/autofill/form_structure_browsertest.cc b/chrome/browser/autofill/form_structure_browsertest.cc
index f70e6cee..89431da 100644
--- a/chrome/browser/autofill/form_structure_browsertest.cc
+++ b/chrome/browser/autofill/form_structure_browsertest.cc
@@ -142,8 +142,12 @@
 
 FormStructureBrowserTest::FormStructureBrowserTest()
     : DataDrivenTest(GetTestDataDir()) {
-  feature_list_.InitAndDisableFeature(
-      autofill::features::kAutofillEnforceMinRequiredFieldsForUpload);
+  feature_list_.InitWithFeatures(
+      // Enabled
+      {},
+      // Disabled
+      {autofill::features::kAutofillEnforceMinRequiredFieldsForUpload,
+       autofill::features::kAutofillRestrictUnownedFieldsToFormlessCheckout});
 }
 
 FormStructureBrowserTest::~FormStructureBrowserTest() {
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index a47dd75..deeb87e 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -2015,6 +2015,12 @@
     "page.  This data is collected in the snapshotted offline page to allow "
     "data analysis to improve deciding when to make the offline snapshot.";
 
+const char kOfflinePagesDescriptivePendingStatusName[] =
+    "Enables descriptive pending download status text.";
+const char kOfflinePagesDescriptivePendingStatusDescription[] =
+    "Enables pending download status text in notifications and Downloads Home "
+    "to state the reason the request is pending.";
+
 const char kOfflinePagesPrefetchingName[] =
     "Enables suggested offline pages to be prefetched.";
 const char kOfflinePagesPrefetchingDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 2dc0327..7d6bfbf8 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1231,6 +1231,9 @@
 extern const char kOfflinePagesLoadSignalCollectingName[];
 extern const char kOfflinePagesLoadSignalCollectingDescription[];
 
+extern const char kOfflinePagesDescriptivePendingStatusName[];
+extern const char kOfflinePagesDescriptivePendingStatusDescription[];
+
 extern const char kOfflinePagesPrefetchingName[];
 extern const char kOfflinePagesPrefetchingDescription[];
 
diff --git a/chrome/browser/permissions/permission_uma_util.cc b/chrome/browser/permissions/permission_uma_util.cc
index 7c67292..9c3832c 100644
--- a/chrome/browser/permissions/permission_uma_util.cc
+++ b/chrome/browser/permissions/permission_uma_util.cc
@@ -92,8 +92,6 @@
       return "AudioCapture";
     case PermissionRequestType::PERMISSION_MEDIASTREAM_CAMERA:
       return "VideoCapture";
-    case PermissionRequestType::PERMISSION_CLIPBOARD_READ:
-      return "ClipboardRead";
     default:
       NOTREACHED();
       return "";
@@ -502,9 +500,9 @@
   bool secure_origin = content::IsOriginSecure(requesting_origin);
 
   switch (permission) {
-    // Geolocation, MidiSysEx, Push, Media and Clipboard permissions are
-    // disabled on insecure origins, so there's no need to record separate
-    // metrics for secure/insecure.
+    // Geolocation, MidiSysEx, Push, and Media permissions are disabled on
+    // insecure origins, so there's no need to record separate metrics for
+    // secure/insecure.
     case CONTENT_SETTINGS_TYPE_GEOLOCATION:
       UMA_HISTOGRAM_ENUMERATION("Permissions.Action.Geolocation", action,
                                 PermissionAction::NUM);
@@ -538,10 +536,6 @@
                             "Permissions.Action.SecureOrigin.Flash",
                             "Permissions.Action.InsecureOrigin.Flash", action);
       break;
-    case CONTENT_SETTINGS_TYPE_CLIPBOARD_READ:
-      UMA_HISTOGRAM_ENUMERATION("Permissions.Action.ClipboardRead", action,
-                                PermissionAction::NUM);
-      break;
     // The user is not prompted for these permissions, thus there is no
     // permission action recorded for them.
     default:
diff --git a/chrome/browser/permissions/permission_util.cc b/chrome/browser/permissions/permission_util.cc
index 6edf0c95..632c931 100644
--- a/chrome/browser/permissions/permission_util.cc
+++ b/chrome/browser/permissions/permission_util.cc
@@ -46,8 +46,6 @@
       return "AccessibilityEvents";
     case CONTENT_SETTINGS_TYPE_CLIPBOARD_READ:
       return "ClipboardRead";
-    case CONTENT_SETTINGS_TYPE_CLIPBOARD_WRITE:
-      return "ClipboardWrite";
     default:
       break;
   }
diff --git a/chrome/browser/resources/md_extensions/load_error.html b/chrome/browser/resources/md_extensions/load_error.html
index d970402..a5492c9 100644
--- a/chrome/browser/resources/md_extensions/load_error.html
+++ b/chrome/browser/resources/md_extensions/load_error.html
@@ -6,7 +6,7 @@
 <link rel="import" href="chrome://resources/html/assert.html">
 <link rel="import" href="chrome://resources/html/cr.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner.html">
+<link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner-lite.html">
 <link rel="import" href="code_section.html">
 
 <dom-module id="extensions-load-error">
@@ -39,7 +39,7 @@
         </extensions-code-section>
       </div>
       <div slot="button-container">
-        <paper-spinner active="[[retrying_]]"></paper-spinner>
+        <paper-spinner-lite active="[[retrying_]]"></paper-spinner-lite>
         <paper-button class="cancel-button" on-tap="close">
           $i18n{loadErrorCancel}
         </paper-button>
diff --git a/chrome/browser/resources/md_user_manager/create_profile.html b/chrome/browser/resources/md_user_manager/create_profile.html
index ef416b5..46ce5661 100644
--- a/chrome/browser/resources/md_user_manager/create_profile.html
+++ b/chrome/browser/resources/md_user_manager/create_profile.html
@@ -16,7 +16,7 @@
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-checkbox/paper-checkbox.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-input/paper-input.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner.html">
+<link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner-lite.html">
 
 <dom-module id="create-profile">
   <template>
@@ -136,7 +136,7 @@
         right: auto;
       }
 
-      #actions paper-spinner {
+      #actions paper-spinner-lite {
         -webkit-margin-end: 8px;
         align-self: center;
         height: 20px;
@@ -195,9 +195,9 @@
         </div>
       </template>
       <div id="actions">
-        <paper-spinner active="[[isSpinnerActive_(createInProgress_,
-                                                  loadingSupervisedUsers_)]]">
-        </paper-spinner>
+        <paper-spinner-lite active="[[isSpinnerActive_(
+            createInProgress_, loadingSupervisedUsers_)]]">
+        </paper-spinner-lite>
         <paper-button id="cancel" class="action secondary"
             on-tap="onCancelTap_">
           $i18n{cancel}
diff --git a/chrome/browser/resources/md_user_manager/user_manager.html b/chrome/browser/resources/md_user_manager/user_manager.html
index 1d493a4e..8dbe1d9 100644
--- a/chrome/browser/resources/md_user_manager/user_manager.html
+++ b/chrome/browser/resources/md_user_manager/user_manager.html
@@ -326,11 +326,22 @@
     }
 
     #user-manager-prompt-message {
+      background-image: url(../../../../ui/webui/resources/images/business.svg);
+      background-position: 0 center;
+      background-repeat: no-repeat;
+      background-size: 19px;
       font-size: 19px;
       margin-bottom: 45px;
+      padding-left: 30px;
       text-align: center;
     }
 
+    html[dir=rtl] #user-manager-prompt-message {
+      background-position: right center;
+      padding-left: 0;
+      padding-right: 30px;
+    }
+
     #user-manager-prompt-message:empty {
       display: none;
     }
diff --git a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html
index 9e43aed..9a9e850 100644
--- a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html
+++ b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html
@@ -4,7 +4,7 @@
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-input/paper-input.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-item/paper-item.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-menu/paper-menu.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner.html">
+<link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner-lite.html">
 <link rel="import" href="../media_router_header/media_router_header.html">
 <link rel="import" href="../route_details/route_details.html">
 <link rel="import" href="../../icons/media_router_icons.html">
@@ -111,9 +111,9 @@
           hidden$="[[computeSinkListViewHidden_(currentView_, issue)]]">
         <div id="device-missing"
              hidden$="[[computeDeviceMissingHidden_(sinksToShow_)]]">
-          <paper-spinner id="searching-devices-spinner" active
+          <paper-spinner-lite id="searching-devices-spinner" active
               hidden$="[[computeSpinnerHidden_(justOpened_)]]">
-          </paper-spinner>
+          </paper-spinner-lite>
           <a href="[[deviceMissingUrl]]" target="_blank"
               hidden$="[[!computeSpinnerHidden_(justOpened_)]]">
             [[i18n('destinationMissingText')]]
@@ -132,8 +132,8 @@
                       </iron-icon>
                       <template is="dom-if"
                           if="[[computeSinkIsLaunching_(currentLaunchingSinkId_, item.id)]]">
-                        <paper-spinner class="sink-icon" active>
-                        </paper-spinner>
+                        <paper-spinner-lite class="sink-icon" active>
+                        </paper-spinner-lite>
                       </template>
                     </div>
                     <div>
@@ -197,8 +197,8 @@
                         </iron-icon>
                         <template is="dom-if"
                             if="[[computeSinkIsLaunching_(currentLaunchingSinkId_, item.sinkItem.id)]]">
-                          <paper-spinner class="sink-icon" active>
-                          </paper-spinner>
+                          <paper-spinner-lite class="sink-icon" active>
+                          </paper-spinner-lite>
                         </template>
                       </div>
                       <div>
diff --git a/chrome/browser/ssl/ssl_blocking_page.h b/chrome/browser/ssl/ssl_blocking_page.h
index eb5f27b7..e6bfd55 100644
--- a/chrome/browser/ssl/ssl_blocking_page.h
+++ b/chrome/browser/ssl/ssl_blocking_page.h
@@ -73,6 +73,7 @@
  protected:
   friend class policy::PolicyTest_SSLErrorOverridingDisallowed_Test;
   friend class SSLUITestBase;
+  friend class InterstitialAccessibilityBrowserTest;
 
   SSLBlockingPage(
       content::WebContents* web_contents,
diff --git a/chrome/browser/ui/views/overlay/overlay_window_views.cc b/chrome/browser/ui/views/overlay/overlay_window_views.cc
index 3e63ffb..9ea5ca9 100644
--- a/chrome/browser/ui/views/overlay/overlay_window_views.cc
+++ b/chrome/browser/ui/views/overlay/overlay_window_views.cc
@@ -6,6 +6,8 @@
 
 #include "chrome/grit/generated_resources.h"
 #include "ui/base/l10n/l10n_util.h"
+#include "ui/display/manager/display_manager.h"
+#include "ui/display/screen.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/widget/widget_delegate.h"
 
@@ -24,7 +26,7 @@
   ~OverlayWindowWidgetDelegate() override = default;
 
   // WidgetDelegate:
-  bool CanResize() const override { return true; }
+  bool CanResize() const override { return false; }
   ui::ModalType GetModalType() const override { return ui::MODAL_TYPE_SYSTEM; }
   base::string16 GetWindowTitle() const override {
     return l10n_util::GetStringUTF16(IDS_PICTURE_IN_PICTURE_TITLE_TEXT);
@@ -46,13 +48,28 @@
 OverlayWindowViews::~OverlayWindowViews() = default;
 
 void OverlayWindowViews::Init() {
-  // TODO(apacible): Finalize the type of widget. http://crbug/726621
-  views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
+  views::Widget::InitParams params(
+      views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
   params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
 
-  // TODO(apacible): Update preferred sizing and positioning.
+  // These bounds are arbitrary. See OverlayWindowWidget for specified
+  // constraints. The initial positioning is on the bottom right quadrant
+  // of the primary display work area.
+  // The size is a temporary placeholder while video size is currently unused.
+  // This should also use the display of the initiating WebContents.
   // http://crbug/726621
-  params.bounds = gfx::Rect(200, 200, 700, 500);
+  gfx::Size size(500, 300);
+  gfx::Rect work_area =
+      display::Screen::GetScreen()->GetPrimaryDisplay().work_area();
+  int window_diff_width = work_area.width() - size.width();
+  int window_diff_height = work_area.height() - size.height();
+  // Keep a margin distance of 2% the average of the two window size
+  // differences, keeping the margins consistent.
+  int buffer = (window_diff_width + window_diff_height) / 2 * 0.02;
+  params.bounds = gfx::Rect(
+      gfx::Point(window_diff_width - buffer, window_diff_height - buffer),
+      size);
+
   params.keep_on_top = true;
   params.visible_on_all_workspaces = true;
 
diff --git a/chrome/renderer/autofill/form_autofill_browsertest.cc b/chrome/renderer/autofill/form_autofill_browsertest.cc
index d3b35a2..2f59bf1 100644
--- a/chrome/renderer/autofill/form_autofill_browsertest.cc
+++ b/chrome/renderer/autofill/form_autofill_browsertest.cc
@@ -271,7 +271,10 @@
 
 class FormAutofillTest : public ChromeRenderViewTest {
  public:
-  FormAutofillTest() : ChromeRenderViewTest() {}
+  FormAutofillTest() : ChromeRenderViewTest() {
+    scoped_feature_list_.InitAndEnableFeature(
+        features::kAutofillRestrictUnownedFieldsToFormlessCheckout);
+  }
   ~FormAutofillTest() override {}
 
   void ExpectLabels(const char* html,
@@ -1860,6 +1863,7 @@
   }
 
  private:
+  base::test::ScopedFeatureList scoped_feature_list_;
   DISALLOW_COPY_AND_ASSIGN(FormAutofillTest);
 };
 
@@ -4909,6 +4913,44 @@
       &form, nullptr));
 }
 
+TEST_F(FormAutofillTest, FormlessForms) {
+  std::vector<WebElement> fieldsets;
+  std::vector<WebFormControlElement> control_elements;
+
+  const ExtractMask extract_mask =
+      static_cast<ExtractMask>(EXTRACT_VALUE | EXTRACT_OPTIONS);
+
+  LoadHTML(kUnownedUntitledFormHtml);
+
+  WebLocalFrame* frame = GetMainFrame();
+  ASSERT_NE(nullptr, frame);
+
+  control_elements = GetUnownedAutofillableFormFieldElements(
+      frame->GetDocument().All(), &fieldsets);
+  ASSERT_FALSE(control_elements.empty());
+  ASSERT_TRUE(fieldsets.empty());
+
+  {
+    base::test::ScopedFeatureList feature_list;
+    feature_list.InitAndEnableFeature(
+        features::kAutofillRestrictUnownedFieldsToFormlessCheckout);
+    FormData form;
+    EXPECT_FALSE(UnownedCheckoutFormElementsAndFieldSetsToFormData(
+        fieldsets, control_elements, nullptr, frame->GetDocument(),
+        extract_mask, &form, nullptr));
+  }
+
+  {
+    base::test::ScopedFeatureList feature_list;
+    feature_list.InitAndDisableFeature(
+        features::kAutofillRestrictUnownedFieldsToFormlessCheckout);
+    FormData form;
+    EXPECT_TRUE(UnownedCheckoutFormElementsAndFieldSetsToFormData(
+        fieldsets, control_elements, nullptr, frame->GetDocument(),
+        extract_mask, &form, nullptr));
+  }
+}
+
 TEST_F(FormAutofillTest, FormCache_ExtractNewForms) {
   base::test::ScopedFeatureList feature_list;
   feature_list.InitWithFeatures(
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index b682643..d26ca02f 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -429,6 +429,7 @@
       "../../apps/load_and_launch_browsertest.cc",
       "../app/chrome_version.rc.version",
       "../browser/accessibility/browser_accessibility_state_browsertest.cc",
+      "../browser/accessibility/interstitial_accessibility_browsertest.cc",
       "../browser/app_controller_mac_browsertest.mm",
       "../browser/apps/app_browsertest.cc",
       "../browser/apps/app_shim/app_shim_host_manager_browsertest_mac.mm",
diff --git a/chrome/test/data/webui/md_user_manager/create_profile_tests.js b/chrome/test/data/webui/md_user_manager/create_profile_tests.js
index 82f34a97..30e82be7 100644
--- a/chrome/test/data/webui/md_user_manager/create_profile_tests.js
+++ b/chrome/test/data/webui/md_user_manager/create_profile_tests.js
@@ -298,7 +298,7 @@
           browserProxy.whenCalled('createProfile').then(function(args) {
             // The paper-spinner is active when create is in progress.
             assertTrue(createProfileElement.createInProgress_);
-            assertTrue(createProfileElement.$$('paper-spinner').active);
+            assertTrue(createProfileElement.$$('paper-spinner-lite').active);
 
             cr.webUIListenerCallback('create-profile-success',
                                      {name: 'profile name',
@@ -306,7 +306,7 @@
 
             // The paper-spinner is not active when create is not in progress.
             assertFalse(createProfileElement.createInProgress_);
-            assertFalse(createProfileElement.$$('paper-spinner').active);
+            assertFalse(createProfileElement.$$('paper-spinner-lite').active);
           });
         });
       });
@@ -335,13 +335,13 @@
           browserProxy.whenCalled('createProfile').then(function(args) {
             // The paper-spinner is active when create is in progress.
             assertTrue(createProfileElement.createInProgress_);
-            assertTrue(createProfileElement.$$('paper-spinner').active);
+            assertTrue(createProfileElement.$$('paper-spinner-lite').active);
 
             cr.webUIListenerCallback('create-profile-success', profileInfo);
 
             // The paper-spinner is not active when create is not in progress.
             assertFalse(createProfileElement.createInProgress_);
-            assertFalse(createProfileElement.$$('paper-spinner').active);
+            assertFalse(createProfileElement.$$('paper-spinner-lite').active);
           });
         });
       });
diff --git a/chrome/test/data/webui/media_router/media_router_container_search_tests.js b/chrome/test/data/webui/media_router/media_router_container_search_tests.js
index 6eea763..4b6497c7 100644
--- a/chrome/test/data/webui/media_router/media_router_container_search_tests.js
+++ b/chrome/test/data/webui/media_router/media_router_container_search_tests.js
@@ -58,7 +58,7 @@
     var targets = 0;
     searchResults.forEach(function(sink) {
       var item = container.$$('#searchResults').itemForElement(sink).sinkItem;
-      var spinner = sink.querySelector('paper-spinner');
+      var spinner = sink.querySelector('paper-spinner-lite');
       var isTargetSink = item.id == targetSink.id;
       checkElementVisible(spinner, isTargetSink);
       if (isTargetSink) {
@@ -81,7 +81,7 @@
     var targets = 0;
     sinkList.forEach(function(sink) {
       var item = container.$$('#sinkList').itemForElement(sink);
-      var spinner = sink.querySelector('paper-spinner');
+      var spinner = sink.querySelector('paper-spinner-lite');
       var isTargetSink = item.id == targetSink.id;
       checkElementVisible(spinner, isTargetSink);
       if (isTargetSink) {
@@ -343,7 +343,7 @@
               sinkList =
                   container.$$('#sink-list').querySelectorAll('paper-item');
               sinkList.forEach(function(sink) {
-                var spinner = sink.querySelector('paper-spinner');
+                var spinner = sink.querySelector('paper-spinner-lite');
                 checkElementVisible(spinner, false);
               });
               done();
@@ -419,7 +419,7 @@
             searchResults =
                 container.$$('#search-results').querySelectorAll('paper-item');
             searchResults.forEach(function(sink) {
-              var spinner = sink.querySelector('paper-spinner');
+              var spinner = sink.querySelector('paper-spinner-lite');
               checkElementVisible(spinner, false);
             });
             done();
diff --git a/components/autofill/content/renderer/form_autofill_util.cc b/components/autofill/content/renderer/form_autofill_util.cc
index 3a2e180f..4938fe88 100644
--- a/components/autofill/content/renderer/form_autofill_util.cc
+++ b/components/autofill/content/renderer/form_autofill_util.cc
@@ -20,6 +20,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "components/autofill/core/common/autofill_data_validation.h"
+#include "components/autofill/core/common/autofill_features.h"
 #include "components/autofill/core/common/autofill_regexes.h"
 #include "components/autofill/core/common/autofill_switches.h"
 #include "components/autofill/core/common/autofill_util.h"
@@ -1538,6 +1539,13 @@
     ExtractMask extract_mask,
     FormData* form,
     FormFieldData* field) {
+  if (!base::FeatureList::IsEnabled(
+          features::kAutofillRestrictUnownedFieldsToFormlessCheckout)) {
+    return UnownedFormElementsAndFieldSetsToFormData(
+        fieldsets, control_elements, element, document, nullptr, extract_mask,
+        form, field);
+  }
+
   // Only attempt formless Autofill on checkout flows. This avoids the many
   // false positives found on the non-checkout web. See
   // http://crbug.com/462375.
@@ -1595,11 +1603,14 @@
   // Since it's not a checkout flow, only add fields that have a non-"off"
   // autocomplete attribute to the formless autofill.
   CR_DEFINE_STATIC_LOCAL(WebString, kOffAttribute, ("off"));
+  CR_DEFINE_STATIC_LOCAL(WebString, kFalseAttribute, ("false"));
   std::vector<WebFormControlElement> elements_with_autocomplete;
   for (const WebFormControlElement& element : control_elements) {
     blink::WebString autocomplete = element.GetAttribute("autocomplete");
-    if (autocomplete.length() && autocomplete != kOffAttribute)
+    if (autocomplete.length() && autocomplete != kOffAttribute &&
+        autocomplete != kFalseAttribute) {
       elements_with_autocomplete.push_back(element);
+    }
   }
 
   if (elements_with_autocomplete.empty())
diff --git a/components/autofill/core/browser/form_structure.cc b/components/autofill/core/browser/form_structure.cc
index 0ecb6bf..921324a 100644
--- a/components/autofill/core/browser/form_structure.cc
+++ b/components/autofill/core/browser/form_structure.cc
@@ -32,6 +32,7 @@
 #include "components/autofill/core/browser/rationalization_util.h"
 #include "components/autofill/core/browser/validation.h"
 #include "components/autofill/core/common/autofill_constants.h"
+#include "components/autofill/core/common/autofill_features.h"
 #include "components/autofill/core/common/autofill_regex_constants.h"
 #include "components/autofill/core/common/autofill_regexes.h"
 #include "components/autofill/core/common/autofill_util.h"
@@ -662,7 +663,9 @@
 
 bool FormStructure::ShouldRunHeuristics() const {
   return active_field_count() >= MinRequiredFieldsForHeuristics() &&
-         (is_form_tag_ || is_formless_checkout_);
+         (is_form_tag_ || is_formless_checkout_ ||
+          !base::FeatureList::IsEnabled(
+              features::kAutofillRestrictUnownedFieldsToFormlessCheckout));
 }
 
 bool FormStructure::ShouldBeQueried() const {
diff --git a/components/autofill/core/browser/form_structure.h b/components/autofill/core/browser/form_structure.h
index 23e757b4..1965e443 100644
--- a/components/autofill/core/browser/form_structure.h
+++ b/components/autofill/core/browser/form_structure.h
@@ -343,7 +343,10 @@
   // True if the form is a <form>.
   bool is_form_tag_;
 
-  // True if the form is made of unowned fields in a non checkout flow.
+  // True if the form is made of unowned fields (i.e., not within a <form> tag)
+  // in what appears to be a checkout flow. This attribute is only calculated
+  // and used if features::kAutofillRestrictUnownedFieldsToFormlessCheckout is
+  // enabled, to prevent heuristics from running on formless non-checkout.
   bool is_formless_checkout_;
 
   // True if all form fields are password fields.
diff --git a/components/autofill/core/browser/form_structure_unittest.cc b/components/autofill/core/browser/form_structure_unittest.cc
index 27acc38..24217d6 100644
--- a/components/autofill/core/browser/form_structure_unittest.cc
+++ b/components/autofill/core/browser/form_structure_unittest.cc
@@ -598,6 +598,9 @@
 
 // Verify that the heuristics are not run for non checkout formless forms.
 TEST_F(FormStructureTest, Heuristics_FormlessNonCheckoutForm) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(
+      features::kAutofillRestrictUnownedFieldsToFormlessCheckout);
   std::unique_ptr<FormStructure> form_structure;
   FormData form;
 
diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc
index 3a1cb2f..068e7eb 100644
--- a/components/autofill/core/common/autofill_features.cc
+++ b/components/autofill/core/common/autofill_features.cc
@@ -30,6 +30,13 @@
     "AutofillEnforceMinRequiredFieldsForUpload",
     base::FEATURE_ENABLED_BY_DEFAULT};
 
+// Controls whether or not a group of fields not enclosed in a form can be
+// considered a form. If this is enabled, unowned fields will only constitute
+// a form if there are signals to suggest that this might a checkout page.
+const base::Feature kAutofillRestrictUnownedFieldsToFormlessCheckout{
+    "AutofillRestrictUnownedFieldsToFormlessCheckout",
+    base::FEATURE_ENABLED_BY_DEFAULT};
+
 // Controls attaching the autofill type predictions to their respective
 // element in the DOM.
 const base::Feature kAutofillShowTypePredictions{
diff --git a/components/autofill/core/common/autofill_features.h b/components/autofill/core/common/autofill_features.h
index 6e8ed1f..4b080fbd 100644
--- a/components/autofill/core/common/autofill_features.h
+++ b/components/autofill/core/common/autofill_features.h
@@ -15,6 +15,7 @@
 extern const base::Feature kAutofillEnforceMinRequiredFieldsForHeuristics;
 extern const base::Feature kAutofillEnforceMinRequiredFieldsForQuery;
 extern const base::Feature kAutofillEnforceMinRequiredFieldsForUpload;
+extern const base::Feature kAutofillRestrictUnownedFieldsToFormlessCheckout;
 extern const base::Feature kAutofillShowTypePredictions;
 
 }  // namespace features
diff --git a/components/autofill/core/common/form_data.h b/components/autofill/core/common/form_data.h
index 9ce96e0..3076ded 100644
--- a/components/autofill/core/common/form_data.h
+++ b/components/autofill/core/common/form_data.h
@@ -46,7 +46,10 @@
   url::Origin main_frame_origin;
   // True if this form is a form tag.
   bool is_form_tag;
-  // True if the form is made of unowned fields in a non checkout flow.
+  // True if the form is made of unowned fields (i.e., not within a <form> tag)
+  // in what appears to be a checkout flow. This attribute is only calculated
+  // and used if features::kAutofillRestrictUnownedFieldsToFormlessCheckout is
+  // enabled, to prevent heuristics from running on formless non-checkout.
   bool is_formless_checkout;
   // A vector of all the input fields in the form.
   std::vector<FormFieldData> fields;
diff --git a/components/offline_pages/core/BUILD.gn b/components/offline_pages/core/BUILD.gn
index 1636825..dfb760a 100644
--- a/components/offline_pages/core/BUILD.gn
+++ b/components/offline_pages/core/BUILD.gn
@@ -37,8 +37,12 @@
     "model/offline_page_model_taskified.h",
     "model/offline_page_model_utils.cc",
     "model/offline_page_model_utils.h",
+    "model/offline_page_upgrade_types.cc",
+    "model/offline_page_upgrade_types.h",
     "model/persistent_pages_consistency_check_task.cc",
     "model/persistent_pages_consistency_check_task.h",
+    "model/start_offline_page_upgrade_task.cc",
+    "model/start_offline_page_upgrade_task.h",
     "model/temporary_pages_consistency_check_task.cc",
     "model/temporary_pages_consistency_check_task.h",
     "offline_event_logger.cc",
@@ -150,6 +154,7 @@
     "model/offline_page_model_taskified_unittest.cc",
     "model/offline_page_model_utils_unittest.cc",
     "model/persistent_pages_consistency_check_task_unittest.cc",
+    "model/start_offline_page_upgrade_task_unittest.cc",
     "model/temporary_pages_consistency_check_task_unittest.cc",
     "offline_event_logger_unittest.cc",
     "offline_page_feature_unittest.cc",
diff --git a/components/offline_pages/core/model/offline_page_upgrade_types.cc b/components/offline_pages/core/model/offline_page_upgrade_types.cc
new file mode 100644
index 0000000..945c2064
--- /dev/null
+++ b/components/offline_pages/core/model/offline_page_upgrade_types.cc
@@ -0,0 +1,22 @@
+// 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 "components/offline_pages/core/model/offline_page_upgrade_types.h"
+
+namespace offline_pages {
+
+StartUpgradeResult::StartUpgradeResult()
+    : status(StartUpgradeStatus::DB_ERROR) {}
+
+StartUpgradeResult::StartUpgradeResult(StartUpgradeStatus status)
+    : status(status) {}
+
+StartUpgradeResult::StartUpgradeResult(StartUpgradeStatus status,
+                                       std::string digest,
+                                       base::FilePath file_path)
+    : status(status),
+      digest(std::move(digest)),
+      file_path(std::move(file_path)) {}
+
+}  // namespace offline_pages
diff --git a/components/offline_pages/core/model/offline_page_upgrade_types.h b/components/offline_pages/core/model/offline_page_upgrade_types.h
new file mode 100644
index 0000000..420a80fe
--- /dev/null
+++ b/components/offline_pages/core/model/offline_page_upgrade_types.h
@@ -0,0 +1,46 @@
+// 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.
+
+#ifndef COMPONENTS_OFFLINE_PAGES_CORE_MODEL_OFFLINE_PAGE_UPRGRADE_TYPES_H_
+#define COMPONENTS_OFFLINE_PAGES_CORE_MODEL_OFFLINE_PAGE_UPRGRADE_TYPES_H_
+
+#include <string>
+
+#include "base/callback_forward.h"
+#include "base/files/file_path.h"
+
+namespace offline_pages {
+
+// Enumeration of possible results for starting the upgrade process.
+enum class StartUpgradeStatus {
+  SUCCESS,
+  DB_ERROR,
+  ITEM_MISSING,
+  FILE_MISSING,
+  NOT_ENOUGH_STORAGE,
+};
+
+// Result of starting the upgrade.
+struct StartUpgradeResult {
+  StartUpgradeResult();
+  explicit StartUpgradeResult(StartUpgradeStatus status);
+  StartUpgradeResult(StartUpgradeStatus status,
+                     std::string digest,
+                     base::FilePath file_path);
+
+  // Support for move semantics.
+  StartUpgradeResult(StartUpgradeResult&& other) = default;
+  StartUpgradeResult& operator=(StartUpgradeResult&& other) = default;
+
+  StartUpgradeStatus status;
+  std::string digest;
+  base::FilePath file_path;
+};
+
+// Callback delivering results of starting the upgrade.
+typedef base::OnceCallback<void(StartUpgradeResult)> StartUpgradeCallback;
+
+}  // namespace offline_pages
+
+#endif  // COMPONENTS_OFFLINE_PAGES_CORE_MODEL_OFFLINE_PAGE_UPRGRADE_TYPES_H_
diff --git a/components/offline_pages/core/model/start_offline_page_upgrade_task.cc b/components/offline_pages/core/model/start_offline_page_upgrade_task.cc
new file mode 100644
index 0000000..74e31bf
--- /dev/null
+++ b/components/offline_pages/core/model/start_offline_page_upgrade_task.cc
@@ -0,0 +1,106 @@
+// 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 "components/offline_pages/core/model/start_offline_page_upgrade_task.h"
+
+#include "base/bind.h"
+#include "base/files/file_util.h"
+#include "base/sys_info.h"
+#include "components/offline_pages/core/offline_page_metadata_store_sql.h"
+#include "components/offline_pages/core/offline_store_utils.h"
+#include "sql/connection.h"
+#include "sql/statement.h"
+#include "sql/transaction.h"
+
+namespace offline_pages {
+
+namespace {
+
+const int64_t kMinFreeDiskSpaceInBytes = 10 * 1024 * 1024;  // 10 MB
+
+StartUpgradeResult StartOfflinePageUpgradeSync(
+    int64_t offline_id,
+    const base::FilePath& target_directory,
+    sql::Connection* db) {
+  if (!db)
+    return StartUpgradeResult(StartUpgradeStatus::DB_ERROR);
+
+  sql::Transaction transaction(db);
+  if (!transaction.Begin())
+    return StartUpgradeResult(StartUpgradeStatus::DB_ERROR);
+
+  const char kSql[] =
+      "SELECT file_path, file_size, digest"
+      " FROM offlinepages_v1 WHERE offline_id = ?";
+  sql::Statement select_statement(db->GetCachedStatement(SQL_FROM_HERE, kSql));
+  select_statement.BindInt64(0, offline_id);
+  if (!select_statement.Step())
+    return StartUpgradeResult(StartUpgradeStatus::ITEM_MISSING);
+
+  base::FilePath file_path =
+      store_utils::FromDatabaseFilePath(select_statement.ColumnString(0));
+  if (!base::PathExists(file_path))
+    return StartUpgradeResult(StartUpgradeStatus::FILE_MISSING);
+
+  int64_t free_disk_space_on_target =
+      base::SysInfo::AmountOfFreeDiskSpace(target_directory);
+  if (free_disk_space_on_target < kMinFreeDiskSpaceInBytes)
+    return StartUpgradeResult(StartUpgradeStatus::NOT_ENOUGH_STORAGE);
+
+  int64_t file_size = select_statement.ColumnInt64(1);
+  if (free_disk_space_on_target < 2 * file_size)
+    return StartUpgradeResult(StartUpgradeStatus::NOT_ENOUGH_STORAGE);
+
+  // Digest will be consumed when returning.
+  std::string digest = select_statement.ColumnString(2);
+
+  // Conditions for upgrade are met here.
+  // Update remaining attempts in DB and complete task.
+  const char kUpdateSql[] =
+      "UPDATE offlinepages_v1 SET upgrade_attempt = upgrade_attempt - 1 "
+      " WHERE offline_id = ?";
+  sql::Statement update_statement(
+      db->GetCachedStatement(SQL_FROM_HERE, kUpdateSql));
+  update_statement.BindInt64(0, offline_id);
+
+  if (!update_statement.Run() || !transaction.Commit())
+    return StartUpgradeResult(StartUpgradeStatus::DB_ERROR);
+
+  return StartUpgradeResult(StartUpgradeStatus::SUCCESS, std::move(digest),
+                            std::move(file_path));
+}
+
+}  // namespace
+
+StartOfflinePageUpgradeTask::StartOfflinePageUpgradeTask(
+    OfflinePageMetadataStoreSQL* store,
+    int64_t offline_id,
+    const base::FilePath& target_directory,
+    StartUpgradeCallback callback)
+    : store_(store),
+      offline_id_(offline_id),
+      target_directory_(target_directory),
+      callback_(std::move(callback)),
+      weak_ptr_factory_(this) {
+  DCHECK(store_);
+  DCHECK(!callback_.is_null());
+}
+
+StartOfflinePageUpgradeTask::~StartOfflinePageUpgradeTask() {}
+
+void StartOfflinePageUpgradeTask::Run() {
+  store_->Execute(
+      base::BindOnce(&StartOfflinePageUpgradeSync, offline_id_,
+                     target_directory_),
+      base::BindOnce(&StartOfflinePageUpgradeTask::InformUpgradeAttemptDone,
+                     weak_ptr_factory_.GetWeakPtr()));
+}
+
+void StartOfflinePageUpgradeTask::InformUpgradeAttemptDone(
+    StartUpgradeResult result) {
+  std::move(callback_).Run(std::move(result));
+  TaskComplete();
+}
+
+}  // namespace offline_pages
diff --git a/components/offline_pages/core/model/start_offline_page_upgrade_task.h b/components/offline_pages/core/model/start_offline_page_upgrade_task.h
new file mode 100644
index 0000000..14c8b9b
--- /dev/null
+++ b/components/offline_pages/core/model/start_offline_page_upgrade_task.h
@@ -0,0 +1,54 @@
+// 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.
+
+#ifndef COMPONENTS_OFFLINE_PAGES_CORE_MODEL_START_OFFLINE_PAGE_UPRGRADE_TASK_H_
+#define COMPONENTS_OFFLINE_PAGES_CORE_MODEL_START_OFFLINE_PAGE_UPRGRADE_TASK_H_
+
+#include <stdint.h>
+
+#include "base/files/file_path.h"
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "components/offline_pages/core/model/offline_page_upgrade_types.h"
+#include "components/offline_pages/core/task.h"
+
+namespace offline_pages {
+
+class OfflinePageMetadataStoreSQL;
+
+// This task is responsible for starting the upgrade process for an offline
+// page.
+class StartOfflinePageUpgradeTask : public Task {
+ public:
+  StartOfflinePageUpgradeTask(OfflinePageMetadataStoreSQL* store,
+                              int64_t offline_id,
+                              const base::FilePath& target_directory,
+                              StartUpgradeCallback callback);
+  ~StartOfflinePageUpgradeTask() override;
+
+  // Task implementation.
+  void Run() override;
+
+ private:
+  void InformUpgradeAttemptDone(StartUpgradeResult result);
+
+  // The store containing the pages to be cleared. Not owned.
+  OfflinePageMetadataStoreSQL* store_;
+
+  // ID of the item that needs to be updated.
+  int64_t offline_id_;
+
+  // Directory where the file is expected after upgrade.
+  base::FilePath target_directory_;
+
+  // Callback to return the result of starting the upgrade process.
+  StartUpgradeCallback callback_;
+
+  base::WeakPtrFactory<StartOfflinePageUpgradeTask> weak_ptr_factory_;
+  DISALLOW_COPY_AND_ASSIGN(StartOfflinePageUpgradeTask);
+};
+
+}  // namespace offline_pages
+
+#endif  // COMPONENTS_OFFLINE_PAGES_CORE_MODEL_START_OFFLINE_PAGE_UPRGRADE_TASK_H_
diff --git a/components/offline_pages/core/model/start_offline_page_upgrade_task_unittest.cc b/components/offline_pages/core/model/start_offline_page_upgrade_task_unittest.cc
new file mode 100644
index 0000000..4c8f9c6
--- /dev/null
+++ b/components/offline_pages/core/model/start_offline_page_upgrade_task_unittest.cc
@@ -0,0 +1,150 @@
+// 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 "components/offline_pages/core/model/start_offline_page_upgrade_task.h"
+
+#include "base/files/scoped_temp_dir.h"
+#include "base/memory/ptr_util.h"
+#include "base/test/test_mock_time_task_runner.h"
+#include "base/threading/thread_task_runner_handle.h"
+#include "components/offline_pages/core/model/offline_page_item_generator.h"
+#include "components/offline_pages/core/offline_page_metadata_store_test_util.h"
+#include "components/offline_pages/core/test_task_runner.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace offline_pages {
+
+namespace {
+const char kTestDigest[] = "TestDigest==";
+}  // namespace
+
+class StartOfflinePageUpgradeTaskTest : public testing::Test {
+ public:
+  StartOfflinePageUpgradeTaskTest();
+  ~StartOfflinePageUpgradeTaskTest() override;
+
+  void SetUp() override;
+  void TearDown() override;
+
+  void StartUpgradeDone(StartUpgradeResult result);
+
+  OfflinePageMetadataStoreSQL* store() { return store_test_util_.store(); }
+  OfflinePageMetadataStoreTestUtil* store_test_util() {
+    return &store_test_util_;
+  }
+  OfflinePageItemGenerator* generator() { return &generator_; }
+  TestTaskRunner* runner() { return &runner_; }
+
+  StartUpgradeCallback callback() {
+    return base::BindOnce(&StartOfflinePageUpgradeTaskTest::StartUpgradeDone,
+                          base::Unretained(this));
+  }
+
+  StartUpgradeResult* last_result() { return &last_result_; }
+
+ private:
+  scoped_refptr<base::TestMockTimeTaskRunner> task_runner_;
+  base::ThreadTaskRunnerHandle task_runner_handle_;
+  OfflinePageMetadataStoreTestUtil store_test_util_;
+  OfflinePageItemGenerator generator_;
+  TestTaskRunner runner_;
+  StartUpgradeResult last_result_;
+};
+
+StartOfflinePageUpgradeTaskTest::StartOfflinePageUpgradeTaskTest()
+    : task_runner_(new base::TestMockTimeTaskRunner()),
+      task_runner_handle_(task_runner_),
+      store_test_util_(task_runner_),
+      runner_(task_runner_),
+      last_result_(StartUpgradeStatus::DB_ERROR) {}
+
+StartOfflinePageUpgradeTaskTest::~StartOfflinePageUpgradeTaskTest() {}
+
+void StartOfflinePageUpgradeTaskTest::SetUp() {
+  store_test_util_.BuildStoreInMemory();
+}
+
+void StartOfflinePageUpgradeTaskTest::TearDown() {
+  store_test_util_.DeleteStore();
+}
+
+void StartOfflinePageUpgradeTaskTest::StartUpgradeDone(
+    StartUpgradeResult result) {
+  last_result_ = std::move(result);
+}
+
+TEST_F(StartOfflinePageUpgradeTaskTest, StartUpgradeSuccess) {
+  base::ScopedTempDir temp_dir;
+  ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+  generator()->SetArchiveDirectory(temp_dir.GetPath());
+
+  OfflinePageItem page = generator()->CreateItemWithTempFile();
+  page.upgrade_attempt = 3;
+  page.digest = kTestDigest;
+  store_test_util()->InsertItem(page);
+
+  auto task = base::MakeUnique<StartOfflinePageUpgradeTask>(
+      store(), page.offline_id, temp_dir.GetPath(), callback());
+  runner()->RunTask(std::move(task));
+
+  EXPECT_EQ(StartUpgradeStatus::SUCCESS, last_result()->status);
+  EXPECT_EQ(kTestDigest, last_result()->digest);
+  EXPECT_EQ(page.file_path, last_result()->file_path);
+
+  auto offline_page = store_test_util()->GetPageByOfflineId(page.offline_id);
+  ASSERT_TRUE(offline_page);
+  EXPECT_EQ(2, offline_page->upgrade_attempt);
+}
+
+TEST_F(StartOfflinePageUpgradeTaskTest, StartUpgradeItemMissing) {
+  auto task = base::MakeUnique<StartOfflinePageUpgradeTask>(
+      store(), 42, base::FilePath(), callback());
+  runner()->RunTask(std::move(task));
+
+  EXPECT_EQ(StartUpgradeStatus::ITEM_MISSING, last_result()->status);
+  EXPECT_TRUE(last_result()->digest.empty());
+  EXPECT_TRUE(last_result()->file_path.empty());
+}
+
+TEST_F(StartOfflinePageUpgradeTaskTest, StartUpgradeFileMissing) {
+  OfflinePageItem page = generator()->CreateItem();
+  page.upgrade_attempt = 3;
+  store_test_util()->InsertItem(page);
+
+  auto task = base::MakeUnique<StartOfflinePageUpgradeTask>(
+      store(), page.offline_id, base::FilePath(), callback());
+  runner()->RunTask(std::move(task));
+
+  EXPECT_EQ(StartUpgradeStatus::FILE_MISSING, last_result()->status);
+  EXPECT_TRUE(last_result()->digest.empty());
+  EXPECT_TRUE(last_result()->file_path.empty());
+
+  auto offline_page = store_test_util()->GetPageByOfflineId(page.offline_id);
+  ASSERT_TRUE(offline_page);
+  EXPECT_EQ(3, offline_page->upgrade_attempt);
+}
+
+TEST_F(StartOfflinePageUpgradeTaskTest, StartUpgradeNotEnoughSpace) {
+  base::ScopedTempDir temp_dir;
+  ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+  generator()->SetArchiveDirectory(temp_dir.GetPath());
+
+  OfflinePageItem page = generator()->CreateItemWithTempFile();
+  page.upgrade_attempt = 3;
+  store_test_util()->InsertItem(page);
+
+  auto task = base::MakeUnique<StartOfflinePageUpgradeTask>(
+      store(), page.offline_id, base::FilePath(), callback());
+  runner()->RunTask(std::move(task));
+
+  EXPECT_EQ(StartUpgradeStatus::NOT_ENOUGH_STORAGE, last_result()->status);
+  EXPECT_TRUE(last_result()->digest.empty());
+  EXPECT_TRUE(last_result()->file_path.empty());
+
+  auto offline_page = store_test_util()->GetPageByOfflineId(page.offline_id);
+  ASSERT_TRUE(offline_page);
+  EXPECT_EQ(3, offline_page->upgrade_attempt);
+}
+
+}  // namespace offline_pages
diff --git a/components/offline_pages/core/offline_page_feature.cc b/components/offline_pages/core/offline_page_feature.cc
index 076cbcc1..cf2b99f 100644
--- a/components/offline_pages/core/offline_page_feature.cc
+++ b/components/offline_pages/core/offline_page_feature.cc
@@ -60,6 +60,9 @@
 const base::Feature kOfflinePagesLimitlessPrefetchingFeature{
     "OfflinePagesLimitlessPrefetching", base::FEATURE_DISABLED_BY_DEFAULT};
 
+const base::Feature kOfflinePagesDescriptivePendingStatusFeature{
+    "OfflinePagesDescriptivePendingStatus", base::FEATURE_DISABLED_BY_DEFAULT};
+
 const char kPrefetchingOfflinePagesExperimentsOption[] = "exp";
 
 bool IsOfflineBookmarksEnabled() {
@@ -123,6 +126,11 @@
   return base::FeatureList::IsEnabled(kOfflinePagesCTV2Feature);
 }
 
+bool IsOfflinePagesDescriptivePendingStatusEnabled() {
+  return base::FeatureList::IsEnabled(
+      kOfflinePagesDescriptivePendingStatusFeature);
+}
+
 std::string GetPrefetchingOfflinePagesExperimentTag() {
   return base::GetFieldTrialParamValueByFeature(
       kPrefetchingOfflinePagesFeature,
diff --git a/components/offline_pages/core/offline_page_feature.h b/components/offline_pages/core/offline_page_feature.h
index db5d287..79fa8e5 100644
--- a/components/offline_pages/core/offline_page_feature.h
+++ b/components/offline_pages/core/offline_page_feature.h
@@ -23,6 +23,7 @@
 extern const base::Feature kOfflinePagesResourceBasedSnapshotFeature;
 extern const base::Feature kOfflinePagesPrefetchingUIFeature;
 extern const base::Feature kOfflinePagesLimitlessPrefetchingFeature;
+extern const base::Feature kOfflinePagesDescriptivePendingStatusFeature;
 
 // The parameter name used to find the experiment tag for prefetching offline
 // pages.
@@ -76,6 +77,10 @@
 // Returns true if we should record request origin as part of custom tabs V2.
 bool IsOfflinePagesCTV2Enabled();
 
+// Returns true if descriptive pending download status texts should be used in
+// notifications and Downloads Home.
+bool IsOfflinePagesDescriptivePendingStatusEnabled();
+
 // Returns an experiment tag provided by the field trial. This experiment tag
 // will be included in a custom header in all requests sent to Offline Prefetch
 // Server. The server will use this this optional tag to decide how to process
diff --git a/components/viz/service/display/direct_renderer.cc b/components/viz/service/display/direct_renderer.cc
index 6ba7ff7..8573da5 100644
--- a/components/viz/service/display/direct_renderer.cc
+++ b/components/viz/service/display/direct_renderer.cc
@@ -665,6 +665,8 @@
 // static
 ResourceTextureHint DirectRenderer::RenderPassTextureHint(
     const RenderPass* render_pass) {
+  // TODO(danakj): Pass these as 2 bools instead so subclasses don't have to
+  // worry about new hints being silently added to the field here.
   ResourceTextureHint hint = ResourceTextureHint::kFramebuffer;
   if (render_pass->generate_mipmap)
     hint |= ResourceTextureHint::kMipmap;
diff --git a/components/viz/service/display/direct_renderer.h b/components/viz/service/display/direct_renderer.h
index f2498e80..926b1812 100644
--- a/components/viz/service/display/direct_renderer.h
+++ b/components/viz/service/display/direct_renderer.h
@@ -159,7 +159,6 @@
 
   // Private interface implemented by subclasses for use by DirectRenderer.
   virtual bool CanPartialSwap() = 0;
-  virtual ResourceFormat BackbufferFormat() const = 0;
   virtual void UpdateRenderPassTextures(
       const RenderPassList& render_passes_in_draw_order,
       const base::flat_map<RenderPassId, RenderPassRequirements>&
diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc
index f3bb5714..36e299cc 100644
--- a/components/viz/service/display/gl_renderer.cc
+++ b/components/viz/service/display/gl_renderer.cc
@@ -446,16 +446,6 @@
   return context_provider->ContextCapabilities().post_sub_buffer;
 }
 
-ResourceFormat GLRenderer::BackbufferFormat() const {
-  if (current_frame()->current_render_pass->color_space.IsHDR()) {
-    // If a platform does not support half-float renderbuffers then it should
-    // not should request HDR rendering.
-    DCHECK(resource_provider_->IsRenderBufferFormatSupported(RGBA_F16));
-    return RGBA_F16;
-  }
-  return resource_provider_->best_texture_format();
-}
-
 void GLRenderer::DidChangeVisibility() {
   if (visible_) {
     output_surface_->EnsureBackbuffer();
@@ -3632,7 +3622,18 @@
 
   if (!resource)
     resource = std::make_unique<cc::ScopedResource>(resource_provider_);
-  resource->Allocate(enlarged_size, texturehint, BackbufferFormat(),
+
+  ResourceFormat backbuffer_format;
+  if (current_frame()->current_render_pass->color_space.IsHDR()) {
+    // If a platform does not support half-float renderbuffers then it should
+    // not should request HDR rendering.
+    DCHECK(resource_provider_->IsRenderBufferFormatSupported(RGBA_F16));
+    backbuffer_format = RGBA_F16;
+  } else {
+    backbuffer_format = resource_provider_->best_texture_format();
+  }
+
+  resource->Allocate(enlarged_size, texturehint, backbuffer_format,
                      current_frame()->current_render_pass->color_space);
 }
 
diff --git a/components/viz/service/display/gl_renderer.h b/components/viz/service/display/gl_renderer.h
index 65472a3..d1332aef 100644
--- a/components/viz/service/display/gl_renderer.h
+++ b/components/viz/service/display/gl_renderer.h
@@ -96,7 +96,6 @@
   bool blend_enabled() const { return blend_shadow_; }
 
   bool CanPartialSwap() override;
-  ResourceFormat BackbufferFormat() const override;
   void UpdateRenderPassTextures(
       const RenderPassList& render_passes_in_draw_order,
       const base::flat_map<RenderPassId, RenderPassRequirements>&
diff --git a/components/viz/service/display/skia_renderer.cc b/components/viz/service/display/skia_renderer.cc
index a0ef2d1..022a2a7 100644
--- a/components/viz/service/display/skia_renderer.cc
+++ b/components/viz/service/display/skia_renderer.cc
@@ -4,11 +4,11 @@
 
 #include "components/viz/service/display/skia_renderer.h"
 
+#include "base/bits.h"
 #include "base/command_line.h"
 #include "base/memory/ptr_util.h"
 #include "base/trace_event/trace_event.h"
 #include "cc/base/math_util.h"
-#include "cc/resources/scoped_resource.h"
 #include "components/viz/common/display/renderer_settings.h"
 #include "components/viz/common/frame_sinks/copy_output_request.h"
 #include "components/viz/common/quads/debug_border_draw_quad.h"
@@ -17,7 +17,9 @@
 #include "components/viz/common/quads/solid_color_draw_quad.h"
 #include "components/viz/common/quads/texture_draw_quad.h"
 #include "components/viz/common/quads/tile_draw_quad.h"
+#include "components/viz/common/resources/platform_color.h"
 #include "components/viz/common/resources/resource_fence.h"
+#include "components/viz/common/resources/resource_format_utils.h"
 #include "components/viz/service/display/output_surface.h"
 #include "components/viz/service/display/output_surface_frame.h"
 #include "gpu/command_buffer/client/gles2_interface.h"
@@ -83,7 +85,14 @@
 #endif
 }
 
-SkiaRenderer::~SkiaRenderer() {}
+SkiaRenderer::~SkiaRenderer() {
+  gpu::gles2::GLES2Interface* gl =
+      output_surface_->context_provider()->ContextGL();
+  for (auto& pair : render_pass_backings_) {
+    RenderPassBacking& backing = pair.second;
+    gl->DeleteTextures(1, &backing.gl_id);
+  }
+}
 
 bool SkiaRenderer::CanPartialSwap() {
 #if BUILDFLAG(ENABLE_VULKAN)
@@ -95,15 +104,6 @@
   return context_provider->ContextCapabilities().post_sub_buffer;
 }
 
-ResourceFormat SkiaRenderer::BackbufferFormat() const {
-  // From GL Renderer.
-  if (current_frame()->current_render_pass->color_space.IsHDR() &&
-      resource_provider_->IsRenderBufferFormatSupported(RGBA_F16)) {
-    return RGBA_F16;
-  }
-  return resource_provider_->best_texture_format();
-}
-
 void SkiaRenderer::BeginDrawingFrame() {
   TRACE_EVENT0("viz", "SkiaRenderer::BeginDrawingFrame");
 #if BUILDFLAG(ENABLE_VULKAN)
@@ -146,8 +146,7 @@
     root_surface_->getCanvas()->drawImage(image.get(), 0, 0, &paint);
     root_surface_->getCanvas()->flush();
   }
-  current_framebuffer_surface_lock_ = nullptr;
-  current_framebuffer_lock_ = nullptr;
+  non_root_surface_ = nullptr;
   current_canvas_ = nullptr;
 
   swap_buffer_rect_ = current_frame()->root_damage_rect;
@@ -191,7 +190,7 @@
 
 void SkiaRenderer::BindFramebufferToOutputSurface() {
   DCHECK(!output_surface_->HasExternalStencilTest());
-  current_framebuffer_lock_ = nullptr;
+  non_root_surface_ = nullptr;
 
   // LegacyFontHost will get LCD text and skia figures out what type to use.
   SkSurfaceProps surface_props =
@@ -260,31 +259,28 @@
 }
 
 void SkiaRenderer::BindFramebufferToTexture(const RenderPassId render_pass_id) {
-  cc::ScopedResource* texture = render_pass_textures_[render_pass_id].get();
-  DCHECK(texture);
-  DCHECK(texture->id());
 #if BUILDFLAG(ENABLE_VULKAN)
   NOTIMPLEMENTED();
   return;
 #endif
 
-  // Explicitly release lock, otherwise we can crash when try to lock
-  // same texture again.
-  current_framebuffer_surface_lock_ = nullptr;
-  current_framebuffer_lock_ = nullptr;
-  current_framebuffer_lock_ =
-      base::WrapUnique(new cc::ResourceProvider::ScopedWriteLockGL(
-          resource_provider_, texture->id()));
+  RenderPassBacking& backing = render_pass_backings_[render_pass_id];
+  DCHECK(backing.gl_id);
 
-  current_framebuffer_surface_lock_ =
-      base::WrapUnique(new cc::ResourceProvider::ScopedSkSurface(
-          output_surface_->context_provider()->GrContext(),
-          current_framebuffer_lock_->GetTexture(),
-          current_framebuffer_lock_->target(),
-          current_framebuffer_lock_->size(),
-          current_framebuffer_lock_->format(), false, true, 0));
-
-  current_canvas_ = current_framebuffer_surface_lock_->surface()->getCanvas();
+  GrGLTextureInfo texture_info;
+  texture_info.fID = backing.gl_id;
+  texture_info.fTarget = GL_TEXTURE_2D;
+  GrBackendTexture backend_texture(backing.size.width(), backing.size.height(),
+                                   ToGrPixelConfig(backing.format),
+                                   texture_info);
+  constexpr uint32_t flags = 0;
+  // LegacyFontHost will get LCD text and skia figures out what type to use.
+  SkSurfaceProps surface_props(flags, SkSurfaceProps::kLegacyFontHost_InitType);
+  int msaa_sample_count = 0;
+  non_root_surface_ = SkSurface::MakeFromBackendTextureAsRenderTarget(
+      output_surface_->context_provider()->GrContext(), backend_texture,
+      kTopLeft_GrSurfaceOrigin, msaa_sample_count, nullptr, &surface_props);
+  current_canvas_ = non_root_surface_->getCanvas();
 }
 
 void SkiaRenderer::SetScissorTestRect(const gfx::Rect& scissor_rect) {
@@ -611,13 +607,11 @@
   NOTIMPLEMENTED();
   return;
 #endif
-  cc::ScopedResource* content_texture =
-      render_pass_textures_[quad->render_pass_id].get();
-  DCHECK(content_texture);
-  DCHECK(content_texture->id());
-  DCHECK(!IsSoftwareResource(content_texture->id()));
+  RenderPassBacking& content_texture =
+      render_pass_backings_[quad->render_pass_id];
+  DCHECK(content_texture.gl_id);
   cc::DisplayResourceProvider::ScopedReadLockSkImage lock(
-      resource_provider_, content_texture->id());
+      resource_provider_, content_texture.gl_id);
   if (!lock.sk_image())
     return;
 
@@ -766,7 +760,7 @@
     const base::flat_map<RenderPassId, RenderPassRequirements>&
         render_passes_in_frame) {
   std::vector<RenderPassId> passes_to_delete;
-  for (const auto& pair : render_pass_textures_) {
+  for (const auto& pair : render_pass_backings_) {
     auto render_pass_it = render_passes_in_frame.find(pair.first);
     if (render_pass_it == render_passes_in_frame.end()) {
       passes_to_delete.push_back(pair.first);
@@ -775,56 +769,116 @@
 
     gfx::Size required_size = render_pass_it->second.size;
     ResourceTextureHint required_hint = render_pass_it->second.hint;
-    cc::ScopedResource* texture = pair.second.get();
-    DCHECK(texture);
 
-    bool size_appropriate = texture->size().width() >= required_size.width() &&
-                            texture->size().height() >= required_size.height();
-    bool hint_appropriate = (texture->hint() & required_hint) == required_hint;
-    if (texture->id() && (!size_appropriate || !hint_appropriate))
-      texture->Free();
+    const RenderPassBacking& backing = pair.second;
+    bool size_appropriate = backing.size.width() >= required_size.width() &&
+                            backing.size.height() >= required_size.height();
+    bool hint_appropriate =
+        (backing.usage_hint & required_hint) == required_hint;
+    if (!size_appropriate || !hint_appropriate)
+      passes_to_delete.push_back(pair.first);
   }
 
-  // Delete RenderPass textures from the previous frame that will not be used
+  gpu::gles2::GLES2Interface* gl =
+      output_surface_->context_provider()->ContextGL();
+
+  // Delete RenderPass backings from the previous frame that will not be used
   // again.
-  for (size_t i = 0; i < passes_to_delete.size(); ++i)
-    render_pass_textures_.erase(passes_to_delete[i]);
+  for (size_t i = 0; i < passes_to_delete.size(); ++i) {
+    auto it = render_pass_backings_.find(passes_to_delete[i]);
+    RenderPassBacking& backing = it->second;
+    gl->DeleteTextures(1, &backing.gl_id);
+    render_pass_backings_.erase(it);
+  }
 }
 
 void SkiaRenderer::AllocateRenderPassResourceIfNeeded(
     const RenderPassId& render_pass_id,
     const gfx::Size& enlarged_size,
-    ResourceTextureHint texturehint) {
+    ResourceTextureHint texture_hint) {
 #if BUILDFLAG(ENABLE_VULKAN)
   NOTIMPLEMENTED();
   return;
 #endif
-  auto& resource = render_pass_textures_[render_pass_id];
-  if (resource && resource->id())
+  auto it = render_pass_backings_.find(render_pass_id);
+  if (it != render_pass_backings_.end())
     return;
 
-  if (!resource)
-    resource = std::make_unique<cc::ScopedResource>(resource_provider_);
-  resource->Allocate(enlarged_size, texturehint, BackbufferFormat(),
-                     current_frame()->current_render_pass->color_space);
+  ContextProvider* context_provider = output_surface_->context_provider();
+  gpu::gles2::GLES2Interface* gl = context_provider->ContextGL();
+  const gpu::Capabilities& caps = context_provider->ContextCapabilities();
+
+  uint32_t texture_id;
+  gl->GenTextures(1, &texture_id);
+  gl->BindTexture(GL_TEXTURE_2D, texture_id);
+
+  gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+  gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+  gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+  gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+  if (caps.texture_usage) {
+    if (texture_hint & ResourceTextureHint::kFramebuffer) {
+      gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_USAGE_ANGLE,
+                        GL_FRAMEBUFFER_ATTACHMENT_ANGLE);
+    }
+  }
+
+  ResourceFormat backbuffer_format;
+  if (current_frame()->current_render_pass->color_space.IsHDR()) {
+    // If a platform does not support half-float renderbuffers then it should
+    // not should request HDR rendering.
+    DCHECK(caps.texture_half_float_linear);
+    DCHECK(caps.color_buffer_half_float_rgba);
+    backbuffer_format = RGBA_F16;
+  } else {
+    backbuffer_format =
+        PlatformColor::BestSupportedTextureFormat(caps.texture_format_bgra8888);
+  }
+
+  // If |texture_storage| is available, then we can use TexStorage2DEXT to make
+  // an immutable texture backing, which allows for optimized usage. Otherwise
+  // we must use the traditional TexImage2D to generate the texture backing.
+  if (caps.texture_storage) {
+    GLint levels = 1;
+    // If |texture_npot| is availble, and mipmaps are desired, we generate a
+    // mipmap for each power of 2 size. This is only done when using
+    // TexStorage2DEXT.
+    if (caps.texture_npot) {
+      if (texture_hint & ResourceTextureHint::kMipmap) {
+        levels += base::bits::Log2Floor(
+            std::max(enlarged_size.width(), enlarged_size.height()));
+      }
+    }
+    gl->TexStorage2DEXT(GL_TEXTURE_2D, levels,
+                        TextureStorageFormat(backbuffer_format),
+                        enlarged_size.width(), enlarged_size.height());
+  } else {
+    gl->TexImage2D(GL_TEXTURE_2D, 0, GLInternalFormat(backbuffer_format),
+                   enlarged_size.width(), enlarged_size.height(), 0,
+                   GLDataFormat(backbuffer_format),
+                   GLDataType(backbuffer_format), nullptr);
+  }
+
+  RenderPassBacking& backing = render_pass_backings_[render_pass_id];
+  backing.gl_id = texture_id;
+  backing.size = enlarged_size;
+  backing.usage_hint = texture_hint;
+  backing.format = backbuffer_format;
+  backing.color_space = current_frame()->current_render_pass->color_space;
+  gl->BindTexture(GL_TEXTURE_2D, 0);
 }
 
 bool SkiaRenderer::IsRenderPassResourceAllocated(
     const RenderPassId& render_pass_id) const {
-  auto texture_it = render_pass_textures_.find(render_pass_id);
-  if (texture_it == render_pass_textures_.end())
-    return false;
-
-  cc::ScopedResource* texture = texture_it->second.get();
-  DCHECK(texture);
-  return texture->id() != 0;
+  auto it = render_pass_backings_.find(render_pass_id);
+  return it != render_pass_backings_.end();
 }
 
 gfx::Size SkiaRenderer::GetRenderPassTextureSize(
     const RenderPassId& render_pass_id) {
-  cc::ScopedResource* texture = render_pass_textures_[render_pass_id].get();
-  DCHECK(texture);
-  return texture->size();
+  auto it = render_pass_backings_.find(render_pass_id);
+  DCHECK(it != render_pass_backings_.end());
+  return it->second.size;
 }
 
 }  // namespace viz
diff --git a/components/viz/service/display/skia_renderer.h b/components/viz/service/display/skia_renderer.h
index b2b2177a..bec5cc8 100644
--- a/components/viz/service/display/skia_renderer.h
+++ b/components/viz/service/display/skia_renderer.h
@@ -17,8 +17,6 @@
 namespace cc {
 class OutputSurface;
 class RenderPassDrawQuad;
-class ResourceProvider;
-class ScopedResource;
 }  // namespace cc
 
 namespace viz {
@@ -44,7 +42,6 @@
 
  protected:
   bool CanPartialSwap() override;
-  ResourceFormat BackbufferFormat() const override;
   void UpdateRenderPassTextures(
       const RenderPassList& render_passes_in_draw_order,
       const base::flat_map<RenderPassId, RenderPassRequirements>&
@@ -52,7 +49,7 @@
   void AllocateRenderPassResourceIfNeeded(
       const RenderPassId& render_pass_id,
       const gfx::Size& enlarged_size,
-      ResourceTextureHint texturehint) override;
+      ResourceTextureHint texture_hint) override;
   bool IsRenderPassResourceAllocated(
       const RenderPassId& render_pass_id) const override;
   gfx::Size GetRenderPassTextureSize(
@@ -104,8 +101,14 @@
       SkShader::TileMode content_tile_mode) const;
 
   // A map from RenderPass id to the texture used to draw the RenderPass from.
-  base::flat_map<RenderPassId, std::unique_ptr<cc::ScopedResource>>
-      render_pass_textures_;
+  struct RenderPassBacking {
+    uint32_t gl_id;
+    gfx::Size size;
+    ResourceTextureHint usage_hint;
+    ResourceFormat format;
+    gfx::ColorSpace color_space;
+  };
+  base::flat_map<RenderPassId, RenderPassBacking> render_pass_backings_;
 
   bool disable_picture_quad_image_filtering_ = false;
 
@@ -113,16 +116,13 @@
   gfx::Rect scissor_rect_;
 
   sk_sp<SkSurface> root_surface_;
+  sk_sp<SkSurface> non_root_surface_;
   sk_sp<SkSurface> overdraw_surface_;
   std::unique_ptr<SkCanvas> overdraw_canvas_;
   std::unique_ptr<SkNWayCanvas> nway_canvas_;
   SkCanvas* root_canvas_ = nullptr;
   SkCanvas* current_canvas_ = nullptr;
   SkPaint current_paint_;
-  std::unique_ptr<cc::ResourceProvider::ScopedWriteLockGL>
-      current_framebuffer_lock_;
-  std::unique_ptr<cc::ResourceProvider::ScopedSkSurface>
-      current_framebuffer_surface_lock_;
 
   bool use_swap_with_bounds_ = false;
 
diff --git a/components/viz/service/display/software_renderer.cc b/components/viz/service/display/software_renderer.cc
index 25370e807..7d7805b 100644
--- a/components/viz/service/display/software_renderer.cc
+++ b/components/viz/service/display/software_renderer.cc
@@ -68,10 +68,6 @@
   return true;
 }
 
-ResourceFormat SoftwareRenderer::BackbufferFormat() const {
-  return resource_provider_->best_texture_format();
-}
-
 void SoftwareRenderer::BeginDrawingFrame() {
   TRACE_EVENT0("viz", "SoftwareRenderer::BeginDrawingFrame");
   root_canvas_ = output_device_->BeginPaint(current_frame()->root_damage_rect);
diff --git a/components/viz/service/display/software_renderer.h b/components/viz/service/display/software_renderer.h
index 6f007c2..f4670cf8 100644
--- a/components/viz/service/display/software_renderer.h
+++ b/components/viz/service/display/software_renderer.h
@@ -40,7 +40,6 @@
 
  protected:
   bool CanPartialSwap() override;
-  ResourceFormat BackbufferFormat() const override;
   void UpdateRenderPassTextures(
       const RenderPassList& render_passes_in_draw_order,
       const base::flat_map<RenderPassId, RenderPassRequirements>&
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
index 9d9979e..c2fb402 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -371,6 +371,12 @@
     }
   }
 
+  // If this page is hidden by an interstitial, suppress all events.
+  if (GetRootManager()->hidden_by_interstitial_page()) {
+    ClearEvents();
+    return;
+  }
+
   // If the root's parent is in another accessibility tree but it wasn't
   // previously connected, post the proper notifications on the parent.
   BrowserAccessibility* parent = GetParentNodeFromParentTree();
diff --git a/content/browser/accessibility/browser_accessibility_manager.h b/content/browser/accessibility/browser_accessibility_manager.h
index d8bf8a4..adf726f 100644
--- a/content/browser/accessibility/browser_accessibility_manager.h
+++ b/content/browser/accessibility/browser_accessibility_manager.h
@@ -174,6 +174,15 @@
   void NavigationFailed();
   void DidStopLoading();
 
+  // Keep track of if this page is hidden by an interstitial, in which case
+  // we need to suppress all events.
+  void set_hidden_by_interstitial_page(bool hidden) {
+    hidden_by_interstitial_page_ = hidden;
+  }
+  bool hidden_by_interstitial_page() const {
+    return hidden_by_interstitial_page_;
+  }
+
   // Pretend that the given node has focus, for testing only. Doesn't
   // communicate with the renderer and doesn't fire any events.
   void SetFocusLocallyForTesting(BrowserAccessibility* node);
@@ -414,6 +423,10 @@
   // True if the user has initiated a navigation to another page.
   bool user_is_navigating_away_;
 
+  // Interstitial page, like an SSL warning.
+  // If so we need to suppress any events.
+  bool hidden_by_interstitial_page_ = false;
+
   BrowserAccessibilityFindInPageInfo find_in_page_info_;
 
   // These are only used by the root BrowserAccessibilityManager of a
diff --git a/content/browser/frame_host/interstitial_page_impl.cc b/content/browser/frame_host/interstitial_page_impl.cc
index 47a10217..5a7aa39 100644
--- a/content/browser/frame_host/interstitial_page_impl.cc
+++ b/content/browser/frame_host/interstitial_page_impl.cc
@@ -1014,4 +1014,24 @@
   return web_contents_impl->GetInputEventRouter();
 }
 
+BrowserAccessibilityManager*
+InterstitialPageImpl::GetRootBrowserAccessibilityManager() {
+  WebContentsImpl* web_contents_impl =
+      static_cast<WebContentsImpl*>(web_contents_);
+  if (!web_contents_impl)
+    return nullptr;
+
+  return web_contents_impl->GetRootBrowserAccessibilityManager();
+}
+
+BrowserAccessibilityManager*
+InterstitialPageImpl::GetOrCreateRootBrowserAccessibilityManager() {
+  WebContentsImpl* web_contents_impl =
+      static_cast<WebContentsImpl*>(web_contents_);
+  if (!web_contents_impl)
+    return nullptr;
+
+  return web_contents_impl->GetOrCreateRootBrowserAccessibilityManager();
+}
+
 }  // namespace content
diff --git a/content/browser/frame_host/interstitial_page_impl.h b/content/browser/frame_host/interstitial_page_impl.h
index 250db67..9e7eb0a 100644
--- a/content/browser/frame_host/interstitial_page_impl.h
+++ b/content/browser/frame_host/interstitial_page_impl.h
@@ -169,6 +169,9 @@
   TextInputManager* GetTextInputManager() override;
   void GetScreenInfo(content::ScreenInfo* screen_info) override;
   RenderWidgetHostInputEventRouter* GetInputEventRouter() override;
+  BrowserAccessibilityManager* GetRootBrowserAccessibilityManager() override;
+  BrowserAccessibilityManager* GetOrCreateRootBrowserAccessibilityManager()
+      override;
 
   bool enabled() const { return enabled_; }
   WebContents* web_contents() const;
diff --git a/content/browser/histogram_controller.cc b/content/browser/histogram_controller.cc
index de5084d7..da0031cb 100644
--- a/content/browser/histogram_controller.cc
+++ b/content/browser/histogram_controller.cc
@@ -16,6 +16,7 @@
 #include "content/public/common/bind_interface_helpers.h"
 #include "content/public/common/child_process_host.h"
 #include "content/public/common/process_type.h"
+#include "mojo/public/cpp/bindings/callback_helpers.h"
 
 namespace content {
 
@@ -55,35 +56,6 @@
   }
 }
 
-class FetcherCallbackRunner {
- public:
-  FetcherCallbackRunner(int sequence_number)
-      : sequence_number_(sequence_number), did_run_(false) {}
-
-  ~FetcherCallbackRunner() {
-    if (!did_run_) {
-      Run(std::vector<std::string>());
-    }
-  }
-  static content::mojom::ChildHistogramFetcher::
-      GetChildNonPersistentHistogramDataCallback
-      Make(int sequence_number) {
-    return base::BindOnce(
-        &FetcherCallbackRunner::Run,
-        std::make_unique<FetcherCallbackRunner>(sequence_number));
-  }
-
-  void Run(const std::vector<std::string>& pickled_histograms) {
-    did_run_ = true;
-    HistogramController::GetInstance()->OnHistogramDataCollected(
-        sequence_number_, pickled_histograms);
-  }
-
- private:
-  int sequence_number_;
-  bool did_run_;
-};
-
 void HistogramController::Register(HistogramSubscriber* subscriber) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   DCHECK(!subscriber_);
@@ -187,7 +159,10 @@
     if (auto* child_histogram_fetcher =
             GetChildHistogramFetcherInterface(iter.GetHost())) {
       child_histogram_fetcher->GetChildNonPersistentHistogramData(
-          FetcherCallbackRunner::Make(sequence_number));
+          mojo::WrapCallbackWithDefaultInvokeIfNotRun(
+              base::BindOnce(&HistogramController::OnHistogramDataCollected,
+                             base::Unretained(this), sequence_number),
+              std::vector<std::string>()));
       ++pending_processes;
     }
   }
@@ -207,7 +182,10 @@
     if (auto* child_histogram_fetcher =
             GetChildHistogramFetcherInterface(it.GetCurrentValue())) {
       child_histogram_fetcher->GetChildNonPersistentHistogramData(
-          FetcherCallbackRunner::Make(sequence_number));
+          mojo::WrapCallbackWithDefaultInvokeIfNotRun(
+              base::BindOnce(&HistogramController::OnHistogramDataCollected,
+                             base::Unretained(this), sequence_number),
+              std::vector<std::string>()));
       ++pending_processes;
     }
   }
diff --git a/content/browser/media/capture/cursor_renderer.cc b/content/browser/media/capture/cursor_renderer.cc
index 5a1062e5..3bb036fa5 100644
--- a/content/browser/media/capture/cursor_renderer.cc
+++ b/content/browser/media/capture/cursor_renderer.cc
@@ -33,7 +33,7 @@
     : cursor_display_setting_(cursor_display_setting),
       cursor_(gfx::NativeCursor()),
       update_scaled_cursor_bitmap_(false),
-      mouse_move_behavior_(NOT_MOVING),
+      mouse_move_behavior_atomic_(NOT_MOVING),
       weak_factory_(this) {
   // CursorRenderer can be constructed on any thread, but thereafter must be
   // used according to class-level comments.
@@ -58,7 +58,7 @@
   // In CURSOR_DISPLAYED_ON_MOUSE_MOVEMENT mode, if the user hasn't recently
   // moved nor clicked the mouse, do not render the mouse cursor.
   if (cursor_display_setting_ == CURSOR_DISPLAYED_ON_MOUSE_MOVEMENT &&
-      mouse_move_behavior_ != RECENTLY_MOVED_OR_CLICKED) {
+      mouse_move_behavior() != RECENTLY_MOVED_OR_CLICKED) {
     view_size_ = gfx::Size();
     return;
   }
@@ -196,17 +196,15 @@
 }
 
 bool CursorRenderer::IsUserInteractingWithView() const {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(ui_sequence_checker_);
-
-  return mouse_move_behavior_ == RECENTLY_MOVED_OR_CLICKED;
+  return mouse_move_behavior() == RECENTLY_MOVED_OR_CLICKED;
 }
 
 void CursorRenderer::OnMouseMoved(const gfx::Point& location) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(ui_sequence_checker_);
 
-  switch (mouse_move_behavior_) {
+  switch (mouse_move_behavior()) {
     case NOT_MOVING:
-      mouse_move_behavior_ = STARTING_TO_MOVE;
+      set_mouse_move_behavior(STARTING_TO_MOVE);
       mouse_move_start_location_ = location;
       mouse_activity_ended_timer_.Start(
           FROM_HERE, base::TimeDelta::FromSeconds(IDLE_TIMEOUT_SECONDS),
@@ -218,7 +216,7 @@
               MIN_MOVEMENT_PIXELS ||
           std::abs(location.y() - mouse_move_start_location_.y()) >
               MIN_MOVEMENT_PIXELS) {
-        mouse_move_behavior_ = RECENTLY_MOVED_OR_CLICKED;
+        set_mouse_move_behavior(RECENTLY_MOVED_OR_CLICKED);
         mouse_activity_ended_timer_.Reset();
       }
       break;
@@ -230,7 +228,7 @@
   // If there is sufficient mouse activity, or the cursor should always be
   // displayed, snapshot the cursor state and run the redraw callback to show it
   // at its new location in the video.
-  if (mouse_move_behavior_ == RECENTLY_MOVED_OR_CLICKED ||
+  if (mouse_move_behavior() == RECENTLY_MOVED_OR_CLICKED ||
       cursor_display_setting_ == CURSOR_DISPLAYED_ALWAYS) {
     SnapshotCursorState();
     if (!needs_redraw_callback_.is_null()) {
@@ -250,7 +248,7 @@
         base::BindRepeating(&CursorRenderer::OnMouseHasGoneIdle,
                             base::Unretained(this)));
   }
-  mouse_move_behavior_ = RECENTLY_MOVED_OR_CLICKED;
+  set_mouse_move_behavior(RECENTLY_MOVED_OR_CLICKED);
 
   // Regardless of the |cursor_display_setting_|, snapshot the cursor and run
   // the redraw callback to show it at its current location in the video.
@@ -263,7 +261,7 @@
 void CursorRenderer::OnMouseHasGoneIdle() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(ui_sequence_checker_);
 
-  mouse_move_behavior_ = NOT_MOVING;
+  set_mouse_move_behavior(NOT_MOVING);
 
   // The timer has fired to indicate no further mouse activity. It's a good idea
   // to snapshot the cursor and run the redraw callback to ensure it is being
diff --git a/content/browser/media/capture/cursor_renderer.h b/content/browser/media/capture/cursor_renderer.h
index 40bb12a..15a2468 100644
--- a/content/browser/media/capture/cursor_renderer.h
+++ b/content/browser/media/capture/cursor_renderer.h
@@ -5,6 +5,8 @@
 #ifndef CONTENT_BROWSER_MEDIA_CAPTURE_CURSOR_RENDERER_H_
 #define CONTENT_BROWSER_MEDIA_CAPTURE_CURSOR_RENDERER_H_
 
+#include <atomic>
+
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
@@ -27,9 +29,9 @@
 // mouse events and this base class will process them.
 //
 // All parts of this class are meant to run on the UI BrowserThread, except for
-// RenderOnVideoFrame(), which may be called from any thread. It is up to the
-// client code to ensure the CursorRenderer's lifetime while in use across
-// multiple threads.
+// RenderOnVideoFrame() and IsUserInteractingWithView(), which may be called
+// from any thread. It is up to the client code to ensure the CursorRenderer's
+// lifetime while in use across multiple threads.
 class CONTENT_EXPORT CursorRenderer {
  public:
   // Setting to control cursor display based on either mouse movement or always
@@ -109,6 +111,14 @@
     RECENTLY_MOVED_OR_CLICKED,  // Sufficient mouse activity present.
   };
 
+  // Accessors for |mouse_move_behavior_atomic_|. See comments below.
+  MouseMoveBehavior mouse_move_behavior() const {
+    return mouse_move_behavior_atomic_.load(std::memory_order_relaxed);
+  }
+  void set_mouse_move_behavior(MouseMoveBehavior behavior) {
+    mouse_move_behavior_atomic_.store(behavior, std::memory_order_relaxed);
+  }
+
   // Takes a snapshot of the current mouse cursor state, for use by
   // RenderOnVideoFrame().
   void SnapshotCursorState();
@@ -137,10 +147,16 @@
   // interacting with the view and whether to run the |needs_redraw_callback_|.
   // These do not need to be protected by |lock_| since they are only accessed
   // on the UI BrowserThread.
-  MouseMoveBehavior mouse_move_behavior_;
   gfx::Point mouse_move_start_location_;
   base::OneShotTimer mouse_activity_ended_timer_;
 
+  // Updated in the mouse event handlers (on the UI BrowserThread) and read from
+  // by IsUserInteractingWithView() (on any thread). This is not protected by
+  // |lock_| since strict memory ordering semantics are not necessary, just
+  // atomicity between threads. All code should use the accessors to read or set
+  // this value.
+  std::atomic<MouseMoveBehavior> mouse_move_behavior_atomic_;
+
   // Run whenever the mouse cursor would be rendered differently than when it
   // was rendered in the last video frame.
   base::RepeatingClosure needs_redraw_callback_;
diff --git a/content/browser/media/capture/cursor_renderer_aura_unittest.cc b/content/browser/media/capture/cursor_renderer_aura_unittest.cc
index 149dda6..4fcd69e9 100644
--- a/content/browser/media/capture/cursor_renderer_aura_unittest.cc
+++ b/content/browser/media/capture/cursor_renderer_aura_unittest.cc
@@ -85,6 +85,10 @@
     return cursor_renderer_->RenderOnVideoFrame(frame, frame->visible_rect());
   }
 
+  bool IsUserInteractingWithView() {
+    return cursor_renderer_->IsUserInteractingWithView();
+  }
+
   void MoveMouseCursorWithinWindow() {
     gfx::Point point1(20, 20);
     ui::MouseEvent event1(ui::ET_MOUSE_MOVED, point1, point1, Now(), 0, 0);
@@ -149,14 +153,17 @@
 
   // Cursor displayed at start.
   EXPECT_TRUE(CursorDisplayed());
+  EXPECT_FALSE(IsUserInteractingWithView());
 
   // Cursor displayed after mouse movement.
   MoveMouseCursorWithinWindow();
   EXPECT_TRUE(CursorDisplayed());
+  EXPECT_TRUE(IsUserInteractingWithView());
 
   // Cursor displayed after idle period.
   SimulateMouseWentIdle();
   EXPECT_TRUE(CursorDisplayed());
+  EXPECT_FALSE(IsUserInteractingWithView());
 
   // Cursor not displayed with mouse outside the window.
   MoveMouseCursorOutsideWindow();
@@ -166,18 +173,22 @@
 TEST_F(CursorRendererAuraTest, CursorDuringMouseMovement) {
   // Cursor not displayed at start.
   EXPECT_FALSE(CursorDisplayed());
+  EXPECT_FALSE(IsUserInteractingWithView());
 
   // Cursor displayed after mouse movement.
   MoveMouseCursorWithinWindow();
   EXPECT_TRUE(CursorDisplayed());
+  EXPECT_TRUE(IsUserInteractingWithView());
 
   // Cursor not displayed after idle period.
   SimulateMouseWentIdle();
   EXPECT_FALSE(CursorDisplayed());
+  EXPECT_FALSE(IsUserInteractingWithView());
 
   // Cursor displayed with mouse movement following idle period.
   MoveMouseCursorWithinWindow();
   EXPECT_TRUE(CursorDisplayed());
+  EXPECT_TRUE(IsUserInteractingWithView());
 
   // Cursor not displayed if mouse outside the window
   MoveMouseCursorOutsideWindow();
@@ -187,10 +198,12 @@
 TEST_F(CursorRendererAuraTest, CursorOnActiveWindow) {
   // Cursor not displayed at start.
   EXPECT_FALSE(CursorDisplayed());
+  EXPECT_FALSE(IsUserInteractingWithView());
 
   // Cursor displayed after mouse movement.
   MoveMouseCursorWithinWindow();
   EXPECT_TRUE(CursorDisplayed());
+  EXPECT_TRUE(IsUserInteractingWithView());
 
   // Cursor not be displayed if a second window is activated.
   std::unique_ptr<aura::Window> window2(aura::test::CreateTestWindowWithBounds(
@@ -198,11 +211,13 @@
   wm::ActivateWindow(window2.get());
   MoveMouseCursorWithinWindow();
   EXPECT_FALSE(CursorDisplayed());
+  EXPECT_TRUE(IsUserInteractingWithView());
 
   // Cursor displayed if window activated again.
   wm::ActivateWindow(window_.get());
   MoveMouseCursorWithinWindow();
   EXPECT_TRUE(CursorDisplayed());
+  EXPECT_TRUE(IsUserInteractingWithView());
 }
 
 TEST_F(CursorRendererAuraTest, CursorRenderedOnFrame) {
diff --git a/content/browser/media/capture/cursor_renderer_mac_unittest.mm b/content/browser/media/capture/cursor_renderer_mac_unittest.mm
index 4e24060..bb3f629 100644
--- a/content/browser/media/capture/cursor_renderer_mac_unittest.mm
+++ b/content/browser/media/capture/cursor_renderer_mac_unittest.mm
@@ -74,6 +74,10 @@
     return cursor_renderer_->RenderOnVideoFrame(frame, frame->visible_rect());
   }
 
+  bool IsUserInteractingWithView() {
+    return cursor_renderer_->IsUserInteractingWithView();
+  }
+
   // Here the |point| is in Aura coordinates (the origin (0, 0) is at top-left
   // of the view). To move the cursor to that point by Quartz Display service,
   // it needs to be converted into Cocoa coordinates (the origin is at
@@ -155,18 +159,22 @@
 TEST_F(CursorRendererMacTest, CursorDuringMouseMovement) {
   // Cursor not displayed at start.
   EXPECT_FALSE(CursorDisplayed());
+  EXPECT_FALSE(IsUserInteractingWithView());
 
   // Cursor displayed after mouse movement.
   MoveMouseCursorWithinWindow();
   EXPECT_TRUE(CursorDisplayed());
+  EXPECT_TRUE(IsUserInteractingWithView());
 
   // Cursor not displayed after idle period.
   SimulateMouseWentIdle();
   EXPECT_FALSE(CursorDisplayed());
+  EXPECT_FALSE(IsUserInteractingWithView());
 
   // Cursor displayed with mouse movement following idle period.
   MoveMouseCursorWithinWindow();
   EXPECT_TRUE(CursorDisplayed());
+  EXPECT_TRUE(IsUserInteractingWithView());
 
   // Cursor not displayed if mouse outside the window
   MoveMouseCursorOutsideWindow();
@@ -176,20 +184,24 @@
 TEST_F(CursorRendererMacTest, CursorOnActiveWindow) {
   // Cursor not displayed at start.
   EXPECT_FALSE(CursorDisplayed());
+  EXPECT_FALSE(IsUserInteractingWithView());
 
   // Cursor displayed after mouse movement.
   MoveMouseCursorWithinWindow();
   EXPECT_TRUE(CursorDisplayed());
+  EXPECT_TRUE(IsUserInteractingWithView());
 
   // Cursor not displayed if window is not activated.
   [test_window() setPretendIsKeyWindow:NO];
   MoveMouseCursorWithinWindow();
   EXPECT_FALSE(CursorDisplayed());
+  EXPECT_TRUE(IsUserInteractingWithView());
 
   // Cursor is displayed again if window is activated again.
   [test_window() setPretendIsKeyWindow:YES];
   MoveMouseCursorWithinWindow();
   EXPECT_TRUE(CursorDisplayed());
+  EXPECT_TRUE(IsUserInteractingWithView());
 }
 
 TEST_F(CursorRendererMacTest, CursorRenderedOnFrame) {
diff --git a/content/browser/service_worker/embedded_worker_instance.cc b/content/browser/service_worker/embedded_worker_instance.cc
index 040b4fc..d42d193 100644
--- a/content/browser/service_worker/embedded_worker_instance.cc
+++ b/content/browser/service_worker/embedded_worker_instance.cc
@@ -20,8 +20,6 @@
 #include "content/common/content_switches_internal.h"
 #include "content/common/renderer.mojom.h"
 #include "content/common/service_worker/embedded_worker_messages.h"
-#include "content/common/service_worker/embedded_worker_settings.h"
-#include "content/common/service_worker/embedded_worker_start_params.h"
 #include "content/common/service_worker/service_worker_types.h"
 #include "content/common/service_worker/service_worker_utils.h"
 #include "content/public/browser/browser_thread.h"
@@ -76,7 +74,7 @@
 
 using SetupProcessCallback = base::OnceCallback<void(
     ServiceWorkerStatusCode,
-    std::unique_ptr<EmbeddedWorkerStartParams>,
+    mojom::EmbeddedWorkerStartParamsPtr,
     std::unique_ptr<ServiceWorkerProcessManager::AllocatedProcessInfo>,
     std::unique_ptr<EmbeddedWorkerInstance::DevToolsProxy> devtools_proxy)>;
 
@@ -87,7 +85,7 @@
 void SetupOnUIThread(
     base::WeakPtr<ServiceWorkerProcessManager> process_manager,
     bool can_use_existing_process,
-    std::unique_ptr<EmbeddedWorkerStartParams> params,
+    mojom::EmbeddedWorkerStartParamsPtr params,
     mojom::EmbeddedWorkerInstanceClientAssociatedRequest request,
     ServiceWorkerContextCore* context,
     base::WeakPtr<ServiceWorkerContextCore> weak_context,
@@ -149,7 +147,7 @@
   // thread.
   // TODO(bengr): Support changes to the data saver setting while the worker is
   // running.
-  params->settings.data_saver_enabled =
+  params->data_saver_enabled =
       GetContentClient()->browser()->IsDataSaverEnabled(
           process_manager->browser_context());
 
@@ -338,7 +336,7 @@
     return start_worker_sent_time_;
   }
 
-  void Start(std::unique_ptr<EmbeddedWorkerStartParams> params,
+  void Start(mojom::EmbeddedWorkerStartParamsPtr params,
              StatusCallback callback) {
     DCHECK_CURRENTLY_ON(BrowserThread::IO);
     DCHECK(instance_->context_);
@@ -385,7 +383,7 @@
  private:
   void OnSetupCompleted(
       ServiceWorkerStatusCode status,
-      std::unique_ptr<EmbeddedWorkerStartParams> params,
+      mojom::EmbeddedWorkerStartParamsPtr params,
       std::unique_ptr<ServiceWorkerProcessManager::AllocatedProcessInfo>
           process_info,
       std::unique_ptr<EmbeddedWorkerInstance::DevToolsProxy> devtools_proxy) {
@@ -475,7 +473,7 @@
 }
 
 void EmbeddedWorkerInstance::Start(
-    std::unique_ptr<EmbeddedWorkerStartParams> params,
+    mojom::EmbeddedWorkerStartParamsPtr params,
     ProviderInfoGetter provider_info_getter,
     mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
     mojom::ControllerServiceWorkerRequest controller_request,
@@ -508,7 +506,7 @@
   params->worker_devtools_agent_route_id = MSG_ROUTING_NONE;
   params->wait_for_debugger = false;
   params->devtools_worker_token = devtools_worker_token_;
-  params->settings.v8_cache_options = GetV8CacheOptions();
+  params->v8_cache_options = GetV8CacheOptions();
 
   mojom::EmbeddedWorkerInstanceClientAssociatedRequest request =
       mojo::MakeRequest(&client_);
@@ -634,7 +632,7 @@
 }
 
 ServiceWorkerStatusCode EmbeddedWorkerInstance::SendStartWorker(
-    std::unique_ptr<EmbeddedWorkerStartParams> params) {
+    mojom::EmbeddedWorkerStartParamsPtr params) {
   if (!context_)
     return SERVICE_WORKER_ERROR_ABORT;
   if (!context_->GetDispatcherHost(process_id())) {
@@ -666,7 +664,8 @@
   inflight_start_task_->set_start_worker_sent_time(base::TimeTicks::Now());
   mojom::ServiceWorkerProviderInfoForStartWorkerPtr provider_info =
       std::move(provider_info_getter_).Run(process_id());
-  client_->StartWorker(*params, std::move(pending_dispatcher_request_),
+  client_->StartWorker(std::move(params),
+                       std::move(pending_dispatcher_request_),
                        std::move(pending_controller_request_),
                        std::move(pending_installed_scripts_info_),
                        std::move(pending_service_worker_host_ptr_info_),
diff --git a/content/browser/service_worker/embedded_worker_instance.h b/content/browser/service_worker/embedded_worker_instance.h
index a2197154..c1d1fda 100644
--- a/content/browser/service_worker/embedded_worker_instance.h
+++ b/content/browser/service_worker/embedded_worker_instance.h
@@ -40,7 +40,6 @@
 namespace content {
 
 class EmbeddedWorkerRegistry;
-struct EmbeddedWorkerStartParams;
 class ServiceWorkerContentSettingsProxyImpl;
 class ServiceWorkerContextCore;
 class ServiceWorkerVersion;
@@ -134,7 +133,7 @@
   // |provider_info_getter| is called when this instance
   // allocates a process and is ready to send a StartWorker message.
   void Start(
-      std::unique_ptr<EmbeddedWorkerStartParams> params,
+      mojom::EmbeddedWorkerStartParamsPtr params,
       ProviderInfoGetter provider_info_getter,
       mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
       mojom::ControllerServiceWorkerRequest controller_request,
@@ -255,7 +254,7 @@
 
   // Sends StartWorker message via Mojo.
   ServiceWorkerStatusCode SendStartWorker(
-      std::unique_ptr<EmbeddedWorkerStartParams> params);
+      mojom::EmbeddedWorkerStartParamsPtr params);
 
   // Called back from StartTask after a start worker message is sent.
   void OnStartWorkerMessageSent(bool is_script_streaming);
diff --git a/content/browser/service_worker/embedded_worker_instance_unittest.cc b/content/browser/service_worker/embedded_worker_instance_unittest.cc
index cac0d65..01a53b9 100644
--- a/content/browser/service_worker/embedded_worker_instance_unittest.cc
+++ b/content/browser/service_worker/embedded_worker_instance_unittest.cc
@@ -23,7 +23,6 @@
 #include "content/browser/service_worker/service_worker_version.h"
 #include "content/common/service_worker/embedded_worker.mojom.h"
 #include "content/common/service_worker/embedded_worker_messages.h"
-#include "content/common/service_worker/embedded_worker_start_params.h"
 #include "content/common/service_worker/service_worker_event_dispatcher.mojom.h"
 #include "content/common/service_worker/service_worker_utils.h"
 #include "content/public/common/child_process_host.h"
@@ -187,7 +186,7 @@
                                       const GURL& url) {
     ServiceWorkerStatusCode status;
     base::RunLoop run_loop;
-    std::unique_ptr<EmbeddedWorkerStartParams> params =
+    mojom::EmbeddedWorkerStartParamsPtr params =
         CreateStartParams(id, pattern, url);
     worker->Start(
         std::move(params), CreateProviderInfoGetter(), CreateEventDispatcher(),
@@ -198,10 +197,9 @@
     return status;
   }
 
-  std::unique_ptr<EmbeddedWorkerStartParams>
+  mojom::EmbeddedWorkerStartParamsPtr
   CreateStartParams(int version_id, const GURL& scope, const GURL& script_url) {
-    std::unique_ptr<EmbeddedWorkerStartParams> params =
-        std::make_unique<EmbeddedWorkerStartParams>();
+    auto params = mojom::EmbeddedWorkerStartParams::New();
     params->service_worker_version_id = version_id;
     params->scope = scope;
     params->script_url = script_url;
@@ -239,7 +237,7 @@
 
   ServiceWorkerStatusCode SimulateSendStartWorker(
       EmbeddedWorkerInstance* worker,
-      std::unique_ptr<EmbeddedWorkerStartParams> params) {
+      mojom::EmbeddedWorkerStartParamsPtr params) {
     return worker->SendStartWorker(std::move(params));
   }
 
@@ -369,7 +367,7 @@
   // Start should succeed.
   ServiceWorkerStatusCode status;
   base::RunLoop run_loop;
-  std::unique_ptr<EmbeddedWorkerStartParams> params =
+  mojom::EmbeddedWorkerStartParamsPtr params =
       CreateStartParams(service_worker_version_id, pattern, url);
   worker->Start(
       std::move(params), CreateProviderInfoGetter(), CreateEventDispatcher(),
@@ -429,7 +427,7 @@
     // Start once normally.
     ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
     base::RunLoop run_loop;
-    std::unique_ptr<EmbeddedWorkerStartParams> params =
+    mojom::EmbeddedWorkerStartParamsPtr params =
         CreateStartParams(service_worker_version_id, pattern, url);
     worker->Start(
         std::move(params), CreateProviderInfoGetter(), CreateEventDispatcher(),
@@ -456,7 +454,7 @@
     // Start again.
     ServiceWorkerStatusCode status;
     base::RunLoop run_loop;
-    std::unique_ptr<EmbeddedWorkerStartParams> params =
+    mojom::EmbeddedWorkerStartParamsPtr params =
         CreateStartParams(service_worker_version_id, pattern, url);
     worker->Start(
         std::move(params), CreateProviderInfoGetter(), CreateEventDispatcher(),
@@ -545,7 +543,7 @@
     // Start worker1.
     ServiceWorkerStatusCode status;
     base::RunLoop run_loop;
-    std::unique_ptr<EmbeddedWorkerStartParams> params =
+    mojom::EmbeddedWorkerStartParamsPtr params =
         CreateStartParams(version_id1, pattern, url);
     worker1->Start(
         std::move(params), CreateProviderInfoGetter(), CreateEventDispatcher(),
@@ -560,7 +558,7 @@
     // Start worker2.
     ServiceWorkerStatusCode status;
     base::RunLoop run_loop;
-    std::unique_ptr<EmbeddedWorkerStartParams> params =
+    mojom::EmbeddedWorkerStartParamsPtr params =
         CreateStartParams(version_id2, pattern, url);
     worker2->Start(
         std::move(params), CreateProviderInfoGetter(), CreateEventDispatcher(),
@@ -601,7 +599,7 @@
 
   // Run the start worker sequence and detach during process allocation.
   ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
-  std::unique_ptr<EmbeddedWorkerStartParams> params =
+  mojom::EmbeddedWorkerStartParamsPtr params =
       CreateStartParams(version_id, scope, url);
   worker->Start(std::move(params), CreateProviderInfoGetter(),
                 CreateEventDispatcher(), CreateController(),
@@ -637,7 +635,7 @@
 
   // Run the start worker sequence until a start worker message is sent.
   ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
-  std::unique_ptr<EmbeddedWorkerStartParams> params =
+  mojom::EmbeddedWorkerStartParamsPtr params =
       CreateStartParams(version_id, scope, url);
   worker->Start(std::move(params), CreateProviderInfoGetter(),
                 CreateEventDispatcher(), CreateController(),
@@ -680,7 +678,7 @@
   // Stop the start worker sequence before a process is allocated.
   ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
 
-  std::unique_ptr<EmbeddedWorkerStartParams> params =
+  mojom::EmbeddedWorkerStartParamsPtr params =
       CreateStartParams(version_id, scope, url);
   worker->Start(std::move(params), CreateProviderInfoGetter(),
                 CreateEventDispatcher(), CreateController(),
@@ -759,7 +757,7 @@
   // Run the start worker sequence until pause after download.
   ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
 
-  std::unique_ptr<EmbeddedWorkerStartParams> params =
+  mojom::EmbeddedWorkerStartParamsPtr params =
       CreateStartParams(version_id, scope, url);
   params->pause_after_download = true;
   worker->Start(std::move(params), CreateProviderInfoGetter(),
@@ -793,7 +791,7 @@
 
   // Run the start worker sequence until a start worker message is sent.
   ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
-  std::unique_ptr<EmbeddedWorkerStartParams> params =
+  mojom::EmbeddedWorkerStartParamsPtr params =
       CreateStartParams(version_id, scope, url);
   worker->Start(std::move(params), CreateProviderInfoGetter(),
                 CreateEventDispatcher(), CreateController(),
@@ -863,7 +861,7 @@
 
   // Start the worker.
   base::RunLoop run_loop;
-  std::unique_ptr<EmbeddedWorkerStartParams> params =
+  mojom::EmbeddedWorkerStartParamsPtr params =
       CreateStartParams(version_id, pattern, url);
   worker->Start(
       std::move(params), CreateProviderInfoGetter(), CreateEventDispatcher(),
@@ -901,7 +899,7 @@
   worker->AddListener(this);
 
   // Attempt to start the worker.
-  std::unique_ptr<EmbeddedWorkerStartParams> params =
+  mojom::EmbeddedWorkerStartParamsPtr params =
       CreateStartParams(version_id, pattern, url);
   worker->Start(std::move(params), CreateProviderInfoGetter(),
                 CreateEventDispatcher(), CreateController(),
@@ -927,7 +925,7 @@
 
  private:
   void StartWorker(
-      const EmbeddedWorkerStartParams&,
+      mojom::EmbeddedWorkerStartParamsPtr,
       mojom::ServiceWorkerEventDispatcherRequest,
       mojom::ControllerServiceWorkerRequest,
       blink::mojom::ServiceWorkerInstalledScriptsInfoPtr /* unused */,
@@ -959,7 +957,7 @@
   worker->AddListener(this);
 
   // Attempt to start the worker.
-  std::unique_ptr<EmbeddedWorkerStartParams> params =
+  mojom::EmbeddedWorkerStartParamsPtr params =
       CreateStartParams(version_id, pattern, url);
   worker->Start(std::move(params), CreateProviderInfoGetter(),
                 CreateEventDispatcher(), CreateController(),
@@ -1018,7 +1016,7 @@
   // cause a crash.
   std::pair<blink::WebConsoleMessage::Level, std::string> test_message =
       std::make_pair(blink::WebConsoleMessage::kLevelVerbose, "");
-  std::unique_ptr<EmbeddedWorkerStartParams> params =
+  mojom::EmbeddedWorkerStartParamsPtr params =
       CreateStartParams(version_id, pattern, url);
   worker->Start(std::move(params), CreateProviderInfoGetter(),
                 CreateEventDispatcher(), CreateController(),
@@ -1058,7 +1056,7 @@
   std::unique_ptr<EmbeddedWorkerInstance> worker =
       embedded_worker_registry()->CreateWorker(pair.second.get());
   SetWorkerStatus(worker.get(), EmbeddedWorkerStatus::STARTING);
-  auto params = std::make_unique<EmbeddedWorkerStartParams>();
+  auto params = mojom::EmbeddedWorkerStartParams::New();
   ServiceWorkerStatusCode result =
       SimulateSendStartWorker(worker.get(), std::move(params));
   EXPECT_EQ(SERVICE_WORKER_ERROR_IPC_FAILED, result);
diff --git a/content/browser/service_worker/embedded_worker_test_helper.cc b/content/browser/service_worker/embedded_worker_test_helper.cc
index 86261926..ed49728 100644
--- a/content/browser/service_worker/embedded_worker_test_helper.cc
+++ b/content/browser/service_worker/embedded_worker_test_helper.cc
@@ -27,7 +27,6 @@
 #include "content/common/background_fetch/background_fetch_types.h"
 #include "content/common/renderer.mojom.h"
 #include "content/common/service_worker/embedded_worker_messages.h"
-#include "content/common/service_worker/embedded_worker_start_params.h"
 #include "content/common/service_worker/service_worker_event_dispatcher.mojom.h"
 #include "content/common/service_worker/service_worker_messages.h"
 #include "content/common/service_worker/service_worker_utils.h"
@@ -97,7 +96,7 @@
     ~MockEmbeddedWorkerInstanceClient() {}
 
 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StartWorker(
-    const EmbeddedWorkerStartParams& params,
+    mojom::EmbeddedWorkerStartParamsPtr params,
     mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
     mojom::ControllerServiceWorkerRequest controller_request,
     blink::mojom::ServiceWorkerInstalledScriptsInfoPtr installed_scripts_info,
@@ -108,17 +107,18 @@
   if (!helper_)
     return;
 
-  embedded_worker_id_ = params.embedded_worker_id;
+  embedded_worker_id_ = params->embedded_worker_id;
 
   EmbeddedWorkerInstance* worker =
-      helper_->registry()->GetWorker(params.embedded_worker_id);
+      helper_->registry()->GetWorker(params->embedded_worker_id);
   ASSERT_TRUE(worker);
   EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status());
 
-  helper_->OnStartWorkerStub(
-      params, std::move(dispatcher_request), std::move(controller_request),
-      std::move(service_worker_host), std::move(instance_host),
-      std::move(provider_info), std::move(installed_scripts_info));
+  helper_->OnStartWorkerStub(std::move(params), std::move(dispatcher_request),
+                             std::move(controller_request),
+                             std::move(service_worker_host),
+                             std::move(instance_host), std::move(provider_info),
+                             std::move(installed_scripts_info));
 }
 
 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StopWorker() {
@@ -343,6 +343,8 @@
 
   void Ping(PingCallback callback) override { std::move(callback).Run(); }
 
+  void SetIdleTimerDelayToZero() override { NOTIMPLEMENTED(); }
+
  private:
   base::WeakPtr<EmbeddedWorkerTestHelper> helper_;
   const int thread_id_;
@@ -828,7 +830,7 @@
 }
 
 void EmbeddedWorkerTestHelper::OnStartWorkerStub(
-    const EmbeddedWorkerStartParams& params,
+    mojom::EmbeddedWorkerStartParamsPtr params,
     mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
     mojom::ControllerServiceWorkerRequest controller_request,
     blink::mojom::ServiceWorkerHostAssociatedPtrInfo service_worker_host,
@@ -836,15 +838,15 @@
     mojom::ServiceWorkerProviderInfoForStartWorkerPtr provider_info,
     blink::mojom::ServiceWorkerInstalledScriptsInfoPtr installed_scripts_info) {
   EmbeddedWorkerInstance* worker =
-      registry()->GetWorker(params.embedded_worker_id);
+      registry()->GetWorker(params->embedded_worker_id);
   ASSERT_TRUE(worker);
   EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status());
   base::ThreadTaskRunnerHandle::Get()->PostTask(
       FROM_HERE,
       base::BindOnce(
           &EmbeddedWorkerTestHelper::OnStartWorker, AsWeakPtr(),
-          params.embedded_worker_id, params.service_worker_version_id,
-          params.scope, params.script_url, params.pause_after_download,
+          params->embedded_worker_id, params->service_worker_version_id,
+          params->scope, params->script_url, params->pause_after_download,
           std::move(dispatcher_request), std::move(controller_request),
           std::move(service_worker_host), std::move(instance_host),
           std::move(provider_info), std::move(installed_scripts_info)));
diff --git a/content/browser/service_worker/embedded_worker_test_helper.h b/content/browser/service_worker/embedded_worker_test_helper.h
index cca54d8..6f3c69d 100644
--- a/content/browser/service_worker/embedded_worker_test_helper.h
+++ b/content/browser/service_worker/embedded_worker_test_helper.h
@@ -43,7 +43,6 @@
 class ServiceWorkerContextWrapper;
 class ServiceWorkerDispatcherHost;
 class TestBrowserContext;
-struct EmbeddedWorkerStartParams;
 struct PlatformNotificationData;
 struct PushEventPayload;
 struct ServiceWorkerFetchRequest;
@@ -81,7 +80,7 @@
    protected:
     // mojom::EmbeddedWorkerInstanceClient implementation.
     void StartWorker(
-        const EmbeddedWorkerStartParams& params,
+        mojom::EmbeddedWorkerStartParamsPtr params,
         mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
         mojom::ControllerServiceWorkerRequest controller_request,
         blink::mojom::ServiceWorkerInstalledScriptsInfoPtr
@@ -303,7 +302,7 @@
                                      bool pause_after_download);
 
   void OnStartWorkerStub(
-      const EmbeddedWorkerStartParams& params,
+      mojom::EmbeddedWorkerStartParamsPtr params,
       mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
       mojom::ControllerServiceWorkerRequest controller_request,
       blink::mojom::ServiceWorkerHostAssociatedPtrInfo service_worker_host,
diff --git a/content/browser/service_worker/service_worker_context_unittest.cc b/content/browser/service_worker/service_worker_context_unittest.cc
index 0f23228..c17773d7 100644
--- a/content/browser/service_worker/service_worker_context_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_unittest.cc
@@ -182,7 +182,7 @@
 
  protected:
   void StartWorker(
-      const EmbeddedWorkerStartParams& params,
+      mojom::EmbeddedWorkerStartParamsPtr params,
       mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
       mojom::ControllerServiceWorkerRequest controller_request,
       blink::mojom::ServiceWorkerInstalledScriptsInfoPtr scripts_info,
@@ -193,10 +193,10 @@
       override {
     events_.push_back(Message::StartWorker);
     EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StartWorker(
-        params, std::move(dispatcher_request), std::move(controller_request),
-        std::move(scripts_info), std::move(service_worker_host),
-        std::move(instance_host), std::move(provider_info),
-        std::move(content_settings_proxy));
+        std::move(params), std::move(dispatcher_request),
+        std::move(controller_request), std::move(scripts_info),
+        std::move(service_worker_host), std::move(instance_host),
+        std::move(provider_info), std::move(content_settings_proxy));
   }
 
   void StopWorker() override {
diff --git a/content/browser/service_worker/service_worker_job_unittest.cc b/content/browser/service_worker/service_worker_job_unittest.cc
index 23c3ff6..cfb7a9a 100644
--- a/content/browser/service_worker/service_worker_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_job_unittest.cc
@@ -1782,7 +1782,7 @@
 
  protected:
   void StartWorker(
-      const EmbeddedWorkerStartParams& params,
+      mojom::EmbeddedWorkerStartParamsPtr params,
       mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
       mojom::ControllerServiceWorkerRequest controller_request,
       blink::mojom::ServiceWorkerInstalledScriptsInfoPtr scripts_info,
@@ -1792,13 +1792,13 @@
       blink::mojom::WorkerContentSettingsProxyPtr content_settings_proxy)
       override {
     ASSERT_TRUE(next_pause_after_download_.has_value());
-    EXPECT_EQ(next_pause_after_download_.value(), params.pause_after_download);
+    EXPECT_EQ(next_pause_after_download_.value(), params->pause_after_download);
     num_of_startworker_++;
     EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StartWorker(
-        params, std::move(dispatcher_request), std::move(controller_request),
-        std::move(scripts_info), std::move(service_worker_host),
-        std::move(instance_host), std::move(provider_info),
-        std::move(content_settings_proxy));
+        std::move(params), std::move(dispatcher_request),
+        std::move(controller_request), std::move(scripts_info),
+        std::move(service_worker_host), std::move(instance_host),
+        std::move(provider_info), std::move(content_settings_proxy));
   }
 
  private:
diff --git a/content/browser/service_worker/service_worker_process_manager_unittest.cc b/content/browser/service_worker/service_worker_process_manager_unittest.cc
index 06776ef..f636a24b 100644
--- a/content/browser/service_worker/service_worker_process_manager_unittest.cc
+++ b/content/browser/service_worker/service_worker_process_manager_unittest.cc
@@ -10,7 +10,6 @@
 #include "content/browser/renderer_host/render_process_host_impl.h"
 #include "content/browser/site_instance_impl.h"
 #include "content/browser/storage_partition_impl.h"
-#include "content/common/service_worker/embedded_worker_settings.h"
 #include "content/public/common/child_process_host.h"
 #include "content/public/common/content_features.h"
 #include "content/public/common/url_constants.h"
diff --git a/content/browser/service_worker/service_worker_registration.cc b/content/browser/service_worker/service_worker_registration.cc
index 19b7c87..9fcf3d93 100644
--- a/content/browser/service_worker/service_worker_registration.cc
+++ b/content/browser/service_worker/service_worker_registration.cc
@@ -199,7 +199,16 @@
     return;
   }
 
-  StartLameDuckTimerIfNeeded();
+  if (IsLameDuckActiveVersion()) {
+    if (ServiceWorkerUtils::IsServicificationEnabled() &&
+        active_version()->running_status() == EmbeddedWorkerStatus::RUNNING) {
+      // If the waiting worker is ready and the active worker needs to be
+      // swapped out, ask the active worker to trigger idle timer as soon as
+      // possible.
+      active_version()->event_dispatcher()->SetIdleTimerDelayToZero();
+    }
+    StartLameDuckTimer();
+  }
 }
 
 void ServiceWorkerRegistration::ClaimClients() {
@@ -264,12 +273,27 @@
   if (!context_)
     return;
   DCHECK_EQ(active_version(), version);
-  if (is_uninstalling_)
+  if (is_uninstalling_) {
     Clear();
-  else if (IsReadyToActivate())
+    return;
+  }
+
+  if (IsReadyToActivate()) {
     ActivateWaitingVersion(true /* delay */);
-  else
-    StartLameDuckTimerIfNeeded();
+    return;
+  }
+
+  if (IsLameDuckActiveVersion()) {
+    if (ServiceWorkerUtils::IsServicificationEnabled() &&
+        should_activate_when_ready_ &&
+        active_version()->running_status() == EmbeddedWorkerStatus::RUNNING) {
+      // If the waiting worker is ready and the active worker needs to be
+      // swapped out, ask the active worker to trigger idle timer as soon as
+      // possible.
+      active_version()->event_dispatcher()->SetIdleTimerDelayToZero();
+    }
+    StartLameDuckTimer();
+  }
 }
 
 void ServiceWorkerRegistration::OnNoWork(ServiceWorkerVersion* version) {
@@ -305,10 +329,10 @@
          !active_version()->HasControllee();
 }
 
-void ServiceWorkerRegistration::StartLameDuckTimerIfNeeded() {
-  if (!IsLameDuckActiveVersion() || lame_duck_timer_.IsRunning()) {
+void ServiceWorkerRegistration::StartLameDuckTimer() {
+  DCHECK(IsLameDuckActiveVersion());
+  if (lame_duck_timer_.IsRunning())
     return;
-  }
 
   lame_duck_timer_.Start(
       FROM_HERE, kMaxLameDuckTime,
diff --git a/content/browser/service_worker/service_worker_registration.h b/content/browser/service_worker/service_worker_registration.h
index 277cac0..48f81fda4 100644
--- a/content/browser/service_worker/service_worker_registration.h
+++ b/content/browser/service_worker/service_worker_registration.h
@@ -182,7 +182,7 @@
 
   bool IsReadyToActivate() const;
   bool IsLameDuckActiveVersion() const;
-  void StartLameDuckTimerIfNeeded();
+  void StartLameDuckTimer();
   void RemoveLameDuckIfNeeded();
 
   // Promotes the waiting version to active version. If |delay| is true, waits
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index 32fd566..19d5ab14 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -32,8 +32,8 @@
 #include "content/browser/service_worker/service_worker_registration.h"
 #include "content/browser/service_worker/service_worker_type_converters.h"
 #include "content/common/origin_trials/trial_policy_impl.h"
+#include "content/common/service_worker/embedded_worker.mojom.h"
 #include "content/common/service_worker/embedded_worker_messages.h"
-#include "content/common/service_worker/embedded_worker_start_params.h"
 #include "content/common/service_worker/service_worker_messages.h"
 #include "content/common/service_worker/service_worker_utils.h"
 #include "content/public/browser/browser_thread.h"
@@ -636,7 +636,15 @@
                          request, "Handled", was_handled);
   request_timeouts_.erase(request->timeout_iter);
   pending_requests_.Remove(request_id);
-  if (!HasWork()) {
+  // Non-S13nServiceWorker:
+  // Trigger OnNoWork() if no inflight events exist.
+  //
+  // S13nServiceWorker:
+  // OnNoWork() will be triggered later by StopWorkerIfIdle(), which will be
+  // called when the renderer-side idle timeout calls
+  // mojom::EmbeddedWorkerInstanceHost::RequestTermination() if no inflight
+  // events exist for a while.
+  if (!ServiceWorkerUtils::IsServicificationEnabled() && !HasWork()) {
     for (auto& observer : listeners_)
       observer.OnNoWork(this);
   }
@@ -722,7 +730,10 @@
 void ServiceWorkerVersion::OnStreamResponseFinished() {
   DCHECK_GT(pending_stream_response_count_, 0);
   pending_stream_response_count_--;
-  if (!HasWork()) {
+  if (!ServiceWorkerUtils::IsServicificationEnabled() && !HasWork()) {
+    // S13nServiceWorker:
+    // TODO(https://crbug.com/774374): OnNoWork should be triggered here when
+    // the worker is idle since the last termination request.
     for (auto& observer : listeners_)
       observer.OnNoWork(this);
   }
@@ -1521,7 +1532,7 @@
       ServiceWorkerProviderHost::PreCreateForController(context());
   provider_host_ = pending_provider_host->AsWeakPtr();
 
-  auto params = std::make_unique<EmbeddedWorkerStartParams>();
+  auto params = mojom::EmbeddedWorkerStartParams::New();
   params->service_worker_version_id = version_id_;
   params->scope = scope_;
   params->script_url = script_url_;
@@ -1731,6 +1742,13 @@
   if (!ping_controller_->IsTimedOut() && HasWork())
     return;
   embedded_worker_->StopIfNotAttachedToDevTools();
+
+  // S13nServiceWorker: OnNoWork may trigger activation of the waiting
+  // version.
+  if (ServiceWorkerUtils::IsServicificationEnabled() && !HasWork()) {
+    for (auto& observer : listeners_)
+      observer.OnNoWork(this);
+  }
 }
 
 bool ServiceWorkerVersion::HasWork() const {
diff --git a/content/browser/service_worker/service_worker_version.h b/content/browser/service_worker/service_worker_version.h
index 4cb00e8..90006d5 100644
--- a/content/browser/service_worker/service_worker_version.h
+++ b/content/browser/service_worker/service_worker_version.h
@@ -431,8 +431,16 @@
   // Used to allow tests to change wall clock for testing.
   void SetClockForTesting(base::Clock* clock);
 
-  // Returns true if the service worker has work to do: it has pending
-  // requests, in-progress streaming URLRequestJobs, or pending start callbacks.
+  // Non-S13nServiceWorker: returns true if the service worker has work to do:
+  // it has pending requests, in-progress streaming URLRequestJobs, or pending
+  // start callbacks.
+  //
+  // S13nServiceWorker: returns true if the worker has work on the browser.
+  // Note that this method may return false even when the service worker still
+  // has work to do; clients may dispatch events to the service worker directly.
+  // You can ensure no inflight requests exist if HasWork() returns false when
+  // the renderer requests termination, which means in StopWorkerIfIdle()
+  // through mojom::EmbeddedWorkerInstanceHost::RequestTermination().
   bool HasWork() const;
 
   // Returns the number of pending external request count of this worker.
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 5fce62a..17dc389 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -2832,13 +2832,17 @@
 
 BrowserAccessibilityManager*
     WebContentsImpl::GetRootBrowserAccessibilityManager() {
-  RenderFrameHostImpl* rfh = GetMainFrame();
+  RenderFrameHostImpl* rfh = static_cast<RenderFrameHostImpl*>(
+      ShowingInterstitialPage() ? GetInterstitialPage()->GetMainFrame()
+                                : GetMainFrame());
   return rfh ? rfh->browser_accessibility_manager() : nullptr;
 }
 
 BrowserAccessibilityManager*
     WebContentsImpl::GetOrCreateRootBrowserAccessibilityManager() {
-  RenderFrameHostImpl* rfh = GetMainFrame();
+  RenderFrameHostImpl* rfh = static_cast<RenderFrameHostImpl*>(
+      ShowingInterstitialPage() ? GetInterstitialPage()->GetMainFrame()
+                                : GetMainFrame());
   return rfh ? rfh->GetOrCreateBrowserAccessibilityManager() : nullptr;
 }
 
@@ -3003,6 +3007,27 @@
       ->GetRenderWidgetHost()
       ->SetImportance(GetMainFrame()->GetRenderWidgetHost()->importance());
 #endif
+
+  if (accessibility_mode_.has_mode(ui::AXMode::kNativeAPIs)) {
+    // Make sure that the main page's accessibility tree is hidden and the
+    // interstitial gets focus.
+    RenderFrameHostImpl* rfh =
+        static_cast<RenderFrameHostImpl*>(GetMainFrame());
+    if (rfh) {
+      BrowserAccessibilityManager* accessibility_manager =
+          rfh->browser_accessibility_manager();
+      if (accessibility_manager)
+        accessibility_manager->set_hidden_by_interstitial_page(true);
+    }
+    rfh = static_cast<RenderFrameHostImpl*>(
+        GetInterstitialPage()->GetMainFrame());
+    if (rfh) {
+      BrowserAccessibilityManager* accessibility_manager =
+          rfh->GetOrCreateBrowserAccessibilityManager();
+      if (accessibility_manager)
+        accessibility_manager->OnWindowFocused();
+    }
+  }
 }
 
 void WebContentsImpl::DidProceedOnInterstitial() {
@@ -3020,6 +3045,16 @@
   if (ShowingInterstitialPage())
     interstitial_page_ = nullptr;
 
+  // Make sure that the main page's accessibility tree is no longer
+  // suppressed.
+  RenderFrameHostImpl* rfh = GetMainFrame();
+  if (rfh) {
+    BrowserAccessibilityManager* accessibility_manager =
+        rfh->browser_accessibility_manager();
+    if (accessibility_manager)
+      accessibility_manager->set_hidden_by_interstitial_page(false);
+  }
+
   // If the focus was on the interstitial, let's keep it to the page.
   // (Note that in unit-tests the RVH may not have a view).
   if (has_focus && GetRenderViewHost()->GetWidget()->GetView())
diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn
index 3236d6e..10d0d72e2 100644
--- a/content/common/BUILD.gn
+++ b/content/common/BUILD.gn
@@ -273,9 +273,6 @@
     "service_manager/service_manager_connection_impl.cc",
     "service_manager/service_manager_connection_impl.h",
     "service_worker/embedded_worker_messages.h",
-    "service_worker/embedded_worker_settings.h",
-    "service_worker/embedded_worker_start_params.cc",
-    "service_worker/embedded_worker_start_params.h",
     "service_worker/service_worker_client_info.cc",
     "service_worker/service_worker_client_info.h",
     "service_worker/service_worker_loader_helpers.cc",
diff --git a/content/common/service_worker/embedded_worker.typemap b/content/common/service_worker/embedded_worker.typemap
deleted file mode 100644
index c4de59c..0000000
--- a/content/common/service_worker/embedded_worker.typemap
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright 2016 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.
-
-mojom = "//content/common/service_worker/embedded_worker.mojom"
-public_headers =
-    [ "//content/common/service_worker/embedded_worker_start_params.h" ]
-traits_headers = [ "//content/common/service_worker/embedded_worker_start_params_struct_traits.h" ]
-sources = [
-  "//content/common/service_worker/embedded_worker_start_params_struct_traits.cc",
-]
-type_mappings = [ "content.mojom.EmbeddedWorkerStartParams=::content::EmbeddedWorkerStartParams" ]
diff --git a/content/common/service_worker/embedded_worker_messages.h b/content/common/service_worker/embedded_worker_messages.h
index 6aff8b5..c3685a07 100644
--- a/content/common/service_worker/embedded_worker_messages.h
+++ b/content/common/service_worker/embedded_worker_messages.h
@@ -7,16 +7,9 @@
 
 #include <stdint.h>
 
-#include <string>
-
-#include "content/common/service_worker/embedded_worker_settings.h"
-#include "content/common/service_worker/embedded_worker_start_params.h"
-#include "content/public/common/console_message_level.h"
-#include "content/public/common/web_preferences.h"
 #include "ipc/ipc_message.h"
 #include "ipc/ipc_message_macros.h"
 #include "ipc/ipc_param_traits.h"
-#include "url/gurl.h"
 
 #undef IPC_MESSAGE_EXPORT
 #define IPC_MESSAGE_EXPORT CONTENT_EXPORT
diff --git a/content/common/service_worker/embedded_worker_settings.h b/content/common/service_worker/embedded_worker_settings.h
deleted file mode 100644
index 2014dae..0000000
--- a/content/common/service_worker/embedded_worker_settings.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2016 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_COMMON_SERVICE_WORKER_EMBEDDED_WORKER_SETTINGS_H_
-#define CONTENT_COMMON_SERVICE_WORKER_EMBEDDED_WORKER_SETTINGS_H_
-
-#include "content/public/common/web_preferences.h"
-
-namespace content {
-
-struct EmbeddedWorkerSettings {
-  content::V8CacheOptions v8_cache_options;
-  bool data_saver_enabled;
-};
-
-}  // namespace content
-
-#endif  // CONTENT_COMMON_SERVICE_WORKER_EMBEDDED_WORKER_SETTINGS_H_
diff --git a/content/common/service_worker/embedded_worker_start_params.cc b/content/common/service_worker/embedded_worker_start_params.cc
deleted file mode 100644
index 93f62ff..0000000
--- a/content/common/service_worker/embedded_worker_start_params.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2016 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/common/service_worker/embedded_worker_start_params.h"
-
-namespace content {
-
-EmbeddedWorkerStartParams::EmbeddedWorkerStartParams() {}
-
-}  // namespace content
diff --git a/content/common/service_worker/embedded_worker_start_params.h b/content/common/service_worker/embedded_worker_start_params.h
deleted file mode 100644
index 184e9db..0000000
--- a/content/common/service_worker/embedded_worker_start_params.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2016 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_COMMON_SERVICE_WORKER_EMBEDDED_WORKER_START_PARAMS_H_
-#define CONTENT_COMMON_SERVICE_WORKER_EMBEDDED_WORKER_START_PARAMS_H_
-
-#include "base/unguessable_token.h"
-#include "content/common/content_export.h"
-#include "content/common/service_worker/embedded_worker_settings.h"
-#include "url/gurl.h"
-
-namespace content {
-
-struct CONTENT_EXPORT EmbeddedWorkerStartParams {
-  EmbeddedWorkerStartParams();
-
-  int embedded_worker_id;
-  int64_t service_worker_version_id;
-  GURL scope;
-  GURL script_url;
-  int worker_devtools_agent_route_id;
-  base::UnguessableToken devtools_worker_token;
-  bool pause_after_download;
-  bool wait_for_debugger;
-  bool is_installed;
-  EmbeddedWorkerSettings settings;
-};
-
-}  // namespace content
-
-#endif  // CONTENT_COMMON_SERVICE_WORKER_EMBEDDED_WORKER_START_PARAMS_H_
diff --git a/content/common/service_worker/embedded_worker_start_params_struct_traits.cc b/content/common/service_worker/embedded_worker_start_params_struct_traits.cc
deleted file mode 100644
index 470c8d9..0000000
--- a/content/common/service_worker/embedded_worker_start_params_struct_traits.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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/common/service_worker/embedded_worker_start_params_struct_traits.h"
-
-#include "content/public/common/common_param_traits_macros.h"
-#include "mojo/common/common_custom_types_struct_traits.h"
-#include "url/mojo/url_gurl_struct_traits.h"
-
-namespace mojo {
-
-// static
-bool StructTraits<content::mojom::EmbeddedWorkerStartParamsDataView,
-                  content::EmbeddedWorkerStartParams>::
-    Read(content::mojom::EmbeddedWorkerStartParamsDataView in,
-         content::EmbeddedWorkerStartParams* out) {
-  if (!in.ReadScope(&out->scope) || !in.ReadScriptUrl(&out->script_url) ||
-      !in.ReadDevtoolsWorkerToken(&out->devtools_worker_token) ||
-      !in.ReadV8CacheOptions(&out->settings.v8_cache_options)) {
-    return false;
-  }
-  out->embedded_worker_id = in.embedded_worker_id();
-  out->service_worker_version_id = in.service_worker_version_id();
-  out->worker_devtools_agent_route_id = in.worker_devtools_agent_route_id();
-  out->pause_after_download = in.pause_after_download();
-  out->wait_for_debugger = in.wait_for_debugger();
-  out->is_installed = in.is_installed();
-  out->settings.data_saver_enabled = in.data_saver_enabled();
-  return true;
-}
-
-}  // namespace mojo
diff --git a/content/common/service_worker/embedded_worker_start_params_struct_traits.h b/content/common/service_worker/embedded_worker_start_params_struct_traits.h
deleted file mode 100644
index a5db318..0000000
--- a/content/common/service_worker/embedded_worker_start_params_struct_traits.h
+++ /dev/null
@@ -1,64 +0,0 @@
-// 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.
-
-#ifndef CONTENT_COMMON_SERVICE_WORKER_EMBEDDED_WORKER_START_PARAMS_STRUCT_TRAITS_H_
-#define CONTENT_COMMON_SERVICE_WORKER_EMBEDDED_WORKER_START_PARAMS_STRUCT_TRAITS_H_
-
-#include "content/common/service_worker/embedded_worker.mojom.h"
-
-namespace mojo {
-
-template <>
-struct StructTraits<content::mojom::EmbeddedWorkerStartParamsDataView,
-                    content::EmbeddedWorkerStartParams> {
-  static int embedded_worker_id(
-      const content::EmbeddedWorkerStartParams& info) {
-    return info.embedded_worker_id;
-  }
-  static int64_t service_worker_version_id(
-      const content::EmbeddedWorkerStartParams& info) {
-    return info.service_worker_version_id;
-  }
-  static const GURL& scope(const content::EmbeddedWorkerStartParams& info) {
-    return info.scope;
-  }
-  static const GURL& script_url(
-      const content::EmbeddedWorkerStartParams& info) {
-    return info.script_url;
-  }
-  static int worker_devtools_agent_route_id(
-      const content::EmbeddedWorkerStartParams& info) {
-    return info.worker_devtools_agent_route_id;
-  }
-  static const base::UnguessableToken& devtools_worker_token(
-      const content::EmbeddedWorkerStartParams& info) {
-    return info.devtools_worker_token;
-  }
-  static bool pause_after_download(
-      const content::EmbeddedWorkerStartParams& info) {
-    return info.pause_after_download;
-  }
-  static bool wait_for_debugger(
-      const content::EmbeddedWorkerStartParams& info) {
-    return info.wait_for_debugger;
-  }
-  static bool is_installed(const content::EmbeddedWorkerStartParams& info) {
-    return info.is_installed;
-  }
-  static content::V8CacheOptions v8_cache_options(
-      const content::EmbeddedWorkerStartParams& info) {
-    return info.settings.v8_cache_options;
-  }
-  static bool data_saver_enabled(
-      const content::EmbeddedWorkerStartParams& info) {
-    return info.settings.data_saver_enabled;
-  }
-
-  static bool Read(content::mojom::EmbeddedWorkerStartParamsDataView in,
-                   content::EmbeddedWorkerStartParams* out);
-};
-
-}  // namespace mojo
-
-#endif  // CONTENT_COMMON_SERVICE_WORKER_EMBEDDED_WORKER_START_PARAMS_STRUCT_TRAITS_H_
diff --git a/content/common/service_worker/service_worker_event_dispatcher.mojom b/content/common/service_worker/service_worker_event_dispatcher.mojom
index e3114605..ae322cd 100644
--- a/content/common/service_worker/service_worker_event_dispatcher.mojom
+++ b/content/common/service_worker/service_worker_event_dispatcher.mojom
@@ -154,4 +154,9 @@
   // worker. Unlike the other functions in this interface, Ping() does not
   // dispatch an event.
   Ping() => ();
+
+  // S13nServiceWorker:
+  // Lets the idle timer request termination immediately after all inflight
+  // events are handled without delay.
+  SetIdleTimerDelayToZero();
 };
diff --git a/content/common/typemaps.gni b/content/common/typemaps.gni
index 0b16382..b1b1d9c 100644
--- a/content/common/typemaps.gni
+++ b/content/common/typemaps.gni
@@ -12,7 +12,6 @@
   "//content/common/media/media_devices.typemap",
   "//content/common/media/media_stream.typemap",
   "//content/common/push_messaging.typemap",
-  "//content/common/service_worker/embedded_worker.typemap",
   "//content/common/service_worker/service_worker_event_dispatcher.typemap",
   "//content/common/service_worker/service_worker_fetch_request.typemap",
   "//content/common/service_worker/service_worker_provider.typemap",
diff --git a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
index ebe6c6d1..892f21c 100644
--- a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
+++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
@@ -55,7 +55,7 @@
 }
 
 void EmbeddedWorkerInstanceClientImpl::StartWorker(
-    const EmbeddedWorkerStartParams& params,
+    mojom::EmbeddedWorkerStartParamsPtr params,
     mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
     mojom::ControllerServiceWorkerRequest controller_request,
     blink::mojom::ServiceWorkerInstalledScriptsInfoPtr installed_scripts_info,
@@ -70,8 +70,8 @@
   service_manager::mojom::InterfaceProviderPtr interface_provider(
       std::move(provider_info->interface_provider));
   auto client = std::make_unique<ServiceWorkerContextClient>(
-      params.embedded_worker_id, params.service_worker_version_id, params.scope,
-      params.script_url,
+      params->embedded_worker_id, params->service_worker_version_id,
+      params->scope, params->script_url,
       ServiceWorkerUtils::IsScriptStreamingEnabled() && installed_scripts_info,
       std::move(dispatcher_request), std::move(controller_request),
       std::move(service_worker_host), std::move(instance_host),
@@ -80,7 +80,7 @@
   client->set_blink_initialized_time(blink_initialized_time_);
   client->set_start_worker_received_time(base::TimeTicks::Now());
   wrapper_ = StartWorkerContext(
-      params, std::move(installed_scripts_info), std::move(client),
+      std::move(params), std::move(installed_scripts_info), std::move(client),
       std::move(content_settings_proxy), std::move(interface_provider));
 }
 
@@ -128,7 +128,7 @@
 
 std::unique_ptr<EmbeddedWorkerInstanceClientImpl::WorkerWrapper>
 EmbeddedWorkerInstanceClientImpl::StartWorkerContext(
-    const EmbeddedWorkerStartParams& params,
+    mojom::EmbeddedWorkerStartParamsPtr params,
     blink::mojom::ServiceWorkerInstalledScriptsInfoPtr installed_scripts_info,
     std::unique_ptr<ServiceWorkerContextClient> context_client,
     blink::mojom::WorkerContentSettingsProxyPtr content_settings_proxy,
@@ -158,22 +158,22 @@
           std::move(installed_scripts_manager_params),
           content_settings_proxy.PassInterface().PassHandle(),
           interface_provider.PassInterface().PassHandle()),
-      params.worker_devtools_agent_route_id);
+      params->worker_devtools_agent_route_id);
 
   blink::WebEmbeddedWorkerStartData start_data;
-  start_data.script_url = params.script_url;
+  start_data.script_url = params->script_url;
   start_data.user_agent =
       blink::WebString::FromUTF8(GetContentClient()->GetUserAgent());
   start_data.wait_for_debugger_mode =
-      params.wait_for_debugger
+      params->wait_for_debugger
           ? blink::WebEmbeddedWorkerStartData::kWaitForDebugger
           : blink::WebEmbeddedWorkerStartData::kDontWaitForDebugger;
   start_data.instrumentation_token =
-      blink::WebString::FromUTF8(params.devtools_worker_token.ToString());
-  start_data.v8_cache_options = static_cast<blink::WebSettings::V8CacheOptions>(
-      params.settings.v8_cache_options);
+      blink::WebString::FromUTF8(params->devtools_worker_token.ToString());
+  start_data.v8_cache_options =
+      static_cast<blink::WebSettings::V8CacheOptions>(params->v8_cache_options);
   start_data.pause_after_download_mode =
-      params.pause_after_download
+      params->pause_after_download
           ? blink::WebEmbeddedWorkerStartData::kPauseAfterDownload
           : blink::WebEmbeddedWorkerStartData::kDontPauseAfterDownload;
 
diff --git a/content/renderer/service_worker/embedded_worker_instance_client_impl.h b/content/renderer/service_worker/embedded_worker_instance_client_impl.h
index 9403b704..00d0698 100644
--- a/content/renderer/service_worker/embedded_worker_instance_client_impl.h
+++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.h
@@ -88,7 +88,7 @@
 
   // mojom::EmbeddedWorkerInstanceClient implementation
   void StartWorker(
-      const EmbeddedWorkerStartParams& params,
+      mojom::EmbeddedWorkerStartParamsPtr params,
       mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
       mojom::ControllerServiceWorkerRequest controller_request,
       blink::mojom::ServiceWorkerInstalledScriptsInfoPtr installed_scripts_info,
@@ -106,7 +106,7 @@
   void OnError();
 
   std::unique_ptr<WorkerWrapper> StartWorkerContext(
-      const EmbeddedWorkerStartParams& params,
+      mojom::EmbeddedWorkerStartParamsPtr params,
       blink::mojom::ServiceWorkerInstalledScriptsInfoPtr installed_scripts_info,
       std::unique_ptr<ServiceWorkerContextClient> context_client,
       blink::mojom::WorkerContentSettingsProxyPtr content_settings_proxy,
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc
index f0f1ff5f2..6fd8979 100644
--- a/content/renderer/service_worker/service_worker_context_client.cc
+++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -1795,6 +1795,13 @@
   std::move(callback).Run();
 }
 
+void ServiceWorkerContextClient::SetIdleTimerDelayToZero() {
+  DCHECK(ServiceWorkerUtils::IsServicificationEnabled());
+  DCHECK(context_);
+  DCHECK(context_->timeout_timer);
+  context_->timeout_timer->SetIdleTimerDelayToZero();
+}
+
 void ServiceWorkerContextClient::OnNavigationPreloadResponse(
     int fetch_event_id,
     std::unique_ptr<blink::WebURLResponse> response,
diff --git a/content/renderer/service_worker/service_worker_context_client.h b/content/renderer/service_worker/service_worker_context_client.h
index d8b31ac..8bad09f 100644
--- a/content/renderer/service_worker/service_worker_context_client.h
+++ b/content/renderer/service_worker/service_worker_context_client.h
@@ -349,6 +349,7 @@
       payments::mojom::PaymentHandlerResponseCallbackPtr response_callback,
       DispatchPaymentRequestEventCallback callback) override;
   void Ping(PingCallback callback) override;
+  void SetIdleTimerDelayToZero() override;
 
   void OnNotificationClickEvent(
       int request_id,
diff --git a/content/renderer/service_worker/service_worker_timeout_timer.cc b/content/renderer/service_worker/service_worker_timeout_timer.cc
index 27859c03..b6e0abd 100644
--- a/content/renderer/service_worker/service_worker_timeout_timer.cc
+++ b/content/renderer/service_worker/service_worker_timeout_timer.cc
@@ -79,8 +79,10 @@
   DCHECK(iter != id_event_map_.end());
   inflight_events_.erase(iter->second);
   id_event_map_.erase(iter);
-  if (inflight_events_.empty())
+  if (inflight_events_.empty()) {
     idle_time_ = tick_clock_->NowTicks() + kIdleDelay;
+    MaybeTriggerIdleTimer();
+  }
 }
 
 void ServiceWorkerTimeoutTimer::PushPendingTask(
@@ -90,6 +92,13 @@
   pending_tasks_.emplace(std::move(pending_task));
 }
 
+void ServiceWorkerTimeoutTimer::SetIdleTimerDelayToZero() {
+  DCHECK(ServiceWorkerUtils::IsServicificationEnabled());
+  zero_idle_timer_delay_ = true;
+  if (inflight_events_.empty())
+    MaybeTriggerIdleTimer();
+}
+
 void ServiceWorkerTimeoutTimer::UpdateStatus() {
   if (!ServiceWorkerUtils::IsServicificationEnabled())
     return;
@@ -107,8 +116,11 @@
   }
 
   // If |inflight_events_| is empty, the worker is now idle.
-  if (inflight_events_.empty() && idle_time_.is_null())
+  if (inflight_events_.empty() && idle_time_.is_null()) {
     idle_time_ = tick_clock_->NowTicks() + kIdleDelay;
+    if (MaybeTriggerIdleTimer())
+      return;
+  }
 
   if (!idle_time_.is_null() && idle_time_ < now) {
     did_idle_timeout_ = true;
@@ -116,6 +128,16 @@
   }
 }
 
+bool ServiceWorkerTimeoutTimer::MaybeTriggerIdleTimer() {
+  DCHECK(inflight_events_.empty());
+  if (!zero_idle_timer_delay_)
+    return false;
+
+  did_idle_timeout_ = true;
+  idle_callback_.Run();
+  return true;
+}
+
 ServiceWorkerTimeoutTimer::EventInfo::EventInfo(
     int id,
     base::TimeTicks expiration_time,
diff --git a/content/renderer/service_worker/service_worker_timeout_timer.h b/content/renderer/service_worker/service_worker_timeout_timer.h
index 9800ae4..7d657a1 100644
--- a/content/renderer/service_worker/service_worker_timeout_timer.h
+++ b/content/renderer/service_worker/service_worker_timeout_timer.h
@@ -62,6 +62,11 @@
   // (did_idle_timeout() returns true).
   void PushPendingTask(base::OnceClosure pending_task);
 
+  // Sets the |zero_idle_timer_delay_| to true and triggers the idle callback if
+  // there are not inflight events. If there are, the callback will be called
+  // next time when the set of inflight events becomes empty in EndEvent().
+  void SetIdleTimerDelayToZero();
+
   // Returns true if the timer thinks no events ran for a while, and has
   // triggered the |idle_callback| passed to the constructor. It'll be reset to
   // false again when StartEvent() is called.
@@ -83,6 +88,10 @@
   // Updates the internal states and fires timeout callbacks if any.
   void UpdateStatus();
 
+  // Triggers idle timer if |zero_idle_timer_delay_| is true. Returns true if
+  // the idle callback is called.
+  bool MaybeTriggerIdleTimer();
+
   struct EventInfo {
     EventInfo(int id,
               base::TimeTicks expiration_time,
@@ -107,6 +116,10 @@
   // idle. This time is null if there are any inflight events.
   base::TimeTicks idle_time_;
 
+  // Set to true if the idle callback should be fired immediately after all
+  // inflight events finish.
+  bool zero_idle_timer_delay_ = false;
+
   // For idle timeouts. Invoked when UpdateStatus() is called after
   // |idle_time_|.
   base::RepeatingClosure idle_callback_;
diff --git a/content/renderer/service_worker/service_worker_timeout_timer_unittest.cc b/content/renderer/service_worker/service_worker_timeout_timer_unittest.cc
index 3871e79..ff3af3ae 100644
--- a/content/renderer/service_worker/service_worker_timeout_timer_unittest.cc
+++ b/content/renderer/service_worker/service_worker_timeout_timer_unittest.cc
@@ -199,6 +199,54 @@
   EXPECT_TRUE(did_task_run);
 }
 
+TEST_F(ServiceWorkerTimeoutTimerTest, SetIdleTimerDelayToZero) {
+  EnableServicification();
+  {
+    bool is_idle = false;
+    ServiceWorkerTimeoutTimer timer(CreateReceiverWithCalledFlag(&is_idle),
+                                    task_runner()->GetMockTickClock());
+    EXPECT_FALSE(is_idle);
+
+    timer.SetIdleTimerDelayToZero();
+    // |idle_callback| should be fired since there is no event.
+    EXPECT_TRUE(is_idle);
+  }
+
+  {
+    bool is_idle = false;
+    ServiceWorkerTimeoutTimer timer(CreateReceiverWithCalledFlag(&is_idle),
+                                    task_runner()->GetMockTickClock());
+    int event_id = timer.StartEvent(base::BindRepeating([](int) {}));
+    timer.SetIdleTimerDelayToZero();
+    // Nothing happens since there is an inflight event.
+    EXPECT_FALSE(is_idle);
+
+    timer.EndEvent(event_id);
+    // EndEvent() immediately triggers the idle callback.
+    EXPECT_TRUE(is_idle);
+  }
+
+  {
+    bool is_idle = false;
+    ServiceWorkerTimeoutTimer timer(CreateReceiverWithCalledFlag(&is_idle),
+                                    task_runner()->GetMockTickClock());
+    int event_id_1 = timer.StartEvent(base::BindRepeating([](int) {}));
+    int event_id_2 = timer.StartEvent(base::BindRepeating([](int) {}));
+    timer.SetIdleTimerDelayToZero();
+    // Nothing happens since there are two inflight events.
+    EXPECT_FALSE(is_idle);
+
+    timer.EndEvent(event_id_1);
+    // Nothing happens since there is an inflight event.
+    EXPECT_FALSE(is_idle);
+
+    timer.EndEvent(event_id_2);
+    // EndEvent() immediately triggers the idle callback when no inflight events
+    // exist.
+    EXPECT_TRUE(is_idle);
+  }
+}
+
 TEST_F(ServiceWorkerTimeoutTimerTest, NonS13nServiceWorker) {
   ASSERT_FALSE(ServiceWorkerUtils::IsServicificationEnabled());
 
diff --git a/content/shell/browser/layout_test/layout_test_message_filter.cc b/content/shell/browser/layout_test/layout_test_message_filter.cc
index cfd543a..bd9146e3 100644
--- a/content/shell/browser/layout_test/layout_test_message_filter.cc
+++ b/content/shell/browser/layout_test/layout_test_message_filter.cc
@@ -187,10 +187,6 @@
     type = PermissionType::BACKGROUND_SYNC;
   } else if (name == "accessibility-events") {
     type = PermissionType::ACCESSIBILITY_EVENTS;
-  } else if (name == "clipboard-read") {
-    type = PermissionType::CLIPBOARD_READ;
-  } else if (name == "clipboard-write") {
-    type = PermissionType::CLIPBOARD_WRITE;
   } else {
     NOTREACHED();
     type = PermissionType::NOTIFICATIONS;
diff --git a/mojo/public/cpp/bindings/BUILD.gn b/mojo/public/cpp/bindings/BUILD.gn
index 5f584d9..4e4e0baf 100644
--- a/mojo/public/cpp/bindings/BUILD.gn
+++ b/mojo/public/cpp/bindings/BUILD.gn
@@ -50,6 +50,7 @@
     "binding.h",
     "binding_set.h",
     "bindings_export.h",
+    "callback_helpers.h",
     "clone_traits.h",
     "connection_error_callback.h",
     "connector.h",
diff --git a/mojo/public/cpp/bindings/callback_helpers.h b/mojo/public/cpp/bindings/callback_helpers.h
new file mode 100644
index 0000000..45ce0f028
--- /dev/null
+++ b/mojo/public/cpp/bindings/callback_helpers.h
@@ -0,0 +1,124 @@
+// 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.
+
+#ifndef MOJO_PUBLIC_CPP_BINDINGS_CALLBACK_HELPERS_H_
+#define MOJO_PUBLIC_CPP_BINDINGS_CALLBACK_HELPERS_H_
+
+#include <memory>
+#include <utility>
+
+#include "base/bind.h"
+#include "base/callback_forward.h"
+#include "base/macros.h"
+#include "base/memory/ptr_util.h"
+
+// This is a helper utility to wrap a base::OnceCallback such that if the
+// callback is destructed before it has a chance to run (e.g. the callback is
+// bound into a task and the task is dropped), it will be run the with
+// default arguments passed into WrapCallbackWithDefaultInvokeIfNotRun.
+// Alternatively, it will run the delete closure passed to
+// WrapCallbackWithDropHandler.
+//
+// These helpers are intended for use on the client side of a mojo interface,
+// where users want to know if their individual callback was dropped (e.g.
+// due to connection error). This can save the burden of tracking pending
+// mojo callbacks in a map so they can be cleaned up in the interface's
+// connection error callback.
+//
+// Caveats:
+// 1) The default form of the callback, called when the original was dropped
+// before running, may not run on the thread you expected. If this is a problem
+// for your code, DO NOT USE these helpers.
+// 2) There is no type information that indicates the wrapped object has special
+// destructor behavior.  It is therefore not recommended to pass these wrapped
+// callbacks into deep call graphs where code readers could be confused whether
+// or not the Run() mehtod should be invoked.
+//
+// Example:
+//   foo->DoWorkAndReturnResult(
+//       WrapCallbackWithDefaultInvokeIfNotRun(
+//           base::BindOnce(&Foo::OnResult, this), false));
+//
+// If the callback is destructed without running, it'll be run with "false".
+//
+//  foo->DoWorkAndReturnResult(
+//      WrapCallbackWithDropHandler(base::BindOnce(&Foo::OnResult, this),
+//                         base::BindOnce(&Foo::LogError, this, WAS_DROPPED)));
+
+namespace mojo {
+namespace internal {
+
+// First, tell the compiler CallbackWithDeleteHelper is a class template with
+// one type parameter. Then define specializations where the type is a function
+// returning void and taking zero or more arguments.
+template <typename Signature>
+class CallbackWithDeleteHelper;
+
+// Only support callbacks that return void because otherwise it is odd to call
+// the callback in the destructor and drop the return value immediately.
+template <typename... Args>
+class CallbackWithDeleteHelper<void(Args...)> {
+ public:
+  using CallbackType = base::OnceCallback<void(Args...)>;
+
+  // Bound arguments may be different to the callback signature when wrappers
+  // are used, e.g. in base::Owned and base::Unretained case, they are
+  // OwnedWrapper and UnretainedWrapper. Use BoundArgs to help handle this.
+  template <typename... BoundArgs>
+  explicit CallbackWithDeleteHelper(CallbackType callback, BoundArgs&&... args)
+      : callback_(std::move(callback)) {
+    delete_callback_ =
+        base::BindOnce(&CallbackWithDeleteHelper::Run, base::Unretained(this),
+                       std::forward<BoundArgs>(args)...);
+  }
+
+  // The first int param acts to disambiguate this constructor from the template
+  // constructor above. The precendent is C++'s own operator++(int) vs
+  // operator++() to distinguish post-increment and pre-increment.
+  CallbackWithDeleteHelper(int ignored,
+                           CallbackType callback,
+                           base::OnceClosure delete_callback)
+      : callback_(std::move(callback)),
+        delete_callback_(std::move(delete_callback)) {}
+
+  ~CallbackWithDeleteHelper() {
+    if (delete_callback_)
+      std::move(delete_callback_).Run();
+  }
+
+  void Run(Args... args) {
+    delete_callback_.Reset();
+    std::move(callback_).Run(std::forward<Args>(args)...);
+  }
+
+ private:
+  CallbackType callback_;
+  base::OnceClosure delete_callback_;
+
+  DISALLOW_COPY_AND_ASSIGN(CallbackWithDeleteHelper);
+};
+
+}  // namespace internal
+
+template <typename T, typename... Args>
+inline base::OnceCallback<T> WrapCallbackWithDropHandler(
+    base::OnceCallback<T> cb,
+    base::OnceClosure delete_cb) {
+  return base::BindOnce(&internal::CallbackWithDeleteHelper<T>::Run,
+                        std::make_unique<internal::CallbackWithDeleteHelper<T>>(
+                            0, std::move(cb), std::move(delete_cb)));
+}
+
+template <typename T, typename... Args>
+inline base::OnceCallback<T> WrapCallbackWithDefaultInvokeIfNotRun(
+    base::OnceCallback<T> cb,
+    Args&&... args) {
+  return base::BindOnce(&internal::CallbackWithDeleteHelper<T>::Run,
+                        std::make_unique<internal::CallbackWithDeleteHelper<T>>(
+                            std::move(cb), std::forward<Args>(args)...));
+}
+
+}  // namespace mojo
+
+#endif  // MOJO_PUBLIC_CPP_BINDINGS_CALLBACK_HELPERS_H_
diff --git a/mojo/public/cpp/bindings/tests/BUILD.gn b/mojo/public/cpp/bindings/tests/BUILD.gn
index 9077b99..efa46f4 100644
--- a/mojo/public/cpp/bindings/tests/BUILD.gn
+++ b/mojo/public/cpp/bindings/tests/BUILD.gn
@@ -14,6 +14,7 @@
     "bindings_test_base.cc",
     "bindings_test_base.h",
     "buffer_unittest.cc",
+    "callback_helpers_unittest.cc",
     "connector_unittest.cc",
     "constant_unittest.cc",
     "container_test_util.cc",
diff --git a/mojo/public/cpp/bindings/tests/callback_helpers_unittest.cc b/mojo/public/cpp/bindings/tests/callback_helpers_unittest.cc
new file mode 100644
index 0000000..54d7190
--- /dev/null
+++ b/mojo/public/cpp/bindings/tests/callback_helpers_unittest.cc
@@ -0,0 +1,201 @@
+// 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 "mojo/public/cpp/bindings/callback_helpers.h"
+
+#include <memory>
+#include <string>
+#include <utility>
+
+#include "base/bind.h"
+#include "base/bind_helpers.h"
+#include "base/memory/ptr_util.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace mojo {
+
+namespace {
+
+void SetBool(bool* var, bool val) {
+  *var = val;
+}
+
+void SetBoolFromRawPtr(bool* var, bool* val) {
+  *var = *val;
+}
+
+void SetIntegers(int* a_var, int* b_var, int a_val, int b_val) {
+  *a_var = a_val;
+  *b_var = b_val;
+}
+
+void SetIntegerFromUniquePtr(int* var, std::unique_ptr<int> val) {
+  *var = *val;
+}
+
+void SetString(std::string* var, const std::string val) {
+  *var = val;
+}
+
+void CallClosure(base::OnceClosure cl) {
+  std::move(cl).Run();
+}
+
+}  // namespace
+
+TEST(CallbackWithDeleteTest, SetIntegers_Run) {
+  int a = 0;
+  int b = 0;
+  auto cb =
+      WrapCallbackWithDropHandler(base::BindOnce(&SetIntegers, &a, &b),
+                                  base::BindOnce(&SetIntegers, &a, &b, 3, 4));
+  std::move(cb).Run(1, 2);
+  EXPECT_EQ(a, 1);
+  EXPECT_EQ(b, 2);
+}
+
+TEST(CallbackWithDeleteTest, SetIntegers_Destruction) {
+  int a = 0;
+  int b = 0;
+  {
+    auto cb =
+        WrapCallbackWithDropHandler(base::BindOnce(&SetIntegers, &a, &b),
+                                    base::BindOnce(&SetIntegers, &a, &b, 3, 4));
+  }
+  EXPECT_EQ(a, 3);
+  EXPECT_EQ(b, 4);
+}
+
+TEST(CallbackWithDefaultTest, CallClosure_Run) {
+  int a = 0;
+  int b = 0;
+  auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+      base::BindOnce(&CallClosure), base::BindOnce(&SetIntegers, &a, &b, 3, 4));
+  std::move(cb).Run(base::BindOnce(&SetIntegers, &a, &b, 1, 2));
+  EXPECT_EQ(a, 1);
+  EXPECT_EQ(b, 2);
+}
+
+TEST(CallbackWithDefaultTest, CallClosure_Destruction) {
+  int a = 0;
+  int b = 0;
+  {
+    auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+        base::BindOnce(&CallClosure),
+        base::BindOnce(&SetIntegers, &a, &b, 3, 4));
+  }
+  EXPECT_EQ(a, 3);
+  EXPECT_EQ(b, 4);
+}
+
+TEST(CallbackWithDefaultTest, Closure_Run) {
+  bool a = false;
+  auto cb =
+      WrapCallbackWithDefaultInvokeIfNotRun(base::BindOnce(&SetBool, &a, true));
+  std::move(cb).Run();
+  EXPECT_TRUE(a);
+}
+
+TEST(CallbackWithDefaultTest, Closure_Destruction) {
+  bool a = false;
+  {
+    auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+        base::BindOnce(&SetBool, &a, true));
+  }
+  EXPECT_TRUE(a);
+}
+
+TEST(CallbackWithDefaultTest, SetBool_Run) {
+  bool a = false;
+  auto cb =
+      WrapCallbackWithDefaultInvokeIfNotRun(base::BindOnce(&SetBool, &a), true);
+  std::move(cb).Run(true);
+  EXPECT_TRUE(a);
+}
+
+TEST(CallbackWithDefaultTest, SetBoolFromRawPtr_Run) {
+  bool a = false;
+  bool* b = new bool(false);
+  bool c = true;
+  auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+      base::BindOnce(&SetBoolFromRawPtr, &a), base::Owned(b));
+  std::move(cb).Run(&c);
+  EXPECT_TRUE(a);
+}
+
+TEST(CallbackWithDefaultTest, SetBoolFromRawPtr_Destruction) {
+  bool a = false;
+  bool* b = new bool(true);
+  {
+    auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+        base::BindOnce(&SetBoolFromRawPtr, &a), base::Owned(b));
+  }
+  EXPECT_TRUE(a);
+}
+
+TEST(CallbackWithDefaultTest, SetBool_Destruction) {
+  bool a = false;
+  {
+    auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+        base::BindOnce(&SetBool, &a), true);
+  }
+  EXPECT_TRUE(a);
+}
+
+TEST(CallbackWithDefaultTest, SetIntegers_Run) {
+  int a = 0;
+  int b = 0;
+  auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+      base::BindOnce(&SetIntegers, &a, &b), 3, 4);
+  std::move(cb).Run(1, 2);
+  EXPECT_EQ(a, 1);
+  EXPECT_EQ(b, 2);
+}
+
+TEST(CallbackWithDefaultTest, SetIntegers_Destruction) {
+  int a = 0;
+  int b = 0;
+  {
+    auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+        base::BindOnce(&SetIntegers, &a, &b), 3, 4);
+  }
+  EXPECT_EQ(a, 3);
+  EXPECT_EQ(b, 4);
+}
+
+TEST(CallbackWithDefaultTest, SetIntegerFromUniquePtr_Run) {
+  int a = 0;
+  auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+      base::BindOnce(&SetIntegerFromUniquePtr, &a), std::make_unique<int>(1));
+  std::move(cb).Run(std::make_unique<int>(2));
+  EXPECT_EQ(a, 2);
+}
+
+TEST(CallbackWithDefaultTest, SetIntegerFromUniquePtr_Destruction) {
+  int a = 0;
+  {
+    auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+        base::BindOnce(&SetIntegerFromUniquePtr, &a), std::make_unique<int>(1));
+  }
+  EXPECT_EQ(a, 1);
+}
+
+TEST(CallbackWithDefaultTest, SetString_Run) {
+  std::string a;
+  auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+      base::BindOnce(&SetString, &a), "hello");
+  std::move(cb).Run("world");
+  EXPECT_EQ(a, "world");
+}
+
+TEST(CallbackWithDefaultTest, SetString_Destruction) {
+  std::string a;
+  {
+    auto cb = WrapCallbackWithDefaultInvokeIfNotRun(
+        base::BindOnce(&SetString, &a), "hello");
+  }
+  EXPECT_EQ(a, "hello");
+}
+
+}  // namespace mojo
diff --git a/services/preferences/pref_service_factory_unittest.cc b/services/preferences/pref_service_factory_unittest.cc
index d08b7461..b006cfd4 100644
--- a/services/preferences/pref_service_factory_unittest.cc
+++ b/services/preferences/pref_service_factory_unittest.cc
@@ -45,7 +45,8 @@
         service_factory_(std::move(service_factory)),
         connector_callback_(std::move(connector_callback)) {
     registry_.AddInterface<service_manager::mojom::ServiceFactory>(
-        base::Bind(&ServiceTestClient::Create, base::Unretained(this)));
+        base::BindRepeating(&ServiceTestClient::Create,
+                            base::Unretained(this)));
   }
 
  protected:
@@ -163,7 +164,7 @@
                    std::unique_ptr<PrefService>* out) {
     ConnectToPrefService(
         connector, std::move(pref_registry),
-        base::Bind(&PrefServiceFactoryTest::OnCreate, callback, out));
+        base::BindRepeating(&PrefServiceFactoryTest::OnCreate, callback, out));
   }
 
   scoped_refptr<PrefRegistrySimple> GetInitialPrefRegistry() {
@@ -202,7 +203,8 @@
     PrefChangeRegistrar registrar;
     registrar.Init(pref_service);
     base::RunLoop run_loop;
-    registrar.Add(key, base::Bind(&OnPrefChanged, run_loop.QuitClosure(), key));
+    registrar.Add(
+        key, base::BindRepeating(&OnPrefChanged, run_loop.QuitClosure(), key));
     run_loop.Run();
   }
 
@@ -527,7 +529,8 @@
       // Watch for an unexpected change to kDictionaryKey.
       PrefChangeRegistrar registrar;
       registrar.Init(pref_service2.get());
-      registrar.Add(kDictionaryKey, base::Bind(&Fail, pref_service2.get()));
+      registrar.Add(kDictionaryKey,
+                    base::BindRepeating(&Fail, pref_service2.get()));
 
       // Make and wait for a change to another pref to ensure an unexpected
       // change to kDictionaryKey is detected.
@@ -597,7 +600,8 @@
   }
   PrefChangeRegistrar registrar;
   registrar.Init(pref_service2.get());
-  registrar.Add(kDictionaryKey, base::Bind(&Fail, pref_service2.get()));
+  registrar.Add(kDictionaryKey,
+                base::BindRepeating(&Fail, pref_service2.get()));
   pref_service->SetInteger(kKey, kUpdatedValue);
   WaitForPrefChange(pref_service2.get(), kKey);
 }
diff --git a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
index fcd5cbf9..40caf91 100644
--- a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
+++ b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
@@ -858,3 +858,6 @@
 # https://crbug.com/795417
 -ContinueWhereILeftOffTest.SessionCookies
 -RestartTest.SessionCookies
+
+# Fails on debug waterfall bot but not locally or on release or trybots.
+-PopupsOnlyUiDelegateTest.ManyPopupNotifications
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
index d9d78c4..d3705468 100644
--- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
+++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
@@ -1291,15 +1291,15 @@
 crbug.com/591099 css3/flexbox/scrollbars-auto.html [ Failure ]
 crbug.com/591099 css3/flexbox/scrollbars.html [ Failure ]
 crbug.com/591099 css3/font-feature-settings-rendering.html [ Failure ]
-crbug.com/714962 css3/fonts/font-style-matching-0.html [ Timeout ]
-crbug.com/714962 css3/fonts/font-style-matching-1.html [ Timeout ]
-crbug.com/714962 css3/fonts/font-style-matching-2.html [ Timeout ]
-crbug.com/714962 css3/fonts/font-style-matching-3.html [ Timeout ]
-crbug.com/714962 css3/fonts/font-style-matching-4.html [ Timeout ]
-crbug.com/714962 css3/fonts/font-style-matching-5.html [ Timeout ]
-crbug.com/714962 css3/fonts/font-style-matching-6.html [ Timeout ]
-crbug.com/714962 css3/fonts/font-style-matching-7.html [ Timeout ]
-crbug.com/714962 css3/fonts/font-style-matching-8.html [ Timeout ]
+crbug.com/714962 inspector-protocol/layout-fonts/font-style-matching-0.js [ Failure ]
+crbug.com/714962 inspector-protocol/layout-fonts/font-style-matching-1.js [ Failure ]
+crbug.com/714962 inspector-protocol/layout-fonts/font-style-matching-2.js [ Failure ]
+crbug.com/714962 inspector-protocol/layout-fonts/font-style-matching-3.js [ Failure ]
+crbug.com/714962 inspector-protocol/layout-fonts/font-style-matching-4.js [ Failure ]
+crbug.com/714962 inspector-protocol/layout-fonts/font-style-matching-5.js [ Failure ]
+crbug.com/714962 inspector-protocol/layout-fonts/font-style-matching-6.js [ Failure ]
+crbug.com/714962 inspector-protocol/layout-fonts/font-style-matching-7.js [ Failure ]
+crbug.com/714962 inspector-protocol/layout-fonts/font-style-matching-8.js [ Failure ]
 crbug.com/591099 css3/masking/clip-path-circle-filter.html [ Failure ]
 crbug.com/591099 css3/masking/clip-path-circle-overflow-hidden.html [ Failure ]
 crbug.com/591099 css3/masking/clip-path-circle-overflow.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/NeverFixTests b/third_party/WebKit/LayoutTests/NeverFixTests
index c52aae4..9863997a 100644
--- a/third_party/WebKit/LayoutTests/NeverFixTests
+++ b/third_party/WebKit/LayoutTests/NeverFixTests
@@ -384,11 +384,6 @@
 external/wpt/battery-status/battery-charging-manual.https.html [ WontFix ]
 external/wpt/battery-status/battery-plugging-in-manual.https.html [ WontFix ]
 external/wpt/battery-status/battery-unplugging-manual.https.html [ WontFix ]
-external/wpt/clipboard-apis/async-navigator-clipboard-basics.https.html [ WontFix ]
-external/wpt/clipboard-apis/async-write-dttext-read-dttext-manual.https.html [ WontFix ]
-external/wpt/clipboard-apis/async-write-dttext-read-text-manual.https.html [ WontFix ]
-external/wpt/clipboard-apis/async-write-text-read-dttext-manual.https.html [ WontFix ]
-external/wpt/clipboard-apis/async-write-text-read-text-manual.https.html [ WontFix ]
 external/wpt/console/console-count-logging-manual.html [ WontFix ]
 external/wpt/css/CSS2/linebox/inline-formatting-context-010b.xht [ WontFix ]
 external/wpt/css/CSS2/normal-flow/inline-block-replaced-height-008.xht [ WontFix ]
diff --git a/third_party/WebKit/LayoutTests/clipboard/readtext-denied.https-expected.txt b/third_party/WebKit/LayoutTests/clipboard/readtext-denied.https-expected.txt
deleted file mode 100644
index d5d1bfb..0000000
--- a/third_party/WebKit/LayoutTests/clipboard/readtext-denied.https-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Tests navigator.clipboard.readText() permission failure.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS PermissionsHelper.setPermission is defined.
-PASS navigator.clipboard is non-null.
-PASS clipboard.readText() fail (as expected).
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/clipboard/readtext-denied.https.html b/third_party/WebKit/LayoutTests/clipboard/readtext-denied.https.html
deleted file mode 100644
index c089a3a..0000000
--- a/third_party/WebKit/LayoutTests/clipboard/readtext-denied.https.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<script src="../resources/js-test.js"></script>
-<script src="../http/tests/resources/permissions-helper.js"></script>
-</head>
-<body>
-<script>
-description("Tests navigator.clipboard.readText() permission failure.");
-
-shouldBeDefined("PermissionsHelper.setPermission");
-
-function successCallback(access) {
-  testFailed(
-    "clipboard.readText() does not fail (even though it really should have).");
-  finishJSTest();
-}
-
-function errorCallback(error) {
-  testPassed("clipboard.readText() fail (as expected).");
-  finishJSTest();
-}
-
-window.jsTestIsAsync = true;
-
-PermissionsHelper.setPermission('clipboard-read', 'denied').then(function() {
-  shouldBeNonNull("navigator.clipboard");
-  navigator.clipboard.readText().then(successCallback, errorCallback);
-});
-
-
-</script>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/clipboard/readtext-granted.https-expected.txt b/third_party/WebKit/LayoutTests/clipboard/readtext-granted.https-expected.txt
deleted file mode 100644
index 7751372..0000000
--- a/third_party/WebKit/LayoutTests/clipboard/readtext-granted.https-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Tests navigator.clipboard.readText() permission success.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS PermissionsHelper.setPermission is defined.
-PASS navigator.clipboard is non-null.
-PASS clipboard.readText() success (as expected).
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/clipboard/readtext-granted.https.html b/third_party/WebKit/LayoutTests/clipboard/readtext-granted.https.html
deleted file mode 100644
index 6f2ada9..0000000
--- a/third_party/WebKit/LayoutTests/clipboard/readtext-granted.https.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<script src="../resources/js-test.js"></script>
-<script src="../http/tests/resources/permissions-helper.js"></script>
-</head>
-<body>
-<script>
-description("Tests navigator.clipboard.readText() permission success.");
-
-shouldBeDefined("PermissionsHelper.setPermission");
-
-function successCallback(access) {
-  testPassed("clipboard.readText() success (as expected).");
-  finishJSTest();
-}
-
-function errorCallback(error) {
-  testFailed(
-    "clipboard.readText() does not fail (even though we hoped it would).");
-  finishJSTest();
-}
-
-window.jsTestIsAsync = true;
-
-PermissionsHelper.setPermission('clipboard-read', 'granted').then(function() {
-  shouldBeNonNull("navigator.clipboard");
-  navigator.clipboard.readText().then(successCallback, errorCallback);
-});
-
-
-</script>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/clipboard/writetext-denied.https-expected.txt b/third_party/WebKit/LayoutTests/clipboard/writetext-denied.https-expected.txt
deleted file mode 100644
index 15877da5e..0000000
--- a/third_party/WebKit/LayoutTests/clipboard/writetext-denied.https-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Tests navigator.clipboard.writeText() permission failure.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS PermissionsHelper.setPermission is defined.
-PASS navigator.clipboard is non-null.
-PASS clipboard.writeText() fail (as expected).
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/clipboard/writetext-denied.https.html b/third_party/WebKit/LayoutTests/clipboard/writetext-denied.https.html
deleted file mode 100644
index 3abd9b74..0000000
--- a/third_party/WebKit/LayoutTests/clipboard/writetext-denied.https.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<script src="../resources/js-test.js"></script>
-<script src="../http/tests/resources/permissions-helper.js"></script>
-</head>
-<body>
-<script>
-description("Tests navigator.clipboard.writeText() permission failure.");
-
-shouldBeDefined("PermissionsHelper.setPermission");
-
-function successCallback(access) {
-  testFailed(
-    "clipboard.writeText() does not fail (even though it really should have).");
-  finishJSTest();
-}
-
-function errorCallback(error) {
-  testPassed("clipboard.writeText() fail (as expected).");
-  finishJSTest();
-}
-
-window.jsTestIsAsync = true;
-
-PermissionsHelper.setPermission('clipboard-write', 'denied').then(function() {
-  shouldBeNonNull("navigator.clipboard");
-  navigator.clipboard.writeText("xyz").then(successCallback, errorCallback);
-});
-
-
-</script>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/clipboard/writetext-granted.https-expected.txt b/third_party/WebKit/LayoutTests/clipboard/writetext-granted.https-expected.txt
deleted file mode 100644
index fbeb5e0..0000000
--- a/third_party/WebKit/LayoutTests/clipboard/writetext-granted.https-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Tests navigator.clipboard.writeText() permission success.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS PermissionsHelper.setPermission is defined.
-PASS navigator.clipboard is non-null.
-PASS clipboard.writeText() success (as expected).
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/clipboard/writetext-granted.https.html b/third_party/WebKit/LayoutTests/clipboard/writetext-granted.https.html
deleted file mode 100644
index b0716bc..0000000
--- a/third_party/WebKit/LayoutTests/clipboard/writetext-granted.https.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<script src="../resources/js-test.js"></script>
-<script src="../http/tests/resources/permissions-helper.js"></script>
-</head>
-<body>
-<script>
-description("Tests navigator.clipboard.writeText() permission success.");
-
-shouldBeDefined("PermissionsHelper.setPermission");
-
-function successCallback(access) {
-  testPassed("clipboard.writeText() success (as expected).");
-  finishJSTest();
-}
-
-function errorCallback(error) {
-  testFailed(
-    "clipboard.writeText() does not fail (even though we hoped it would).");
-  finishJSTest();
-}
-
-window.jsTestIsAsync = true;
-
-PermissionsHelper.setPermission('clipboard-write', 'granted').then(function() {
-  shouldBeNonNull("navigator.clipboard");
-  navigator.clipboard.writeText("xyz").then(successCallback, errorCallback);
-});
-
-
-</script>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-0.html b/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-0.html
deleted file mode 100644
index 36c3025f5..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-0.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset="UTF-8">
-<head>
-    <script type="text/javascript" src="resources/inspector-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/css-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/dom-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/style-matching-test.js"></script>
-    <!-- available fonts --->
-    <style type="text/css">
-    </style>
-    <link rel="stylesheet" type="text/css" href="resources/applied-styles.css">
-</head>
-<body>
-<pre>According to the CSS3 Fonts Module, Step 4 or the Font Style Matching Algorithm
-( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
-available font faces by finding the nearest match in the following order of
-precedence: stretch, style, weight.
-</pre>
-    <div class="test">
-        <div id="condensed_normal_100">abcdefg</div>
-        <div id="condensed_normal_900">abcdefg</div>
-        <div id="condensed_italic_100">abcdefg</div>
-        <div id="condensed_italic_900">abcdefg</div>
-        <div id="expanded_normal_100">abcdefg</div>
-        <div id="expanded_normal_900">abcdefg</div>
-        <div id="expanded_italic_100">abcdefg</div>
-        <div id="expanded_italic_900">abcdefg</div>
-    </div>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-1.html b/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-1.html
deleted file mode 100644
index 36c3025f5..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-1.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset="UTF-8">
-<head>
-    <script type="text/javascript" src="resources/inspector-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/css-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/dom-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/style-matching-test.js"></script>
-    <!-- available fonts --->
-    <style type="text/css">
-    </style>
-    <link rel="stylesheet" type="text/css" href="resources/applied-styles.css">
-</head>
-<body>
-<pre>According to the CSS3 Fonts Module, Step 4 or the Font Style Matching Algorithm
-( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
-available font faces by finding the nearest match in the following order of
-precedence: stretch, style, weight.
-</pre>
-    <div class="test">
-        <div id="condensed_normal_100">abcdefg</div>
-        <div id="condensed_normal_900">abcdefg</div>
-        <div id="condensed_italic_100">abcdefg</div>
-        <div id="condensed_italic_900">abcdefg</div>
-        <div id="expanded_normal_100">abcdefg</div>
-        <div id="expanded_normal_900">abcdefg</div>
-        <div id="expanded_italic_100">abcdefg</div>
-        <div id="expanded_italic_900">abcdefg</div>
-    </div>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-2.html b/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-2.html
deleted file mode 100644
index 36c3025f5..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-2.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset="UTF-8">
-<head>
-    <script type="text/javascript" src="resources/inspector-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/css-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/dom-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/style-matching-test.js"></script>
-    <!-- available fonts --->
-    <style type="text/css">
-    </style>
-    <link rel="stylesheet" type="text/css" href="resources/applied-styles.css">
-</head>
-<body>
-<pre>According to the CSS3 Fonts Module, Step 4 or the Font Style Matching Algorithm
-( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
-available font faces by finding the nearest match in the following order of
-precedence: stretch, style, weight.
-</pre>
-    <div class="test">
-        <div id="condensed_normal_100">abcdefg</div>
-        <div id="condensed_normal_900">abcdefg</div>
-        <div id="condensed_italic_100">abcdefg</div>
-        <div id="condensed_italic_900">abcdefg</div>
-        <div id="expanded_normal_100">abcdefg</div>
-        <div id="expanded_normal_900">abcdefg</div>
-        <div id="expanded_italic_100">abcdefg</div>
-        <div id="expanded_italic_900">abcdefg</div>
-    </div>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-3.html b/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-3.html
deleted file mode 100644
index 36c3025f5..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-3.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset="UTF-8">
-<head>
-    <script type="text/javascript" src="resources/inspector-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/css-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/dom-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/style-matching-test.js"></script>
-    <!-- available fonts --->
-    <style type="text/css">
-    </style>
-    <link rel="stylesheet" type="text/css" href="resources/applied-styles.css">
-</head>
-<body>
-<pre>According to the CSS3 Fonts Module, Step 4 or the Font Style Matching Algorithm
-( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
-available font faces by finding the nearest match in the following order of
-precedence: stretch, style, weight.
-</pre>
-    <div class="test">
-        <div id="condensed_normal_100">abcdefg</div>
-        <div id="condensed_normal_900">abcdefg</div>
-        <div id="condensed_italic_100">abcdefg</div>
-        <div id="condensed_italic_900">abcdefg</div>
-        <div id="expanded_normal_100">abcdefg</div>
-        <div id="expanded_normal_900">abcdefg</div>
-        <div id="expanded_italic_100">abcdefg</div>
-        <div id="expanded_italic_900">abcdefg</div>
-    </div>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-4.html b/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-4.html
deleted file mode 100644
index 36c3025f5..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-4.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset="UTF-8">
-<head>
-    <script type="text/javascript" src="resources/inspector-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/css-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/dom-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/style-matching-test.js"></script>
-    <!-- available fonts --->
-    <style type="text/css">
-    </style>
-    <link rel="stylesheet" type="text/css" href="resources/applied-styles.css">
-</head>
-<body>
-<pre>According to the CSS3 Fonts Module, Step 4 or the Font Style Matching Algorithm
-( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
-available font faces by finding the nearest match in the following order of
-precedence: stretch, style, weight.
-</pre>
-    <div class="test">
-        <div id="condensed_normal_100">abcdefg</div>
-        <div id="condensed_normal_900">abcdefg</div>
-        <div id="condensed_italic_100">abcdefg</div>
-        <div id="condensed_italic_900">abcdefg</div>
-        <div id="expanded_normal_100">abcdefg</div>
-        <div id="expanded_normal_900">abcdefg</div>
-        <div id="expanded_italic_100">abcdefg</div>
-        <div id="expanded_italic_900">abcdefg</div>
-    </div>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-5.html b/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-5.html
deleted file mode 100644
index 36c3025f5..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-5.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset="UTF-8">
-<head>
-    <script type="text/javascript" src="resources/inspector-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/css-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/dom-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/style-matching-test.js"></script>
-    <!-- available fonts --->
-    <style type="text/css">
-    </style>
-    <link rel="stylesheet" type="text/css" href="resources/applied-styles.css">
-</head>
-<body>
-<pre>According to the CSS3 Fonts Module, Step 4 or the Font Style Matching Algorithm
-( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
-available font faces by finding the nearest match in the following order of
-precedence: stretch, style, weight.
-</pre>
-    <div class="test">
-        <div id="condensed_normal_100">abcdefg</div>
-        <div id="condensed_normal_900">abcdefg</div>
-        <div id="condensed_italic_100">abcdefg</div>
-        <div id="condensed_italic_900">abcdefg</div>
-        <div id="expanded_normal_100">abcdefg</div>
-        <div id="expanded_normal_900">abcdefg</div>
-        <div id="expanded_italic_100">abcdefg</div>
-        <div id="expanded_italic_900">abcdefg</div>
-    </div>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-6.html b/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-6.html
deleted file mode 100644
index 36c3025f5..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-6.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset="UTF-8">
-<head>
-    <script type="text/javascript" src="resources/inspector-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/css-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/dom-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/style-matching-test.js"></script>
-    <!-- available fonts --->
-    <style type="text/css">
-    </style>
-    <link rel="stylesheet" type="text/css" href="resources/applied-styles.css">
-</head>
-<body>
-<pre>According to the CSS3 Fonts Module, Step 4 or the Font Style Matching Algorithm
-( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
-available font faces by finding the nearest match in the following order of
-precedence: stretch, style, weight.
-</pre>
-    <div class="test">
-        <div id="condensed_normal_100">abcdefg</div>
-        <div id="condensed_normal_900">abcdefg</div>
-        <div id="condensed_italic_100">abcdefg</div>
-        <div id="condensed_italic_900">abcdefg</div>
-        <div id="expanded_normal_100">abcdefg</div>
-        <div id="expanded_normal_900">abcdefg</div>
-        <div id="expanded_italic_100">abcdefg</div>
-        <div id="expanded_italic_900">abcdefg</div>
-    </div>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-7.html b/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-7.html
deleted file mode 100644
index 36c3025f5..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-7.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset="UTF-8">
-<head>
-    <script type="text/javascript" src="resources/inspector-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/css-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/dom-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/style-matching-test.js"></script>
-    <!-- available fonts --->
-    <style type="text/css">
-    </style>
-    <link rel="stylesheet" type="text/css" href="resources/applied-styles.css">
-</head>
-<body>
-<pre>According to the CSS3 Fonts Module, Step 4 or the Font Style Matching Algorithm
-( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
-available font faces by finding the nearest match in the following order of
-precedence: stretch, style, weight.
-</pre>
-    <div class="test">
-        <div id="condensed_normal_100">abcdefg</div>
-        <div id="condensed_normal_900">abcdefg</div>
-        <div id="condensed_italic_100">abcdefg</div>
-        <div id="condensed_italic_900">abcdefg</div>
-        <div id="expanded_normal_100">abcdefg</div>
-        <div id="expanded_normal_900">abcdefg</div>
-        <div id="expanded_italic_100">abcdefg</div>
-        <div id="expanded_italic_900">abcdefg</div>
-    </div>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-8.html b/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-8.html
deleted file mode 100644
index 36c3025f5..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-8.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset="UTF-8">
-<head>
-    <script type="text/javascript" src="resources/inspector-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/css-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/dom-protocol-test.js"></script>
-    <script type="text/javascript" src="resources/style-matching-test.js"></script>
-    <!-- available fonts --->
-    <style type="text/css">
-    </style>
-    <link rel="stylesheet" type="text/css" href="resources/applied-styles.css">
-</head>
-<body>
-<pre>According to the CSS3 Fonts Module, Step 4 or the Font Style Matching Algorithm
-( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
-available font faces by finding the nearest match in the following order of
-precedence: stretch, style, weight.
-</pre>
-    <div class="test">
-        <div id="condensed_normal_100">abcdefg</div>
-        <div id="condensed_normal_900">abcdefg</div>
-        <div id="condensed_italic_100">abcdefg</div>
-        <div id="condensed_italic_900">abcdefg</div>
-        <div id="expanded_normal_100">abcdefg</div>
-        <div id="expanded_normal_900">abcdefg</div>
-        <div id="expanded_italic_100">abcdefg</div>
-        <div id="expanded_italic_900">abcdefg</div>
-    </div>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-expected.txt b/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-expected.txt
deleted file mode 100644
index 2426125..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-expected.txt
+++ /dev/null
@@ -1,1147 +0,0 @@
-According to the CSS3 Fonts Module, Step 4 or the Font Style Matching Algorithm
-( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
-available font faces by finding the nearest match in the following order of
-precedence: stretch, style, weight.
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-Available fonts updated: ["condensed_normal_100","condensed_normal_900","condensed_italic_100","condensed_italic_900","expanded_normal_100","expanded_normal_900","expanded_italic_100","expanded_italic_900"]
-
-#condensed_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-Available fonts updated: ["condensed_normal_100","condensed_italic_100","expanded_normal_100","expanded_italic_100"]
-
-#condensed_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-Available fonts updated: ["condensed_normal_900","condensed_italic_900","expanded_normal_900","expanded_italic_900"]
-
-#condensed_normal_100
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-Available fonts updated: ["condensed_normal_100","condensed_normal_900","expanded_normal_100","expanded_normal_900"]
-
-#condensed_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_italic_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_italic_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_italic_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_italic_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-Available fonts updated: ["condensed_normal_100","expanded_normal_100"]
-
-#condensed_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_italic_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_italic_900
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_italic_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_italic_900
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-Available fonts updated: ["condensed_normal_900","expanded_normal_900"]
-
-#condensed_normal_100
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_italic_100
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_italic_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_italic_100
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_italic_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-Available fonts updated: ["condensed_italic_100","condensed_italic_900","expanded_italic_100","expanded_italic_900"]
-
-#condensed_normal_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_normal_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_normal_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_normal_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-Available fonts updated: ["condensed_italic_100","expanded_italic_100"]
-
-#condensed_normal_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_normal_900
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#expanded_normal_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_normal_900
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-Available fonts updated: ["condensed_italic_900","expanded_italic_900"]
-
-#condensed_normal_100
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#condensed_normal_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_normal_100
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_normal_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-Available fonts updated: ["condensed_normal_100","condensed_normal_900","condensed_italic_100","condensed_italic_900"]
-
-#condensed_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#expanded_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#expanded_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#expanded_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-Available fonts updated: ["condensed_normal_100","condensed_italic_100"]
-
-#condensed_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#expanded_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#expanded_normal_900
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#expanded_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#expanded_italic_900
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-Available fonts updated: ["condensed_normal_900","condensed_italic_900"]
-
-#condensed_normal_100
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_normal_100
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#expanded_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#expanded_italic_100
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-Available fonts updated: ["condensed_normal_100","condensed_normal_900"]
-
-#condensed_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_italic_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_italic_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#expanded_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#expanded_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#expanded_italic_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#expanded_italic_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-Available fonts updated: ["condensed_normal_100"]
-
-#condensed_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_italic_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#condensed_italic_900
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#expanded_normal_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#expanded_normal_900
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#expanded_italic_100
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-#expanded_italic_900
-Expected: condensed normal 100
-Actual: condensed normal 100
-PASS
-
-Available fonts updated: ["condensed_normal_900"]
-
-#condensed_normal_100
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_italic_100
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#condensed_italic_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#expanded_normal_100
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#expanded_normal_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#expanded_italic_100
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-#expanded_italic_900
-Expected: condensed normal 900
-Actual: condensed normal 900
-PASS
-
-Available fonts updated: ["condensed_italic_100","condensed_italic_900"]
-
-#condensed_normal_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_normal_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_normal_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#expanded_normal_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#expanded_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-Available fonts updated: ["condensed_italic_100"]
-
-#condensed_normal_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_normal_900
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#expanded_normal_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#expanded_normal_900
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#expanded_italic_100
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-#expanded_italic_900
-Expected: condensed italic 100
-Actual: condensed italic 100
-PASS
-
-Available fonts updated: ["condensed_italic_900"]
-
-#condensed_normal_100
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#condensed_normal_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#condensed_italic_100
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#condensed_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_normal_100
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_normal_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_italic_100
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-#expanded_italic_900
-Expected: condensed italic 900
-Actual: condensed italic 900
-PASS
-
-Available fonts updated: ["expanded_normal_100","expanded_normal_900","expanded_italic_100","expanded_italic_900"]
-
-#condensed_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#condensed_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#condensed_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#condensed_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-Available fonts updated: ["expanded_normal_100","expanded_italic_100"]
-
-#condensed_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#condensed_normal_900
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#condensed_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#condensed_italic_900
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-Available fonts updated: ["expanded_normal_900","expanded_italic_900"]
-
-#condensed_normal_100
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#condensed_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#condensed_italic_100
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#condensed_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-Available fonts updated: ["expanded_normal_100","expanded_normal_900"]
-
-#condensed_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#condensed_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#condensed_italic_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#condensed_italic_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_italic_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_italic_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-Available fonts updated: ["expanded_normal_100"]
-
-#condensed_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#condensed_normal_900
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#condensed_italic_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#condensed_italic_900
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_italic_100
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-#expanded_italic_900
-Expected: expanded normal 100
-Actual: expanded normal 100
-PASS
-
-Available fonts updated: ["expanded_normal_900"]
-
-#condensed_normal_100
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#condensed_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#condensed_italic_100
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#condensed_italic_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_normal_100
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_normal_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_italic_100
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-#expanded_italic_900
-Expected: expanded normal 900
-Actual: expanded normal 900
-PASS
-
-Available fonts updated: ["expanded_italic_100","expanded_italic_900"]
-
-#condensed_normal_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#condensed_normal_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#condensed_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#condensed_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_normal_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_normal_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-Available fonts updated: ["expanded_italic_100"]
-
-#condensed_normal_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#condensed_normal_900
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#condensed_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#condensed_italic_900
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_normal_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_normal_900
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 100
-Actual: expanded italic 100
-PASS
-
-Available fonts updated: ["expanded_italic_900"]
-
-#condensed_normal_100
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#condensed_normal_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#condensed_italic_100
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#condensed_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_normal_100
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_normal_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_italic_100
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-#expanded_italic_900
-Expected: expanded italic 900
-Actual: expanded italic 900
-PASS
-
-
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/css-protocol-test.js b/third_party/WebKit/LayoutTests/css3/fonts/resources/css-protocol-test.js
deleted file mode 100644
index 10ebdab..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/resources/css-protocol-test.js
+++ /dev/null
@@ -1,203 +0,0 @@
-function initialize_cssTest()
-{
-
-InspectorTest.dumpStyleSheetText = function(styleSheetId, callback)
-{
-    InspectorTest.sendCommandOrDie("CSS.getStyleSheetText", { styleSheetId: styleSheetId }, onStyleSheetText);
-    function onStyleSheetText(result)
-    {
-        InspectorTest.log("==== Style sheet text ====");
-        InspectorTest.log(result.text);
-        callback();
-    }
-}
-
-function modifyStyleSheet(command, presetStyleSheetId, styleSheetId, expectError, options, callback)
-{
-    if (presetStyleSheetId)
-        options.styleSheetId = styleSheetId;
-    if (expectError)
-        InspectorTest.sendCommand(command, options, onResponse);
-    else
-        InspectorTest.sendCommandOrDie(command, options, onSuccess);
-
-    function onSuccess()
-    {
-        InspectorTest.dumpStyleSheetText(styleSheetId, callback);
-    }
-
-    function onResponse(message)
-    {
-        if (!message.error) {
-            InspectorTest.log("ERROR: protocol method call did not return expected error. Instead, the following message was received: " + JSON.stringify(message));
-            InspectorTest.completeTest();
-            return;
-        }
-        InspectorTest.log("Expected protocol error: " + message.error.message + (message.error.data ? " (" + message.error.data + ")" : ""));
-        callback();
-    }
-}
-
-InspectorTest.setPropertyText = modifyStyleSheet.bind(null, "CSS.setPropertyText", true);
-InspectorTest.setRuleSelector = modifyStyleSheet.bind(null, "CSS.setRuleSelector", true);
-InspectorTest.setMediaText = modifyStyleSheet.bind(null, "CSS.setMediaText", true);
-InspectorTest.addRule = modifyStyleSheet.bind(null, "CSS.addRule", true);
-InspectorTest.setStyleTexts = function(styleSheetId, expectError, edits, callback)
-{
-    var options = { edits: edits };
-    modifyStyleSheet("CSS.setStyleTexts", false, styleSheetId, expectError, options, callback);
-}
-
-InspectorTest.requestMainFrameId = function(callback)
-{
-    InspectorTest.sendCommandOrDie("Page.enable", {}, pageEnabled);
-
-    function pageEnabled()
-    {
-        InspectorTest.sendCommandOrDie("Page.getResourceTree", {}, resourceTreeLoaded);
-    }
-
-    function resourceTreeLoaded(payload)
-    {
-        callback(payload.frameTree.frame.id);
-    }
-};
-
-function indentLog(indent, string)
-{
-    var indentString = Array(indent+1).join(" ");
-    InspectorTest.log(indentString + string);
-}
-
-InspectorTest.dumpRuleMatch = function(ruleMatch)
-{
-
-    var rule = ruleMatch.rule;
-    var matchingSelectors = ruleMatch.matchingSelectors;
-    var media = rule.media || [];
-    var mediaLine = "";
-    for (var i = 0; i < media.length; ++i)
-        mediaLine += (i > 0 ? " " : "") + media[i].text;
-    var baseIndent = 0;
-    if (mediaLine.length) {
-        indentLog(baseIndent, "@media " + mediaLine);
-        baseIndent += 4;
-    }
-    var selectorLine = "";
-    var selectors = rule.selectorList.selectors;
-    for (var i = 0; i < selectors.length; ++i) {
-        if (i > 0)
-            selectorLine += ", ";
-        var matching = matchingSelectors.indexOf(i) !== -1;
-        if (matching)
-            selectorLine += "*";
-        selectorLine += selectors[i].text;
-        if (matching)
-            selectorLine += "*";
-    }
-    selectorLine += " {";
-    selectorLine += "    " + rule.origin;
-    if (!rule.style.styleSheetId)
-        selectorLine += "    readonly";
-    indentLog(baseIndent, selectorLine);
-    InspectorTest.dumpStyle(rule.style, baseIndent);
-    indentLog(baseIndent, "}");
-};
-
-InspectorTest.dumpStyle = function(style, baseIndent)
-{
-    if (!style)
-        return;
-    var cssProperties = style.cssProperties;
-    for (var i = 0; i < cssProperties.length; ++i) {
-        var cssProperty = cssProperties[i];
-        var propertyLine = cssProperty.name + ": " + cssProperty.value + ";";
-        indentLog(baseIndent + 4, propertyLine);
-    }
-}
-
-InspectorTest.displayName = function(url)
-{
-    return url.substr(url.lastIndexOf("/") + 1);
-};
-
-InspectorTest.loadAndDumpMatchingRulesForNode = function(nodeId, callback, omitLog)
-{
-    InspectorTest.sendCommandOrDie("CSS.getMatchedStylesForNode", { "nodeId": nodeId }, matchingRulesLoaded);
-
-    function matchingRulesLoaded(result)
-    {
-        if (!omitLog)
-            InspectorTest.log("Dumping matched rules: ");
-        dumpRuleMatches(result.matchedCSSRules);
-        if (!omitLog)
-            InspectorTest.log("Dumping inherited rules: ");
-        for (var inheritedEntry of result.inherited) {
-            InspectorTest.dumpStyle(inheritedEntry.inlineStyle);
-            dumpRuleMatches(inheritedEntry.matchedCSSRules);
-        }
-        callback();
-    }
-
-    function dumpRuleMatches(ruleMatches)
-    {
-        for (var ruleMatch of ruleMatches) {
-            var origin = ruleMatch.rule.origin;
-            if (origin !== "inspector" && origin !== "regular")
-                continue;
-            InspectorTest.dumpRuleMatch(ruleMatch);
-        }
-    }
-}
-
-InspectorTest.loadAndDumpCSSAnimationsForNode = function(nodeId, callback)
-{
-    InspectorTest.sendCommandOrDie("CSS.getMatchedStylesForNode", { "nodeId": nodeId }, cssAnimationsLoaded);
-
-    function cssAnimationsLoaded(result)
-    {
-        InspectorTest.log("Dumping CSS keyframed animations: ");
-        for (var keyframesRule of result.cssKeyframesRules) {
-            InspectorTest.log("@keyframes " + keyframesRule.animationName.text + " {");
-            for (var keyframe of keyframesRule.keyframes) {
-                indentLog(4, keyframe.keyText.text + " {");
-                InspectorTest.dumpStyle(keyframe.style, 4);
-                indentLog(4, "}");
-            }
-            InspectorTest.log("}");
-        }
-        callback();
-    }
-}
-
-InspectorTest.loadAndDumpMatchingRules = function(documentNodeId, selector, callback, omitLog)
-{
-    InspectorTest.requestNodeId(documentNodeId, selector, nodeIdLoaded);
-
-    function nodeIdLoaded(nodeId)
-    {
-        InspectorTest.loadAndDumpMatchingRulesForNode(nodeId, callback, omitLog);
-    }
-}
-
-InspectorTest.loadAndDumpInlineAndMatchingRules = function(documentNodeId, selector, callback, omitLog)
-{
-    InspectorTest.requestNodeId(documentNodeId, selector, nodeIdLoaded);
-    var nodeId;
-    function nodeIdLoaded(id)
-    {
-        nodeId = id;
-        InspectorTest.sendCommandOrDie("CSS.getInlineStylesForNode", { "nodeId": nodeId }, onInline);
-    }
-
-    function onInline(result)
-    {
-        if (!omitLog)
-            InspectorTest.log("Dumping inline style: ");
-        InspectorTest.log("{");
-        InspectorTest.dumpStyle(result.inlineStyle, 0);
-        InspectorTest.log("}");
-        InspectorTest.loadAndDumpMatchingRulesForNode(nodeId, callback, omitLog)
-    }
-}
-}
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/dom-protocol-test.js b/third_party/WebKit/LayoutTests/css3/fonts/resources/dom-protocol-test.js
deleted file mode 100644
index 1be873c..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/resources/dom-protocol-test.js
+++ /dev/null
@@ -1,46 +0,0 @@
-function initialize_domTest()
-{
-
-InspectorTest.trackGetChildNodesEvents = function(nodeInfo, callback)
-{
-  InspectorTest.eventHandler["DOM.setChildNodes"] = setChildNodes;
-
-  function setChildNodes(message)
-  {
-      var nodes = message.params.nodes;
-      for (var i = 0; i < nodes.length; ++i)
-        InspectorTest.addNode(nodeInfo, nodes[i]);
-      if (callback)
-        callback();
-  }
-}
-
-InspectorTest.addNode = function(nodeInfo, node)
-{
-  nodeInfo[node.nodeId] = node;
-  delete node.nodeId;
-  var children = node.children || [];
-  for (var i = 0; i < children.length; ++i)
-    InspectorTest.addNode(nodeInfo, children[i]);
-  var shadowRoots = node.shadowRoots || [];
-  for (var i = 0; i < shadowRoots.length; ++i)
-    InspectorTest.addNode(nodeInfo, shadowRoots[i]);
-}
-
-InspectorTest.requestDocumentNodeId = async function(callback)
-{
-    var result = await InspectorTest.sendCommandOrDie("DOM.getDocument", {});
-    if (callback)
-      callback(result.root.nodeId);
-    return result.root.nodeId;
-};
-
-InspectorTest.requestNodeId = async function(documentNodeId, selector, callback)
-{
-    var result = await InspectorTest.sendCommandOrDie("DOM.querySelector", { "nodeId": documentNodeId , "selector": selector });
-    if (callback)
-      callback(result.nodeId);
-    return result.nodeId;
-};
-
-}
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/inspector-protocol-test.js b/third_party/WebKit/LayoutTests/css3/fonts/resources/inspector-protocol-test.js
deleted file mode 100644
index 6dd8c3e..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/resources/inspector-protocol-test.js
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics. All rights reserved.
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-var initialize_InspectorTest = function() {
-
-InspectorTest.evaluateInInspectedPage = function(expression, callback)
-{
-    InspectorTest.sendCommand("Runtime.evaluate", { expression: expression }, callback);
-}
-
-InspectorTest.parseURL = function(url)
-{
-    var result = {};
-    var match = url.match(/^([^:]+):\/\/([^\/:]*)(?::([\d]+))?(?:(\/[^#]*)(?:#(.*))?)?$/i);
-    if (!match)
-        return result;
-    result.scheme = match[1].toLowerCase();
-    result.host = match[2];
-    result.port = match[3];
-    result.path = match[4] || "/";
-    result.fragment = match[5];
-    return result;
-}
-
-}
-
-var outputElement;
-
-/**
- * Logs message to process stdout via alert (hopefully implemented with immediate flush).
- * @param {string} text
- */
-function debugLog(text)
-{
-    alert(text);
-}
-
-/**
- * @param {string} text
- */
-function log(text)
-{
-    if (!outputElement) {
-        var intermediate = document.createElement("div");
-        document.body.appendChild(intermediate);
-
-        var intermediate2 = document.createElement("div");
-        intermediate.appendChild(intermediate2);
-
-        outputElement = document.createElement("div");
-        outputElement.className = "output";
-        outputElement.id = "output";
-        outputElement.style.whiteSpace = "pre";
-        intermediate2.appendChild(outputElement);
-    }
-    outputElement.appendChild(document.createTextNode(text));
-    outputElement.appendChild(document.createElement("br"));
-}
-
-function closeTest()
-{
-    closeInspector();
-    testRunner.notifyDone();
-}
-
-var reloadParam = "__protocol__test__reload__";
-
-function runTest()
-{
-    if (!window.testRunner) {
-        console.error("This test requires DumpRenderTree");
-        return;
-    }
-
-    var reloadIndex = window.location.href.lastIndexOf(reloadParam);
-    if (reloadIndex !== -1) {
-        var lastId = window.location.href.substring(reloadIndex + reloadParam.length);
-        window.lastFrontendEvalId = parseInt(lastId, 10);
-        evaluateInFrontend("InspectorTest.pageReloaded();");
-        return;
-    }
-
-    testRunner.dumpAsText();
-    testRunner.waitUntilDone();
-    testRunner.setCanOpenWindows(true);
-
-    openInspector();
-}
-
-function closeInspector()
-{
-    testRunner.closeWebInspector();
-}
-
-var lastFrontendEvalId = 0;
-function evaluateInFrontend(script)
-{
-    testRunner.evaluateInWebInspector(++lastFrontendEvalId, script);
-}
-
-function navigateProtocolTest(url)
-{
-    url += (url.indexOf("?") === -1 ? "?" : "&") + reloadParam + lastFrontendEvalId;
-    window.location.replace(url);
-}
-
-function prepareForReload()
-{
-    window.location += "#" + reloadParam + lastFrontendEvalId;
-}
-
-function openInspector()
-{
-    var scriptTags = document.getElementsByTagName("script");
-    var scriptUrlBasePath = "";
-    for (var i = 0; i < scriptTags.length; ++i) {
-        var index = scriptTags[i].src.lastIndexOf("/resources/inspector-protocol-test.js");
-        if (index > -1 ) {
-            scriptUrlBasePath = scriptTags[i].src.slice(0, index);
-            break;
-        }
-    }
-
-    var dummyFrontendURL = scriptUrlBasePath + "/resources/protocol-test.html";
-    testRunner.showWebInspector("", dummyFrontendURL);
-    // FIXME: rename this 'test' global field across all tests.
-    var testFunction = window.test;
-    if (typeof testFunction === "function") {
-        var initializers = "";
-        for (var symbol in window) {
-            if (!/^initialize_/.test(symbol) || typeof window[symbol] !== "function")
-                continue;
-            initializers += "(" + window[symbol].toString() + ")();\n";
-        }
-        evaluateInFrontend(initializers + "(" + testFunction.toString() +")();");
-        return;
-    }
-    // Kill waiting process if failed to send.
-    alert("Failed to send test function");
-    testRunner.notifyDone();
-}
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/protocol-test.html b/third_party/WebKit/LayoutTests/css3/fonts/resources/protocol-test.html
deleted file mode 100644
index 1f3ce3c..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/resources/protocol-test.html
+++ /dev/null
@@ -1,449 +0,0 @@
-<!--
-Copyright (C) 2012 Samsung Electronics. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1.  Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-2.  Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-<html>
-<head>
-<script>
-
-DevToolsAPI = {};
-
-InspectorTest = {};
-InspectorTest._dispatchTable = [];
-InspectorTest._requestId = -1;
-InspectorTest._dumpInspectorProtocolMessages = false;
-InspectorTest._embedderRequestId = -1;
-InspectorTest.eventHandler = {};
-
-InspectorTest.startDumpingProtocolMessages = function()
-{
-    InspectorTest._dumpInspectorProtocolMessages = true;
-}
-
-/**
- * @param {string} method
- * @param {object} params
- * @param {function({object} messageObject)=} handler
- */
-InspectorTest.sendCommand = function(method, params, handler)
-{
-    this._dispatchTable[++this._requestId] = handler;
-
-    var messageObject = { "method": method,
-                          "params": params,
-                          "id": this._requestId };
-
-    if (InspectorTest._dumpInspectorProtocolMessages)
-        testRunner.logToStderr("frontend: " + JSON.stringify(messageObject));
-    var embedderMessage = { "id": ++this._embedderRequestId, "method": "dispatchProtocolMessage", "params": [JSON.stringify(messageObject)] };
-    DevToolsHost.sendMessageToEmbedder(JSON.stringify(embedderMessage));
-    return this._requestId;
-}
-
-InspectorTest.sendCommandOrDie = function(command, properties, callback)
-{
-    var fulfill;
-    var result = new Promise(f => fulfill = f);
-
-    InspectorTest.sendCommand(command, properties || {}, commandCallback);
-    function commandCallback(msg)
-    {
-        if (msg.error) {
-            InspectorTest.log("ERROR: " + msg.error.message);
-            InspectorTest.completeTest();
-            return;
-        }
-        if (callback)
-            callback(msg.result);
-        fulfill(msg.result);
-    }
-    return result;
-}
-
-InspectorTest.sendCommandPromise = function(method, params)
-{
-    var callback;
-    var promise = new Promise(fulfill => callback = fulfill);
-    InspectorTest.sendCommand(method, params, callback);
-    return promise;
-}
-
-InspectorTest.waitForEventPromise = function(eventName)
-{
-    return new Promise(fulfill => InspectorTest.eventHandler[eventName] = fullfillAndClearListener.bind(null, fulfill));
-
-    function fullfillAndClearListener(fulfill, result)
-    {
-        fulfill(result);
-        delete InspectorTest.eventHandler[eventName];
-    }
-}
-
-InspectorTest.domUndo = function(callback)
-{
-    InspectorTest.sendCommandOrDie("DOM.undo", {}, callback);
-}
-
-InspectorTest.undoAndNext = function(next)
-{
-    return InspectorTest.domUndo.bind(InspectorTest, next);
-}
-
-InspectorTest.runTestSuite = function(testSuite)
-{
-    function nextTest()
-    {
-        if (!testSuite.length) {
-            InspectorTest.completeTest();
-            return;
-        }
-        var fun = testSuite.shift();
-        InspectorTest.log("\nRunning test: " + fun.name);
-        fun(nextTest);
-    }
-
-    nextTest();
-}
-
-/**
- * @param {function(object)=} callback
- */
-InspectorTest.wrapCallback = function(callback)
-{
-    /**
-     * @param {object} message
-     */
-    function callbackWrapper(message)
-    {
-        if (InspectorTest.completeTestIfError(message))
-            return;
-        if (!callback)
-            return;
-        try {
-            callback(message["result"]);
-        } catch (e) {
-            InspectorTest.log("Exception " + e + " while invoking callback: " + callback);
-            InspectorTest.completeTest();
-        }
-    }
-    return callbackWrapper;
-}
-
-/**
- * @param {string} command
- * @param {function({object} messageObject)=} handler
- */
-InspectorTest.sendRawCommand = function(command, handler)
-{
-    this._dispatchTable[++this._requestId] = handler;
-    var embedderMessage = { "id": ++this._embedderRequestId, "method": "dispatchProtocolMessage", "params": [command] };
-    DevToolsHost.sendMessageToEmbedder(JSON.stringify(embedderMessage));
-    return this._requestId;
-}
-
-InspectorTest.readyForTest = function()
-{
-    var embedderMessage = { "id": ++this._embedderRequestId, "method": "readyForTest" };
-    DevToolsHost.sendMessageToEmbedder(JSON.stringify(embedderMessage));
-}
-
-/**
- * @param {string|!Object} messageOrObject
- */
-DevToolsAPI.dispatchMessage = function(messageOrObject)
-{
-    var messageObject = (typeof messageOrObject === "string" ? JSON.parse(messageOrObject) : messageOrObject);
-    if (InspectorTest._dumpInspectorProtocolMessages)
-        testRunner.logToStderr("backend: " + JSON.stringify(messageObject));
-    var messageId = messageObject["id"];
-    try {
-        if (typeof messageId === "number") {
-            var handler = InspectorTest._dispatchTable[messageId];
-            if (handler && typeof handler === "function")
-                handler(messageObject);
-        } else {
-            var eventName = messageObject["method"];
-            var eventHandler = InspectorTest.eventHandler[eventName];
-            if (eventHandler)
-                eventHandler(messageObject);
-        }
-    } catch(e) {
-        InspectorTest.log("Exception when dispatching message: " + e + "\n" + e.stack + "\n message = " + JSON.stringify(messageObject, null, 2));
-        InspectorTest.completeTest();
-    }
-}
-
-/**
- * @param {number} callId
- * @param {string} script
- */
-DevToolsAPI.evaluateForTestInFrontend = function(callId, script)
-{
-    try {
-        eval(script);
-    } catch (e) {
-        InspectorTest.log("FAIL: exception in evaluateForTestInFrontend: " + e);
-        InspectorTest.completeTest();
-    }
-}
-
-/**
-* Logs message to document.
-* @param {string} message
-*/
-InspectorTest.log = function(message)
-{
-    this.sendCommand("Runtime.evaluate", { "expression": "log(" + JSON.stringify(message) + ")" } );
-}
-
-/**
-* Formats and logs object to document.
-* @param {Object} object
-* @param {string=} title
-* @param {Array<string>=} unstableKeys
-*/
-InspectorTest.logObject = function(object, title, unstableKeys)
-{
-    var lines = [];
-
-    function dumpValue(value, prefix, prefixWithName)
-    {
-        if (typeof value === "object" && value !== null) {
-            if (value instanceof Array)
-                dumpItems(value, prefix, prefixWithName);
-            else
-                dumpProperties(value, prefix, prefixWithName);
-        } else {
-            lines.push(prefixWithName + String(value).replace(/\n/g, " "));
-        }
-    }
-
-    function dumpProperties(object, prefix, firstLinePrefix)
-    {
-        prefix = prefix || "";
-        firstLinePrefix = firstLinePrefix || prefix;
-        lines.push(firstLinePrefix + "{");
-
-        var propertyNames = Object.keys(object);
-        propertyNames.sort();
-        for (var i = 0; i < propertyNames.length; ++i) {
-            var name = propertyNames[i];
-            if (!object.hasOwnProperty(name))
-                continue;
-            var prefixWithName = "    " + prefix + name + " : ";
-            var value = object[name];
-            if (unstableKeys && unstableKeys.indexOf(name) !== -1)
-                value = "<" + typeof(value) + ">";
-            dumpValue(value, "    " + prefix, prefixWithName);
-        }
-        lines.push(prefix + "}");
-    }
-
-    function dumpItems(object, prefix, firstLinePrefix)
-    {
-        prefix = prefix || "";
-        firstLinePrefix = firstLinePrefix || prefix;
-        lines.push(firstLinePrefix + "[");
-        for (var i = 0; i < object.length; ++i)
-            dumpValue(object[i], "    " + prefix, "    " + prefix + "[" + i + "] : ");
-        lines.push(prefix + "]");
-    }
-
-    dumpValue(object, "", title);
-    InspectorTest.log(lines.join("\n"));
-}
-
-/**
-* Logs message directly to process stdout via alert function (hopefully followed by flush call).
-* This message should survive process crash or kill by timeout.
-* @param {string} message
-*/
-InspectorTest.debugLog = function(message)
-{
-    this.sendCommand("Runtime.evaluate", { "expression": "debugLog(" + JSON.stringify(message) + ")" } );
-}
-
-InspectorTest.completeTest = function()
-{
-    this.sendCommand("Runtime.evaluate", { "expression": "closeTest();"} );
-}
-
-/**
- * Evaluates string in page.
- * @param {string} message
- * @param {!function} callback
- */
-InspectorTest.evaluateInPage = function(string, callback)
-{
-    this.sendCommand("Runtime.evaluate", { "expression": string }, function(message) {
-        if (message.error)
-            InspectorTest.log("Error while executing '" + string + "': " + message.error.message);
-        else if (callback)
-            callback(message.result.result.value);
-    });
-};
-
-/**
- * Evaluates expression in page.
- * @param {string} expression
- * @return {!Promise<?>}
- */
-InspectorTest.evaluateInPagePromise = function(expression)
-{
-    return InspectorTest.sendCommandPromise("Runtime.evaluate", { "expression": expression, awaitPromise: false, returnByValue: true });
-};
-
-InspectorTest.evaluateInPageAsync = function(expression)
-{
-    return InspectorTest.sendCommandPromise("Runtime.evaluate", { "expression": expression, awaitPromise: true, returnByValue: true }).then((message) => message.result.result.value);
-}
-
-InspectorTest.completeTestIfError = function(messageObject)
-{
-    if (messageObject.error) {
-        InspectorTest.log(messageObject.error.message);
-        InspectorTest.completeTest();
-        return true;
-    }
-    return false;
-}
-
-InspectorTest.checkExpectation = function(fail, name, messageObject)
-{
-    if (fail === !!messageObject.error) {
-        InspectorTest.log("PASS: " + name);
-        return true;
-    }
-
-    InspectorTest.log("FAIL: " + name + ": " + JSON.stringify(messageObject));
-    InspectorTest.completeTest();
-    return false;
-}
-InspectorTest.expectedSuccess = InspectorTest.checkExpectation.bind(null, false);
-InspectorTest.expectedError = InspectorTest.checkExpectation.bind(null, true);
-
-/**
- * @param {string} scriptName
- */
-InspectorTest.importScript = function(scriptName)
-{
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", scriptName, false);
-    xhr.send(null);
-    window.eval(xhr.responseText + "\n//# sourceURL=" + scriptName);
-}
-
-InspectorTest.safeWrap = function(func, onexception)
-{
-    function result()
-    {
-        if (!func)
-            return;
-        var wrapThis = this;
-        try {
-            return func.apply(wrapThis, arguments);
-        } catch(e) {
-            InspectorTest.log("Exception while running: " + func + "\n" + (e.stack || e));
-            if (onexception)
-                InspectorTest.safeWrap(onexception)();
-            else
-                InspectorTest.completeTest();
-        }
-    }
-    return result;
-}
-
-InspectorTest.navigate = function(url, callback)
-{
-    InspectorTest._pageLoadedCallback = InspectorTest.safeWrap(callback);
-    InspectorTest.evaluateInPage("navigateProtocolTest('" + url + "')");
-}
-
-InspectorTest.pageReloaded = function()
-{
-    InspectorTest.log("Page reloaded.");
-    var callback = InspectorTest._pageLoadedCallback;
-    delete InspectorTest._pageLoadedCallback;
-    if (callback)
-        callback();
-}
-
-InspectorTest.reloadProtocolTest = function(ignoreCache, callback)
-{
-    InspectorTest._pageLoadedCallback = afterReload;
-    // This will ensure we maintain logs after navigate.
-
-    getLogs(getOldLogsCallback);
-
-    function getLogs(getLogsCallback)
-    {
-        InspectorTest.evaluateInPage("outputElement.innerHTML", data => getLogsCallback(data.split("<br>")));
-    }
-
-    function clearLogs(clearLogsCallback)
-    {
-        InspectorTest.evaluateInPage("outputElement.textContent = \"\"", clearLogsCallback);
-    }
-
-    var oldLogs;
-
-    function getOldLogsCallback(data)
-    {
-        oldLogs = data;
-        prepareForReload();
-    }
-
-    function prepareForReload()
-    {
-        InspectorTest.evaluateInPage("prepareForReload()", reload);
-    }
-
-    function reload()
-    {
-        InspectorTest.sendCommand("Page.reload", { "ignoreCache": ignoreCache });
-    }
-
-    function afterReload()
-    {
-        var currentLogs;
-        getLogs(data => {
-            currentLogs = data;
-            clearLogs(addLogsBack);
-        });
-
-        function addLogsBack()
-        {
-            for (var log of oldLogs)
-                InspectorTest.log(log);
-            for (var log of currentLogs)
-                InspectorTest.log(log);
-            callback();
-        }
-    }
-}
-
-window.addEventListener("load", InspectorTest.readyForTest.bind(InspectorTest), false);
-
-</script>
-</head>
-</html>
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/style-matching-test.js b/third_party/WebKit/LayoutTests/css3/fonts/resources/style-matching-test.js
deleted file mode 100644
index 58a883fd..0000000
--- a/third_party/WebKit/LayoutTests/css3/fonts/resources/style-matching-test.js
+++ /dev/null
@@ -1,276 +0,0 @@
-function emptyFontFaceDeclarations()
-{
-    var stylesheet = document.styleSheets[0];
-    var rules = stylesheet.cssRules;
-    var rulesLengthSnapshot = stylesheet.cssRules.length;
-    if (!rulesLengthSnapshot)
-        return;
-    for (var i = 0; i < rulesLengthSnapshot; i++) {
-        stylesheet.deleteRule(0);
-    }
-}
-
-function makeFontFaceDeclaration(stretch, style, weight)
-{
-    var fontFaceDeclaration = '@font-face { font-family: "CSSMatchingtest"; ' +
-        "font-stretch: " + stretch + ";" +
-        "font-style: " + style + ";" +
-        "font-weight: " + weight + ";" +
-        'src: url("' +
-        "resources/fonts/CSSMatchingTest_" +
-        stretch + "_" + style + "_" + weight + '.ttf");';
-    return fontFaceDeclaration;
-}
-
-function notifyInspectorFontsReady() {
-    var cssRules = document.styleSheets[0].cssRules;
-    var fontsAvailable = [];
-    for (var i = 0; i < cssRules.length; i++) {
-        urlmatch = /url\(".*fonts\/CSSMatchingTest_(.*).ttf"\)/.exec(
-            cssRules[i].cssText);
-        fontsAvailable.push(urlmatch[1]);
-    }
-    evaluateInFrontend('window.onFontsLoaded(' +
-                       JSON.stringify(fontsAvailable) + ");");
-}
-
-function updateAvailableFontFaceDeclarations(available)
-{
-    emptyFontFaceDeclarations();
-    for (stretch of available.stretches)
-        for (style of available.styles)
-            for (weight of available.weights) {
-                document.styleSheets[0].addRule(
-                    makeFontFaceDeclaration(stretch, style, weight));
-            }
-
-    document.fonts.ready.then(() => {
-        // fonts.ready event fires too early, used fonts for rendering have not
-        // been updated yet. Force a layout to hopefully work around this.
-        // Remove this when crbug.com/516680 is fixed.
-        // https://drafts.csswg.org/css-font-loading/#font-face-set-ready
-        document.body.offsetTop;
-        window.notifyInspectorFontsReady()
-    });
-}
-
-function test()
-{
-    var documentNodeId;
-    var documentNodeSelector;
-    var allTestSelectors = [];
-    var testSelectors = [];
-    var testGroup = 0;
-
-    var stretches = [ 'condensed', 'expanded' ];
-    var styles = [ 'normal', 'italic' ];
-    var weights = [ '100', '900' ];
-
-    var weightsHumanReadable = [ "Thin", "Black" ];
-
-    var fontSetVariations = [];
-    var currentFontSetVariation = {};
-
-    makeFontSetVariations();
-
-    function makeFontSetVariations() {
-        // For each of the three properties we have three choices:
-        // Restrict to the first value, to the second, or
-        // allow both. So we're iterating over those options
-        // for each dimension to generate the set of allowed
-        // options for each property. The fonts in the test
-        // page will later be generated from these possible
-        // choices / restrictions.
-        function choices(property) {
-            return [ property, [ property[0] ], [ property[1] ] ];
-        }
-
-        for (stretchChoice of choices(stretches)) {
-            for (styleChoice of choices(styles)) {
-                for (weightChoice of choices(weights)) {
-                    var available = {};
-                    available.stretches = stretchChoice;
-                    available.styles = styleChoice;
-                    available.weights = weightChoice;
-                    fontSetVariations.push(available);
-                }
-            }
-        }
-    }
-
-    function subsetFontSetVariations() {
-        var NUM_GROUPS = 9;
-        var numVariations = fontSetVariations.length;
-        var groupLength = numVariations / NUM_GROUPS;
-        var start = testGroup * groupLength;
-        var end = start + groupLength;
-        InspectorTest.log("Testing font set variations " + start + " to " +
-            (end - 1) + " out of 0-" + (numVariations - 1));
-        fontSetVariations = fontSetVariations.slice(start, end);
-    }
-
-    InspectorTest.requestDocumentNodeId(onDocumentNodeId);
-
-    function onDocumentNodeId(nodeId)
-    {
-        documentNodeId = nodeId;
-
-        InspectorTest.evaluateInInspectedPage(
-            'JSON.stringify(document.location.href)',
-            extractTestGroup);
-    }
-
-    function extractTestGroup(result)
-    {
-        testGroup = /font-style-matching-(\d).html/.exec(
-            JSON.parse(result.result.result.value))[1];
-        subsetFontSetVariations();
-        InspectorTest.evaluateInInspectedPage(
-            'JSON.stringify(' +
-                'Array.prototype.map.call(' +
-                'document.querySelectorAll(".test *"),' +
-                'function(element) { return element.id } ));',
-            startTestingPage);
-    }
-
-    function startTestingPage(result)
-    {
-        allTestSelectors = JSON.parse(result.result.result.value);
-        nextTest();
-    }
-
-    function nextTest() {
-        if (testSelectors.length) {
-            testNextPageElement();
-        } else {
-            currentFontSetVariation = fontSetVariations.shift();
-            if (currentFontSetVariation) {
-                testSelectors = allTestSelectors.slice();
-                updateFontDeclarationsInPageForVariation(
-                    currentFontSetVariation);
-            } else {
-                InspectorTest.completeTest();
-            }
-        }
-    }
-
-    function updateFontDeclarationsInPageForVariation(fontSetVariation)
-    {
-        window.testPageFontsReady = false;
-        InspectorTest.evaluateInInspectedPage(
-            'updateAvailableFontFaceDeclarations(' +
-                JSON.stringify(fontSetVariation) +
-                ');');
-        // nextTest() is called once we receive the onFontsLoaded
-        // notification from the page.
-    }
-
-    // Explicitly make this available on window scope so that testing
-    // can resume through a signal from the page once the fonts.ready
-    // promise resolves.
-    window.onFontsLoaded = function(loadedFonts) {
-        InspectorTest.log("Available fonts updated: " +
-                          JSON.stringify(loadedFonts) + "\n");
-        nextTest();
-    }
-
-    function testNextPageElement(result)
-    {
-        var nextSelector = testSelectors.shift()
-        if (nextSelector) {
-            documentNodeSelector = "#" + nextSelector;
-            platformFontsForElementWithSelector(documentNodeSelector);
-        }
-    }
-
-    async function platformFontsForElementWithSelector(selector)
-    {
-        var nodeId = await InspectorTest.requestNodeId(documentNodeId, selector);
-        await InspectorTest.sendCommandOrDie("CSS.enable", {});
-        var response = await InspectorTest.sendCommandOrDie("CSS.getPlatformFontsForNode",
-                                                            { nodeId: nodeId });
-        logResults(response);
-        nextTest();
-    }
-
-    function logResults(response)
-    {
-        InspectorTest.log(documentNodeSelector);
-        logPassFailResult(
-            documentNodeSelector,
-            response.fonts[0].familyName);
-    }
-
-    function cssStyleMatchingExpectationForSelector(selector) {
-        var selectorStretchStyleWeight = selector.substr(1).split("_");
-        var selectorStretch = selectorStretchStyleWeight[0].toLowerCase();
-        var selectorStyle = selectorStretchStyleWeight[1].toLowerCase();
-        var selectorWeight = selectorStretchStyleWeight[2];
-
-        var expectedProperties = {};
-        if (currentFontSetVariation.stretches.indexOf(selectorStretch) > 0) {
-            expectedProperties.stretch = selectorStretch;
-        } else {
-            // If the requested property value is not availabe in the
-            // current font set, then it's restricted to only one value,
-            // which is the nearest match, and at index 0.
-            expectedProperties.stretch = currentFontSetVariation.stretches[0];
-        }
-
-        if (currentFontSetVariation.styles.indexOf(selectorStyle) > 0) {
-            expectedProperties.style = selectorStyle;
-        } else {
-            expectedProperties.style = currentFontSetVariation.styles[0];
-        }
-
-        if (currentFontSetVariation.weights.indexOf(selectorWeight) > 0) {
-            expectedProperties.weight = selectorWeight;
-        } else {
-            expectedProperties.weight = currentFontSetVariation.weights[0];
-        }
-
-        return expectedProperties;
-    }
-
-    function logPassFailResult(selector, usedFontName)
-    {
-        var actualStretchStyleWeight =
-            /CSSMatchingTest (\w*) (\w*) (.*)/.exec(usedFontName);
-        var actualStretch, actualStyle, actualWeight;
-        if (actualStretchStyleWeight && actualStretchStyleWeight.length > 3) {
-            actualStretch = actualStretchStyleWeight[1].toLowerCase();
-            actualStyle = actualStretchStyleWeight[2].toLowerCase();
-            // Font names have human readable weight description,
-            // we need to convert.
-            actualWeight = weights [
-                weightsHumanReadable.indexOf(actualStretchStyleWeight[3]) ];
-        } else {
-            actualStretch = usedFontName;
-            actualStyle = "";
-            actualWeight = "";
-        }
-
-        var expectedProperties = cssStyleMatchingExpectationForSelector(
-            selector);
-
-        InspectorTest.log("Expected: " +
-                          expectedProperties.stretch + " " +
-                          expectedProperties.style + " " +
-                          expectedProperties.weight);
-        InspectorTest.log("Actual: " + actualStretch + " " +
-                          actualStyle + " " +
-                          actualWeight);
-
-        if (actualStretch != expectedProperties.stretch ||
-            actualStyle != expectedProperties.style ||
-            actualWeight != expectedProperties.weight) {
-            InspectorTest.log("FAIL\n");
-        } else {
-            InspectorTest.log("PASS\n");
-        }
-    }
-};
-
-window.addEventListener("DOMContentLoaded", function () {
-    runTest();
-}, false);
diff --git a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
index f39be2fe..57edd3b 100644
--- a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
+++ b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
@@ -91852,11 +91852,6 @@
      {}
     ]
    ],
-   "XMLHttpRequest/open-url-encoding-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "XMLHttpRequest/open-url-multi-window-2-expected.txt": [
     [
      {}
@@ -125732,11 +125727,6 @@
      {}
     ]
    ],
-   "encoding/big5-encoder-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "encoding/eof-shift_jis-ref.html": [
     [
      {}
@@ -125757,11 +125747,6 @@
      {}
     ]
    ],
-   "encoding/gbk-encoder-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "encoding/iso-2022-jp-decoder-expected.txt": [
     [
      {}
@@ -127972,41 +127957,16 @@
      {}
     ]
    ],
-   "gyroscope/Gyroscope-disabled-by-feature-policy.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "gyroscope/Gyroscope-disabled-by-feature-policy.https.html.headers": [
     [
      {}
     ]
    ],
-   "gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
-   "gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
-   "gyroscope/Gyroscope-enabled-by-feature-policy.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "gyroscope/Gyroscope-enabled-by-feature-policy.https.html.headers": [
     [
      {}
     ]
    ],
-   "gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html.headers": [
     [
      {}
@@ -138127,11 +138087,6 @@
      {}
     ]
    ],
-   "html/semantics/forms/the-label-element/labelable-elements-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "html/semantics/forms/the-legend-element/.gitkeep": [
     [
      {}
@@ -138752,6 +138707,36 @@
      {}
     ]
    ],
+   "html/semantics/scripting-1/the-script-element/module/choice-of-error-1a.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/choice-of-error-1b.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/choice-of-error-2a.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/choice-of-error-2b.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/choice-of-error-3a.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/choice-of-error-3b.js": [
+    [
+     {}
+    ]
+   ],
    "html/semantics/scripting-1/the-script-element/module/crossorigin-common.js": [
     [
      {}
@@ -138887,6 +138872,21 @@
      {}
     ]
    ],
+   "html/semantics/scripting-1/the-script-element/module/error-type-1.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/error-type-2.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/error-type-3.js": [
+    [
+     {}
+    ]
+   ],
    "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js": [
     [
      {}
@@ -139077,11 +139077,6 @@
      {}
     ]
    ],
-   "html/semantics/scripting-1/the-script-element/module/instantiation-error-5-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "html/semantics/scripting-1/the-script-element/module/instantiation-error-5a.js": [
     [
      {}
@@ -139332,6 +139327,11 @@
      {}
     ]
    ],
+   "html/semantics/scripting-1/the-script-element/module/throw2.js": [
+    [
+     {}
+    ]
+   ],
    "html/semantics/scripting-1/the-script-element/resources/bom-utf-16be.js": [
     [
      {}
@@ -142852,41 +142852,16 @@
      {}
     ]
    ],
-   "orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html.headers": [
     [
      {}
     ]
    ],
-   "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
-   "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
-   "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html.headers": [
     [
      {}
     ]
    ],
-   "orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html.headers": [
     [
      {}
@@ -142902,41 +142877,16 @@
      {}
     ]
    ],
-   "orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html.headers": [
     [
      {}
     ]
    ],
-   "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
-   "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
-   "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html.headers": [
     [
      {}
     ]
    ],
-   "orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html.headers": [
     [
      {}
@@ -153197,6 +153147,21 @@
      {}
     ]
    ],
+   "webxr/OWNERS": [
+    [
+     {}
+    ]
+   ],
+   "webxr/resources/webxr_check.html": [
+    [
+     {}
+    ]
+   ],
+   "webxr/resources/webxr_util.js": [
+    [
+     {}
+    ]
+   ],
    "workers/OWNERS": [
     [
      {}
@@ -166511,6 +166476,24 @@
      {}
     ]
    ],
+   "css/css-color/color-resolving-hsl.html": [
+    [
+     "/css/css-color/color-resolving-hsl.html",
+     {}
+    ]
+   ],
+   "css/css-color/color-resolving-keywords.html": [
+    [
+     "/css/css-color/color-resolving-keywords.html",
+     {}
+    ]
+   ],
+   "css/css-color/color-resolving.html": [
+    [
+     "/css/css-color/color-resolving.html",
+     {}
+    ]
+   ],
    "css/css-conditional/js/001.html": [
     [
      "/css/css-conditional/js/001.html",
@@ -186471,6 +186454,24 @@
      {}
     ]
    ],
+   "html/semantics/scripting-1/the-script-element/module/choice-of-error-1.html": [
+    [
+     "/html/semantics/scripting-1/the-script-element/module/choice-of-error-1.html",
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/choice-of-error-2.html": [
+    [
+     "/html/semantics/scripting-1/the-script-element/module/choice-of-error-2.html",
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/choice-of-error-3.html": [
+    [
+     "/html/semantics/scripting-1/the-script-element/module/choice-of-error-3.html",
+     {}
+    ]
+   ],
    "html/semantics/scripting-1/the-script-element/module/compilation-error-1.html": [
     [
      "/html/semantics/scripting-1/the-script-element/module/compilation-error-1.html",
@@ -186621,6 +186622,24 @@
      {}
     ]
    ],
+   "html/semantics/scripting-1/the-script-element/module/error-type-1.html": [
+    [
+     "/html/semantics/scripting-1/the-script-element/module/error-type-1.html",
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/error-type-2.html": [
+    [
+     "/html/semantics/scripting-1/the-script-element/module/error-type-2.html",
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/error-type-3.html": [
+    [
+     "/html/semantics/scripting-1/the-script-element/module/error-type-3.html",
+     {}
+    ]
+   ],
    "html/semantics/scripting-1/the-script-element/module/errorhandling.html": [
     [
      "/html/semantics/scripting-1/the-script-element/module/errorhandling.html",
@@ -218775,6 +218794,12 @@
      {}
     ]
    ],
+   "webxr/webxr_availability.http.sub.html": [
+    [
+     "/webxr/webxr_availability.http.sub.html",
+     {}
+    ]
+   ],
    "workers/SharedWorker_blobUrl.html": [
     [
      "/workers/SharedWorker_blobUrl.html",
@@ -232548,10 +232573,6 @@
    "d2c5d8d1696112b771a332011c4f33065817ed9a",
    "testharness"
   ],
-  "XMLHttpRequest/open-url-encoding-expected.txt": [
-   "14de3430e449a720beaf87466441749a61d8830d",
-   "support"
-  ],
   "XMLHttpRequest/open-url-encoding.htm": [
    "a36c7b0e5919af7842883582ef9fc415d8f7ef25",
    "testharness"
@@ -233645,7 +233666,7 @@
    "testharness"
   ],
   "accelerometer/Accelerometer-disabled-by-feature-policy.https-expected.txt": [
-   "29aa900c7b3dc4e734d7bdfc05fe53e4cbefb077",
+   "52f629ee03b150890f9177af60ab82f716e16ae3",
    "support"
   ],
   "accelerometer/Accelerometer-disabled-by-feature-policy.https.html": [
@@ -233657,7 +233678,7 @@
    "support"
   ],
   "accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https-expected.txt": [
-   "12dae0dfd2da8a5a25ef68d3a0689d473a39c47d",
+   "a96695ef8430701cb0c45ffaa7710d1f96f90125",
    "support"
   ],
   "accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [
@@ -233665,7 +233686,7 @@
    "testharness"
   ],
   "accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https-expected.txt": [
-   "ce417ac39f40c0d2319ec746465e1d2548b13edb",
+   "dcbeb063b25e2c3f01bc7b68491f726b25c1634c",
    "support"
   ],
   "accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html": [
@@ -233673,7 +233694,7 @@
    "testharness"
   ],
   "accelerometer/Accelerometer-enabled-by-feature-policy.https-expected.txt": [
-   "74dbb6754ce379c9ac29dbe411191f1a6a8887a3",
+   "874b4f9b7ed78e090154e92f1cd9afa2a3af3461",
    "support"
   ],
   "accelerometer/Accelerometer-enabled-by-feature-policy.https.html": [
@@ -233685,7 +233706,7 @@
    "support"
   ],
   "accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https-expected.txt": [
-   "040199e6470fe38097aca6f1dc0001c25ad4cf16",
+   "d4f6158e03f73ef30f855ff407de2b73e564df81",
    "support"
   ],
   "accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html": [
@@ -254188,6 +254209,18 @@
    "ec85953fb0594db50a69ca9952092aeab403cf2c",
    "reftest"
   ],
+  "css/css-color/color-resolving-hsl.html": [
+   "75cabcabb03a525dbf9d90ba2510c4b33b58d849",
+   "testharness"
+  ],
+  "css/css-color/color-resolving-keywords.html": [
+   "2789a985787f59179c9bf1ad49ccb8dbbb8fea11",
+   "testharness"
+  ],
+  "css/css-color/color-resolving.html": [
+   "6eb90c067520ae0d2a9e52bccba6e03981007958",
+   "testharness"
+  ],
   "css/css-color/currentcolor-001.html": [
    "9563fc2934a198076ba32ec8659f0eca0515d953",
    "reftest"
@@ -255429,7 +255462,7 @@
    "reftest"
   ],
   "css/css-flexbox/OWNERS": [
-   "2c986309a6f6f20205e10d7f6f4d6ce95ba580ee",
+   "8fc4c7355cc91df5821c8364b573ab4431246fbd",
    "support"
   ],
   "css/css-flexbox/align-content-001.htm": [
@@ -294253,7 +294286,7 @@
    "reftest"
   ],
   "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/OWNERS": [
-   "fa800d6b6f797c89129985648dd37073b74f67b1",
+   "8fc4c7355cc91df5821c8364b573ab4431246fbd",
    "support"
   ],
   "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-001-ref.html": [
@@ -298952,10 +298985,6 @@
    "e44be4c30e9c65a4b51972efab2e161f166d58a5",
    "testharness"
   ],
-  "encoding/big5-encoder-expected.txt": [
-   "da781afed3b1f5da57531d09b4fdeff6fd548f14",
-   "support"
-  ],
   "encoding/big5-encoder.html": [
    "c5fec0f733b77620267488917cf54554c766801f",
    "testharness"
@@ -298996,10 +299025,6 @@
    "6f091a64de33492bd17ecbd37f5db0fff9af499a",
    "testharness"
   ],
-  "encoding/gbk-encoder-expected.txt": [
-   "9021fe9d14bff1f70c0a2649ac462da6e9170366",
-   "support"
-  ],
   "encoding/gbk-encoder.html": [
    "d099c6f374df5e68dd44bd6fe6115c415e74e91c",
    "testharness"
@@ -302916,10 +302941,6 @@
    "ea9edf12752af0a97cd9fe825ae927bd07090a56",
    "testharness"
   ],
-  "gyroscope/Gyroscope-disabled-by-feature-policy.https-expected.txt": [
-   "0c6fd4b6de03f95ee2181b83de29e60f7725cd70",
-   "support"
-  ],
   "gyroscope/Gyroscope-disabled-by-feature-policy.https.html": [
    "03457271ec8c254bf74f89afa7532a595b837404",
    "testharness"
@@ -302928,26 +302949,14 @@
    "b4767ccc5e319ec08705af56990c8d8093640ff0",
    "support"
   ],
-  "gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https-expected.txt": [
-   "82aab9034eb23be960c56c58ee6c788274b6b394",
-   "support"
-  ],
   "gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [
    "68df44bc71f1aaba74188f70dc916e9ee1dcc330",
    "testharness"
   ],
-  "gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https-expected.txt": [
-   "2a0569ffd3eea03d2e6b59e18763d66f3e484952",
-   "support"
-  ],
   "gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https.html": [
    "e7c53323038c11a977e547ebe9d7ae94646f1a06",
    "testharness"
   ],
-  "gyroscope/Gyroscope-enabled-by-feature-policy.https-expected.txt": [
-   "00322f4d54803ba1e81fbf0b712ce4c0655f5b76",
-   "support"
-  ],
   "gyroscope/Gyroscope-enabled-by-feature-policy.https.html": [
    "e4e170946a0289e8b1b6be83083aeeb92ddc4a8f",
    "testharness"
@@ -302956,10 +302965,6 @@
    "b0ce79c08e8b5908485a8bb4c6d86e8d20b2a44c",
    "support"
   ],
-  "gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https-expected.txt": [
-   "0bb20e71bd8cdea9cc2182fa75da29af5ce66dca",
-   "support"
-  ],
   "gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html": [
    "f48401e0e04294624ebb864224a6d2126e849870",
    "testharness"
@@ -307573,7 +307578,7 @@
    "support"
   ],
   "html/dom/interfaces-expected.txt": [
-   "1f66724f72c4e52ca66a9b828f07cb4e698394ef",
+   "fa67b737b70ee85b4cbc15a2b2d19e83c9bab186",
    "support"
   ],
   "html/dom/interfaces.html": [
@@ -307605,7 +307610,7 @@
    "testharness"
   ],
   "html/dom/reflection-forms-expected.txt": [
-   "ce72face67dbcf18803fccac554ec29fb7edc35c",
+   "5c2d4721c610a630bbcc9eb40ccbb6d04a372f6d",
    "support"
   ],
   "html/dom/reflection-forms.html": [
@@ -307677,7 +307682,7 @@
    "testharness"
   ],
   "html/dom/usvstring-reflection.html": [
-   "2878d29f3e16b437247315b2f31229649a7bd6b3",
+   "0e32e0e6d338d12f2a2a6f4887aae603db5426b0",
    "testharness"
   ],
   "html/editing/.gitkeep": [
@@ -316940,10 +316945,6 @@
    "612957c0c5b28b8797118eb5975bb41bc240d257",
    "testharness"
   ],
-  "html/semantics/forms/the-label-element/labelable-elements-expected.txt": [
-   "c456c54a2e1d04ad8c327bc32e02cec9560370f9",
-   "support"
-  ],
   "html/semantics/forms/the-label-element/labelable-elements.html": [
    "80275984254360d8b713b5b330c18ae34138b670",
    "testharness"
@@ -317105,7 +317106,7 @@
    "testharness"
   ],
   "html/semantics/forms/the-select-element/selected-index.html": [
-   "0753a7487a10bde3b879d4c2ed10ba3d0260a48a",
+   "3dbf338e9065f7f4ad2abfbaa55cf50329768cc2",
    "testharness"
   ],
   "html/semantics/forms/the-textarea-element/.gitkeep": [
@@ -318544,6 +318545,42 @@
    "364c6d3b48ef8143d62d6f6bb02aa5554b0bd367",
    "testharness"
   ],
+  "html/semantics/scripting-1/the-script-element/module/choice-of-error-1.html": [
+   "b7c603ed3b3acdcb45f4274f5c7a85d13f251994",
+   "testharness"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/choice-of-error-1a.js": [
+   "addc3cbacaa9a439d8cd082677ce3df8a3e1e861",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/choice-of-error-1b.js": [
+   "cf2e69b160a03622816b7e9ed8b3396a10cd3756",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/choice-of-error-2.html": [
+   "9e4650e461e3436316233e769a0cde49179e46fe",
+   "testharness"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/choice-of-error-2a.js": [
+   "849aec6ec6b5a556c991c95e8715b9112022d5fd",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/choice-of-error-2b.js": [
+   "6e5ed4042eeb4bc49c9c6f339cec73acbd5eda44",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/choice-of-error-3.html": [
+   "65dc20f79e348097cec23b814d2b2f918214647b",
+   "testharness"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/choice-of-error-3a.js": [
+   "5a6fa0aa0d9836150cd0c49c6c52c66844974033",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/choice-of-error-3b.js": [
+   "55f3f75425cd6277852f89148285a618fba542f6",
+   "support"
+  ],
   "html/semantics/scripting-1/the-script-element/module/compilation-error-1.html": [
    "e36eda2e9941e0cfefbfd867d36da6de4dfe7b2e",
    "testharness"
@@ -318633,7 +318670,7 @@
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html": [
-   "24f8c20c79cdaa6d81e9447e4f616ec5626d36ca",
+   "9d59895901b04cbef1b7263da1b974336bfa524f",
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports.html": [
@@ -318752,6 +318789,30 @@
    "32455a1418d94fa68368bae3b1c0291204f6b4e3",
    "testharness"
   ],
+  "html/semantics/scripting-1/the-script-element/module/error-type-1.html": [
+   "f376310fd56bf105c9c9cbe822a706e60faf4284",
+   "testharness"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/error-type-1.js": [
+   "917c96082ae3686c6409004ecafeba24bab9603a",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/error-type-2.html": [
+   "80bd1639df6d35b3e5eeeec009e1eb85000f0037",
+   "testharness"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/error-type-2.js": [
+   "6f2248a9d0bfd63251c838df4c92e7174a55605d",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/error-type-3.html": [
+   "f71b506e6a9bf1b9bf1cb8db518a590f7e7c90ed",
+   "testharness"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/error-type-3.js": [
+   "3c76f2c8466a6fb5cc307c0fc03e5d759e4c99c1",
+   "support"
+  ],
   "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js": [
    "ff9af4e5253db096cd5de8d2e7ed74cd05ed2561",
    "support"
@@ -318929,7 +318990,7 @@
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/module/instantiation-error-1.html": [
-   "2b4fa3b558dccb50bf0aee12a78e3320501ea1b5",
+   "65bf1fc554f0e32a486eb926763ceb948d84cbb6",
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/module/instantiation-error-1.js": [
@@ -318937,15 +318998,15 @@
    "support"
   ],
   "html/semantics/scripting-1/the-script-element/module/instantiation-error-2.html": [
-   "70271ef6fbf9f6e4f6e61438691b6fce317137e9",
+   "c4788803d0882fdf7d5222974cc941dbedfdeddb",
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html": [
-   "80fa90a214bb4839703c36f9db36e07f3a2ca7f2",
+   "ac1ea5ad075d545595352f456e30066a61e4eeff",
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html": [
-   "dbb8eb640576cd4f658e32dec441919e943f8d21",
+   "891daabc06f02663a86bcd748ae02b818fb36e14",
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/module/instantiation-error-4a.js": [
@@ -318964,12 +319025,8 @@
    "bcbde9b3648aaac72d8d2ae20846a53cef8abed3",
    "support"
   ],
-  "html/semantics/scripting-1/the-script-element/module/instantiation-error-5-expected.txt": [
-   "6c97e8f6bf1d01e290f766fdf8ec2507cba6b3b9",
-   "support"
-  ],
   "html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html": [
-   "fcc8da57e88ee87592a02888c54bb6d66e5172f6",
+   "f69241733b1bb2edc0733dcce2d7db279d80805b",
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/module/instantiation-error-5a.js": [
@@ -319260,6 +319317,10 @@
    "d071fd2e76896c4b66636f359d4426fe101f6d0f",
    "support"
   ],
+  "html/semantics/scripting-1/the-script-element/module/throw2.js": [
+   "34c282c0357c639400877b65bf21f30db3b99ea5",
+   "support"
+  ],
   "html/semantics/scripting-1/the-script-element/nomodule-reflect.html": [
    "ac2b3c16e9e9263cd4c14de205b63709c14ec2e3",
    "testharness"
@@ -322485,7 +322546,7 @@
    "support"
   ],
   "magnetometer/Magnetometer-disabled-by-feature-policy.https-expected.txt": [
-   "2bb3a8e6b4e555764802c12841c320a5fd9203be",
+   "9b71c24ebac69e42bc88eb682125608f2d121482",
    "support"
   ],
   "magnetometer/Magnetometer-disabled-by-feature-policy.https.html": [
@@ -322497,7 +322558,7 @@
    "support"
   ],
   "magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https-expected.txt": [
-   "4693de9dadef9df3ffd19b22e0de6925f8e9edf2",
+   "eeb13f720102302f7431eda65b7582e9ae269dbe",
    "support"
   ],
   "magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [
@@ -322505,7 +322566,7 @@
    "testharness"
   ],
   "magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https-expected.txt": [
-   "6d96e6662fc21052fccf0036d8d94c254efc0b39",
+   "ebd246e2346528a6a79886a8a8cce2b4b8eca945",
    "support"
   ],
   "magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html": [
@@ -322513,7 +322574,7 @@
    "testharness"
   ],
   "magnetometer/Magnetometer-enabled-by-feature-policy.https-expected.txt": [
-   "4e4b66cb3ee09074cc70abda3b06f3a36fbb1259",
+   "c23861af9d1d4a8eaad2a3bf21bd4603d9eff5b2",
    "support"
   ],
   "magnetometer/Magnetometer-enabled-by-feature-policy.https.html": [
@@ -322525,7 +322586,7 @@
    "support"
   ],
   "magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https-expected.txt": [
-   "9a574e0c7e1c1d8c9ec90f748966820c31e2817b",
+   "896aaed62339097d41937a839a8f3114b4d54611",
    "support"
   ],
   "magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html": [
@@ -331264,10 +331325,6 @@
    "6948dbbdc88ffd9aa84ad5a6c822b354809561b2",
    "manual"
   ],
-  "orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https-expected.txt": [
-   "2d7f8fb4f80f1afafa794998c8c5731694ae5da4",
-   "support"
-  ],
   "orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html": [
    "a87d0228b022235fd00eb345cc39f764afd8a64a",
    "testharness"
@@ -331276,26 +331333,14 @@
    "86af2e7ee455898629df466e7084ab6e909ec313",
    "support"
   ],
-  "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https-expected.txt": [
-   "b1950950193326f8fd6f204aab5c9aec3035bdba",
-   "support"
-  ],
   "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [
    "7b827dd86f0ec3fd63e7f37d90c9eb85a61be8e2",
    "testharness"
   ],
-  "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https-expected.txt": [
-   "1e148431ad62a945503a01994ac3640f15b4c6ae",
-   "support"
-  ],
   "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https.html": [
    "7bd1a53f63f8ce9cf4421dd173ee9772dd8ab739",
    "testharness"
   ],
-  "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https-expected.txt": [
-   "fdd8a806dc920ddc4b029e841ef0e538c76075d2",
-   "support"
-  ],
   "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html": [
    "8eaf4b91ba622a454a1f4bae08b5e59905b0deeb",
    "testharness"
@@ -331304,10 +331349,6 @@
    "f96008f4d28eec8c158a31c8e5c2bbc9ff55ef05",
    "support"
   ],
-  "orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https-expected.txt": [
-   "3b6685951d09663aca60cef5b7f13fc938d16629",
-   "support"
-  ],
   "orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html": [
    "02840fd195f2891fcb9d2159e92dad004ec94608",
    "testharness"
@@ -331336,10 +331377,6 @@
    "6f0eb976affc21e49f48c42c1bd9d9eb0083ee40",
    "manual"
   ],
-  "orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https-expected.txt": [
-   "808027cd55bf169265126f3d6ae142df89b2e1ad",
-   "support"
-  ],
   "orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html": [
    "721b7ba79a90408c073a00383e84966368602b0e",
    "testharness"
@@ -331348,26 +331385,14 @@
    "8795ff5458374246ec69928cf9545cb17be3c641",
    "support"
   ],
-  "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https-expected.txt": [
-   "d99e35674bba660e96fee9085cefbda5be6d802e",
-   "support"
-  ],
   "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [
    "69bcd956cb76f80481eb867a34fc755f96963d4c",
    "testharness"
   ],
-  "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https-expected.txt": [
-   "d76b99ebd0f58855942a772cd13ac1f9b454ca38",
-   "support"
-  ],
   "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https.html": [
    "2c86a4a1a9d71e1ebc8909cedc3cd11a82d59db1",
    "testharness"
   ],
-  "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https-expected.txt": [
-   "5c17e8c4d11cc73d88da1c96dedc0dbeb08e40b8",
-   "support"
-  ],
   "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html": [
    "14c83011b5ebcc04b64a3b958e272801f7cd2895",
    "testharness"
@@ -331376,10 +331401,6 @@
    "644b0398e76ea06dd5cd012338555b608da02122",
    "support"
   ],
-  "orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https-expected.txt": [
-   "72c2054dd3ff8790e99dfed92db910a309a38611",
-   "support"
-  ],
   "orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html": [
    "a469f03dcf3ce4c8b93fe1498935c6507b1bde87",
    "testharness"
@@ -341785,7 +341806,7 @@
    "testharness"
   ],
   "service-workers/service-worker/postmessage.https.html": [
-   "ea380417fcad1583f764473c554bf519e5beecde",
+   "dfd851992c1ab3be263bce6f669fceda47d0f410",
    "testharness"
   ],
   "service-workers/service-worker/ready.https-expected.txt": [
@@ -348333,11 +348354,11 @@
    "testharness"
   ],
   "webrtc/RTCPeerConnection-setRemoteDescription-tracks.https-expected.txt": [
-   "43d67a93ad10f37db21abb58e986a2ca33f5bc25",
+   "d364e0032e1e1e15d751a12c91801da8a65452f9",
    "support"
   ],
   "webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html": [
-   "c241a4553a387e8e77e0d65ad2bdfe79a34366d3",
+   "16fe3b155e55d1b66181788c93e570b36e5cc67d",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-setRemoteDescription.html": [
@@ -352820,6 +352841,22 @@
    "339f3f5f0e968076031f4a7c4361f9dba14d485d",
    "support"
   ],
+  "webxr/OWNERS": [
+   "6778c4629b4d65c0368f1fe0c91ceb309e54f596",
+   "support"
+  ],
+  "webxr/resources/webxr_check.html": [
+   "3fa96e39a073bda2e813f0b2c2411c26b73d374e",
+   "support"
+  ],
+  "webxr/resources/webxr_util.js": [
+   "2e92835bb77e028fffc597767528a4a3548f27e8",
+   "support"
+  ],
+  "webxr/webxr_availability.http.sub.html": [
+   "d8aa0ef8b7b3363fd23af2700dc6d9186201c408",
+   "testharness"
+  ],
   "workers/OWNERS": [
    "2c0d14a64d1111b54c353ac7d9ad0ea73caf9b7c",
    "support"
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-color/color-resolving-hsl.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-color/color-resolving-hsl.html
index 4670c61..d337017 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-color/color-resolving-hsl.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-color/color-resolving-hsl.html
@@ -4,6 +4,7 @@
 <link rel="author" title="Chris Nardi" href="mailto:csnardi1@gmail.com">
 <link rel="help" href="https://drafts.csswg.org/css-color-4/#resolving-color-values">
 <meta name="assert" content="Tests if HSL color values are resolved properly">
+<meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 
@@ -30,7 +31,7 @@
     function expected_value(rgb_channels) {
         if (rgb_channels === null)
             return null;
-        else if (rgb_channels.length === 3 || rgb_channels[3] == 1)
+        else if (rgb_channels.length === 3 || rgb_channels[3] == 1 || rgb_channels[3] === undefined)
             return "rgb(" + rgb_channels.slice(0, 3).join(", ") + ")";
         else
             return "rgba(" + rgb_channels.join(", ") + ")";
@@ -64,11 +65,11 @@
     for (var hue of [0, 30, 60, 90, 120, 180, 210, 240, 270, 300, 330, 360]) {
         for (var sat of [0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1]) {
             for (var light of [0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1]) {
+                rgb_channels = hslToRgb(hue / 60, sat, light);
                 for (var alpha of [undefined, 0, 0.2, 1]) {
-                    rgb_channels = hslToRgb(hue / 60, sat, light);
                     hsl_color = "hsl(" + hue + ", " + sat * 100 + "%, " + light * 100 + "%)";
+                    rgb_channels[3] = alpha;
                     if (alpha !== undefined) {
-                        rgb_channels[3] = alpha;
                         hsl_color = "hsla(" + hue + ", " + sat * 100 + "%, " + light * 100 + "%, " + alpha + ")";
                     }
                     color_test(hsl_color, expected_value(rgb_channels), "HSL/HSLA value should parse and round correctly");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-select-element/selected-index.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-select-element/selected-index.html
index 6c30698a..46f19da 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-select-element/selected-index.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-select-element/selected-index.html
@@ -70,7 +70,7 @@
   assertSelectedIndex(select, 0);
   select.selectedIndex = 2;
   assertSelectedIndex(select, 2);
-  this.add_cleanup(() => select.selectedIndex = 0);
+  this.add_cleanup(() => { select.selectedIndex = 0; });
 }, "set (HTMLSelectElement)");
 
 test(function () {
@@ -78,7 +78,7 @@
   assertSelectedIndex(select, 0);
   select.options.selectedIndex = 2;
   assertSelectedIndex(select, 2);
-  this.add_cleanup(() => select.selectedIndex = 0);
+  this.add_cleanup(() => { select.selectedIndex = 0; });
 }, "set (HTMLOptionsCollection)");
 
 test(function () {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/postmessage.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/postmessage.https.html
index 3a6487ea..5c43b954 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/postmessage.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/postmessage.https.html
@@ -13,7 +13,11 @@
 
     return service_worker_unregister_and_register(t, script, scope)
       .then(r => {
-          t.add_cleanup(() => r.unregister());
+          // TODO: return the Promise created by `r.unregister`once
+          // `testharness.js` has been updated to honor thenables returned by
+          // cleanup functions.
+          // See https://github.com/w3c/web-platform-tests/pull/8748
+          t.add_cleanup(() => { r.unregister(); });
           registration = r;
           worker = registration.installing;
 
@@ -62,7 +66,11 @@
 
     return service_worker_unregister_and_register(t, script, scope)
       .then(r => {
-          t.add_cleanup(() => r.unregister());
+          // TODO: return the Promise created by `r.unregister`once
+          // `testharness.js` has been updated to honor thenables returned by
+          // cleanup functions.
+          // See https://github.com/w3c/web-platform-tests/pull/8748
+          t.add_cleanup(() => { r.unregister(); });
 
           var ab = text_encoder.encode(message);
           assert_equals(ab.byteLength, message.length);
@@ -102,7 +110,11 @@
 
     return service_worker_unregister_and_register(t, script, scope)
       .then(r => {
-          t.add_cleanup(() => r.unregister());
+          // TODO: return the Promise created by `r.unregister`once
+          // `testharness.js` has been updated to honor thenables returned by
+          // cleanup functions.
+          // See https://github.com/w3c/web-platform-tests/pull/8748
+          t.add_cleanup(() => { r.unregister(); });
 
           var channel = new MessageChannel;
           port = channel.port1;
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-KeyframeEffectReadOnly-crash.js b/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-KeyframeEffectReadOnly-crash.js
index 486e7df..1e202ea 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-KeyframeEffectReadOnly-crash.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-KeyframeEffectReadOnly-crash.js
@@ -8,11 +8,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that animations can be created with KeyframeEffect and
-      KeyframeEffectReadOnly without crashing.
-      </p>
-
       <div id="node" style="background-color: red; height: 100px"></div>
       <div id="nodeRO" style="background-color: red; height: 100px"></div>
     `);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-group-matching-animations.js b/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-group-matching-animations.js
index 6574f85..f0b00a9 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-group-matching-animations.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-group-matching-animations.js
@@ -44,10 +44,6 @@
           }
       }
       </style>
-      <p>
-      Tests the matching performed in AnimationModel of groups composed of animations,
-      which are applied through a variety of selectors.
-      </p>
 
       <div id="node1" style="background-color: red; height: 100px"></div>
       <div id="node2" style="background-color: red; height: 100px"></div>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-group-matching-transitions.js b/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-group-matching-transitions.js
index fa12ff8..ca4c2ea 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-group-matching-transitions.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/animation/animation-group-matching-transitions.js
@@ -29,10 +29,6 @@
           transition: all 1ms;
       }
       </style>
-      <p>
-      Tests the matching performed in AnimationModel of groups composed of transitions,
-      which are applied through a variety of selectors.
-      </p>
 
       <div id="node1" style="background-color: red"></div>
       <div id="node2" style="background-color: red"></div>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-iframe-manifests.js b/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-iframe-manifests.js
index 349246f..32cedac7 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-iframe-manifests.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-iframe-manifests.js
@@ -10,10 +10,6 @@
   await ApplicationTestRunner.resetState();
 
   await TestRunner.showPanel('resources');
-  await TestRunner.loadHTML(`
-      <p>Tests that application cache model keeps track of manifest urls and statuses correctly.</p>
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=64581">Bug 64581</a>
-    `);
 
   var frameId1;
   var frameId2;
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-manifest-with-non-existing-file.js b/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-manifest-with-non-existing-file.js
index dc612d8..e1c3413 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-manifest-with-non-existing-file.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-manifest-with-non-existing-file.js
@@ -10,10 +10,6 @@
   await ApplicationTestRunner.resetState();
 
   await TestRunner.showPanel('resources');
-  await TestRunner.loadHTML(`
-      <p>Tests that application cache model keeps track of manifest urls and statuses correctly when there is a non existing file listed in manifest.</p>
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=64581">Bug 64581</a>
-    `);
 
   var frameId1;
   var frameId2;
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-swap.js b/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-swap.js
index f8c0f151..f3b9596 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-swap.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/appcache/appcache-swap.js
@@ -11,9 +11,6 @@
 
   await TestRunner.loadModule('network_test_runner');
   await TestRunner.showPanel('resources');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=72123">Bug 72123</a>
-    `);
 
   var frameId1;
   var frameId2;
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/components/datagrid-autosize.js b/third_party/WebKit/LayoutTests/http/tests/devtools/components/datagrid-autosize.js
index 1d0f373..f0abc36 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/components/datagrid-autosize.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/components/datagrid-autosize.js
@@ -4,9 +4,6 @@
 
 (async function() {
   TestRunner.addResult(`Tests DataGrid column auto size calculation.\n`);
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=101363">Bug 101363</a>
-    `);
 
   runtime.loadModulePromise('data_grid').then(function() {
     function testAutoSize(widths, minPercent, maxPercent) {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/components/utilities-highlight-results.js b/third_party/WebKit/LayoutTests/http/tests/devtools/components/utilities-highlight-results.js
index b41d565a7..8bc864c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/components/utilities-highlight-results.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/components/utilities-highlight-results.js
@@ -4,9 +4,6 @@
 
 (async function() {
   TestRunner.addResult(`Tests how utilities functions highlight text and then revert/re-apply highlighting changes.\n`);
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=70244">Bug 70244</a>
-    `);
 
   function dumpTextNodesAsString(node) {
     var result = '';
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console-xhr-logging-async.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console-xhr-logging-async.js
index 244b11b..a76cb58c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console-xhr-logging-async.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console-xhr-logging-async.js
@@ -7,9 +7,6 @@
       `Tests that XMLHttpRequest Logging works when Enabled and doesn't show logs when Disabled for asynchronous XHRs.\n`);
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.loadModule('network_test_runner');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=79229">Bug 79229</a>
-    `);
 
   step1();
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-Object-overwritten.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-Object-overwritten.js
index 8a5bd6be..0af7fee 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-Object-overwritten.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-Object-overwritten.js
@@ -9,14 +9,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
 
-  await TestRunner.loadHTML(`
-    <p>
-    Tests that Web Inspector's console is not broken if Object is overwritten in the inspected page.
-    Test passes if the expression is evaluated in the console and no errors printed.
-    <a href="https://bugs.webkit.org/show_bug.cgi?id=101320">Bug 101320.</a>
-    </p>
-  `);
-
   await TestRunner.evaluateInPagePromise(`
     Object = function() {};
   `);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-clear-function-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-clear-function-expected.txt
index ea27253..da5f10bb 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-clear-function-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-clear-function-expected.txt
@@ -3,22 +3,22 @@
 
 Running: clearFromConsoleAPI
 === Before clear ===
-console-clear-function.js:17 one
-console-clear-function.js:18 two
-console-clear-function.js:19 three
+console-clear-function.js:14 one
+console-clear-function.js:15 two
+console-clear-function.js:16 three
 === After clear ===
-console-clear-function.js:24 Console was cleared
+console-clear-function.js:21 Console was cleared
 
 Running: shouldNotClearWithPreserveLog
 === Before clear ===
-console-clear-function.js:24 Console was cleared
-console-clear-function.js:17 one
-console-clear-function.js:18 two
-console-clear-function.js:19 three
+console-clear-function.js:21 Console was cleared
+console-clear-function.js:14 one
+console-clear-function.js:15 two
+console-clear-function.js:16 three
 === After clear ===
-console-clear-function.js:24 Console was cleared
-console-clear-function.js:17 one
-console-clear-function.js:18 two
-console-clear-function.js:19 three
-console-clear-function.js:24 console.clear() was prevented due to 'Preserve log'
+console-clear-function.js:21 Console was cleared
+console-clear-function.js:14 one
+console-clear-function.js:15 two
+console-clear-function.js:16 three
+console-clear-function.js:21 console.clear() was prevented due to 'Preserve log'
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-clear-function.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-clear-function.js
index 772cd34..78936d64 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-clear-function.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-clear-function.js
@@ -7,9 +7,6 @@
 
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
-  await TestRunner.loadHTML(`
-    <a href="https://bugs.webkit.org/show_bug.cgi?id=101021">Bug 101021</a>
-  `);
   await TestRunner.evaluateInPagePromise(`
     function log()
     {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-blocked.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-blocked.js
index b5be313..fb6bbd6f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-blocked.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-blocked.js
@@ -9,13 +9,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
 
-  await TestRunner.loadHTML(`
-    <p>
-    Tests that evaluation in console still works even if script evals are prohibited by Content-Security-Policy.
-    <a href="https://bugs.webkit.org/show_bug.cgi?id=60800">Bug 60800.</a>
-    </p>
-  `);
-
   ConsoleTestRunner.evaluateInConsole('1+2', step1);
 
   function step1() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-scoped.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-scoped.js
index 57d2d50..ad0e967 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-scoped.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-scoped.js
@@ -9,12 +9,7 @@
 
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
-  await TestRunner.loadHTML(`
-    <p>
-    Tests that evaluating 'console.log()' in the console will have access to its outer scope variables.
-    <a href="https://bugs.webkit.org/show_bug.cgi?id=60547">Bug 60547.</a>
-    </p>
-  `);
+
   await TestRunner.evaluateInPagePromise(`
     // Used to interfere into InjectedScript._propertyDescriptors()
     Object.prototype.get = function() { return "FAIL"; };
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-syntax-error.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-syntax-error.js
index 14b0a5f..08e9e5f9 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-syntax-error.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-syntax-error.js
@@ -9,13 +9,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
 
-  await TestRunner.loadHTML(`
-    <p>
-    Tests that evaluating an expression with a syntax error in the console won't crash the browser.
-    <a href="https://bugs.webkit.org/show_bug.cgi?id=61194">Bug 61194.</a>
-    </p>
-  `);
-
   ConsoleTestRunner.evaluateInConsole('foo().', step1);
 
   function step1() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-throw.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-throw.js
index fec9127..19aca3b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-throw.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-throw.js
@@ -9,14 +9,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
 
-  await TestRunner.loadHTML(`
-    <p>
-    Tests that evaluating 'throw undefined|1|string|object|Error' in the console won't crash the browser and correctly reported.
-    <a href="https://bugs.webkit.org/show_bug.cgi?id=59611">Bug 59611.</a>
-    </p>
-  `);
-
-
   function dumpMessages(next, message) {
     ConsoleTestRunner.dumpConsoleMessagesIgnoreErrorStackFrames();
     ConsoleModel.consoleModel.addEventListener(ConsoleModel.ConsoleModel.Events.ConsoleCleared, afterCleared);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-undefined-override.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-undefined-override.js
index f1e76c3..4190a84 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-undefined-override.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-eval-undefined-override.js
@@ -9,14 +9,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
 
-  await TestRunner.loadHTML(`
-    <p>
-    Tests that evaluating something in console won't crash the browser if undefined value
-    is overriden. The test passes if it doesn't crash.
-    <a href="https://bugs.webkit.org/show_bug.cgi?id=64155">Bug 64155.</a>
-    </p>
-  `);
-
   ConsoleTestRunner.evaluateInConsole('var x = {a:1}; x.self = x; undefined = x;', step1);
 
   function step1() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-log-document-proto-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-log-document-proto-expected.txt
index aadb8c4..f9b6e26 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-log-document-proto-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-log-document-proto-expected.txt
@@ -1,4 +1,4 @@
 Test that console.dir(document.__proto__) won't result in an exception when the message is formatted in the inspector.Bug 27169.
 
-console-log-document-proto.js:19 HTMLDocument
+console-log-document-proto.js:14 HTMLDocument
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-log-document-proto.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-log-document-proto.js
index 3a5956f0..e43604f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-log-document-proto.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-log-document-proto.js
@@ -9,12 +9,7 @@
 
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
-  await TestRunner.loadHTML(`
-    <p>
-    Test that console.dir(document.__proto__) won't result in an exception when the message
-    is formatted in the inspector.<a bug="https://bugs.webkit.org/show_bug.cgi?id=27169">Bug  27169.</a>
-    </p>
-  `);
+
   await TestRunner.evaluateInPagePromise(`
     console.dir(document.__proto__);
   `);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-nested-group-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-nested-group-expected.txt
index 0bd4021..9d8c152 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-nested-group-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-nested-group-expected.txt
@@ -1,11 +1,11 @@
 Tests that console.group/groupEnd messages won't be coalesced. Bug 56114. Bug 63521.
 
-console-nested-group.js:18 outer group console-message-wrapper console-group-title console-from-api console-info-level > console-message
-console-nested-group.js:19 inner group console-message-wrapper console-group-title console-from-api console-info-level > console-message
-console-nested-group.js:20 Message inside inner group console-message-wrapper console-from-api console-info-level > console-message
-console-nested-group.js:23 Message that must not be in any group console-message-wrapper console-from-api console-info-level > console-message
-console-nested-group.js:28 One of several groups which shouldn't be coalesced. console-message-wrapper console-group-title console-from-api console-info-level > console-message
-console-nested-group.js:28 One of several groups which shouldn't be coalesced. console-message-wrapper console-group-title console-from-api console-info-level > console-message
-console-nested-group.js:28 One of several groups which shouldn't be coalesced. console-message-wrapper console-group-title console-from-api console-info-level > console-message
-console-nested-group.js:30 Message inside third group console-message-wrapper console-from-api console-info-level > console-message
+console-nested-group.js:12 outer group console-message-wrapper console-group-title console-from-api console-info-level > console-message
+console-nested-group.js:13 inner group console-message-wrapper console-group-title console-from-api console-info-level > console-message
+console-nested-group.js:14 Message inside inner group console-message-wrapper console-from-api console-info-level > console-message
+console-nested-group.js:17 Message that must not be in any group console-message-wrapper console-from-api console-info-level > console-message
+console-nested-group.js:22 One of several groups which shouldn't be coalesced. console-message-wrapper console-group-title console-from-api console-info-level > console-message
+console-nested-group.js:22 One of several groups which shouldn't be coalesced. console-message-wrapper console-group-title console-from-api console-info-level > console-message
+console-nested-group.js:22 One of several groups which shouldn't be coalesced. console-message-wrapper console-group-title console-from-api console-info-level > console-message
+console-nested-group.js:24 Message inside third group console-message-wrapper console-from-api console-info-level > console-message
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-nested-group.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-nested-group.js
index 39ee985..e59ddcc2 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-nested-group.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-nested-group.js
@@ -7,13 +7,7 @@
 
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
-  await TestRunner.loadHTML(`
-    <p>
-    Tests that console.group/groupEnd messages won't be coalesced. <a href="https://bugs.webkit.org/show_bug.cgi?id=56114">Bug 56114.</a>
-    <a href="https://bugs.webkit.org/show_bug.cgi?id=63521">Bug 63521.</a>
 
-    </p>
-  `);
   await TestRunner.evaluateInPagePromise(`
     console.group("outer group");
     console.group("inner group");
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-object-constructor-name-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-object-constructor-name-expected.txt
index a849823..cbb4b78 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-object-constructor-name-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-object-constructor-name-expected.txt
@@ -1,6 +1,6 @@
 Tests that the name of the function invoked as object constructor will be displayed as its type in the front-end. Bug 50063.
 
-console-object-constructor-name.js:22 Parent {}
-console-object-constructor-name.js:23 Child {}
-console-object-constructor-name.js:24 inner {}
+console-object-constructor-name.js:17 Parent {}
+console-object-constructor-name.js:18 Child {}
+console-object-constructor-name.js:19 inner {}
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-object-constructor-name.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-object-constructor-name.js
index 9b4cadc4..46037ec 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-object-constructor-name.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-object-constructor-name.js
@@ -7,12 +7,7 @@
       `Tests that the name of the function invoked as object constructor will be displayed as its type in the front-end. Bug 50063.\n`);
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that the name of the function invoked as object constructor will be displayed as its type in the front-end.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=50063">Bug 50063.</a>
-      </p>
-  `);
+
   await TestRunner.evaluateInPagePromise(`
       function Parent() { }
       function Child() { }
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-preserve-log.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-preserve-log.js
index 3a35c35..efe526c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-preserve-log.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-preserve-log.js
@@ -6,12 +6,6 @@
   TestRunner.addResult(`Tests that the console can preserve log messages across navigations. Bug 53359\n`);
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that the console can preserve log messages across navigations.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=53359">Bug 53359</a>
-      </p>
-  `);
 
   ConsoleModel.consoleModel.addMessage(new ConsoleModel.ConsoleMessage(
       TestRunner.runtimeModel, ConsoleModel.ConsoleMessage.MessageSource.Other,
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-substituted.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-substituted.js
index 71c65db..3caaaf8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-substituted.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-substituted.js
@@ -7,12 +7,7 @@
       `Tests that evaluate in console works even if window.console is substituted or deleted. Bug 53072\n`);
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that evaluate in console works even if window.console is substituted or deleted.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=53072">Bug 53072</a>
-      </p>
-  `);
+
   await TestRunner.evaluateInPagePromise(`
       function deleteConsole()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception-in-eval-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception-in-eval-expected.txt
index 45a16d5..0efed9b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception-in-eval-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception-in-eval-expected.txt
@@ -11,8 +11,8 @@
 evalSource @ evalURL.js:13
 (anonymous) @ evalURL.js:14
 setTimeout (async)
-doEvalWithSourceURL @ VM:36
-(anonymous) @ console-uncaught-exception-in-eval.js:46
+doEvalWithSourceURL @ VM:30
+(anonymous) @ console-uncaught-exception-in-eval.js:40
 VM:5 Uncaught Error: Exception in eval:anonymous
     at b (eval at <anonymous> (unknown source), <anonymous>:5:21)
     at a (eval at <anonymous> (unknown source), <anonymous>:10:15)
@@ -24,6 +24,6 @@
 evalSource @ VM:13
 (anonymous) @ VM:14
 setTimeout (async)
-doAnonymousEvalWith @ VM:42
-(anonymous) @ console-uncaught-exception-in-eval.js:49
+doAnonymousEvalWith @ VM:36
+(anonymous) @ console-uncaught-exception-in-eval.js:43
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception-in-eval.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception-in-eval.js
index 1f63804..ea4cd2f1 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception-in-eval.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception-in-eval.js
@@ -7,13 +7,7 @@
       `Tests that when uncaught exception in eval'ed script ending with //# sourceURL=url is logged into console, its stack trace will have the url as the script source. Bug 47252.\n`);
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that when uncaught exception in eval'ed script ending
-      with //# sourceURL=url is logged into console, its stack trace
-      will have the url as the script source. <a href="https://bugs.webkit.org/show_bug.cgi?id=47252">Bug 47252.</a>
-      </p>
-  `);
+
   await TestRunner.evaluateInPagePromise(`
       function evalSource(name)
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception.js b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception.js
index 36a0c50..1040923df 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/console/console-uncaught-exception.js
@@ -6,11 +6,7 @@
   TestRunner.addResult(`Tests that uncaught exceptions are logged into console.Bug 47250.\n`);
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('console');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that uncaught exceptions are logged into console.<a href="https://bugs.webkit.org/show_bug.cgi?id=47250">Bug 47250.</a>
-      </p>
-  `);
+
   await TestRunner.evaluateInPagePromise(`
       function loadIframe()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/database-table-name-excaping.js b/third_party/WebKit/LayoutTests/http/tests/devtools/database-table-name-excaping.js
index 9e54022..d4f6133 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/database-table-name-excaping.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/database-table-name-excaping.js
@@ -5,9 +5,6 @@
 (async function() {
   TestRunner.addResult(`Tests how table names are escaped in database table view.\n`);
   await TestRunner.loadModule('application_test_runner');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=61205">Bug 74422</a>
-    `);
 
   var tableName = 'table-name-with-dashes-and-"quotes"';
   var escapedTableName = Resources.DatabaseTableView.prototype._escapeTableName(tableName, '', true);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/edit/set-outer-html-body.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/edit/set-outer-html-body.js
index 162bf98..09eb85b3 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/edit/set-outer-html-body.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/edit/set-outer-html-body.js
@@ -8,10 +8,7 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests DOMAgent.setOuterHTML invoked on body tag. See https://bugs.webkit.org/show_bug.cgi?id=62272.
       <iframe src="../resources/set-outer-html-body-iframe.html" onload="runTest()"></iframe>
-      </p>
     `);
 
   var htmlNode;
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-delete-inline-style.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-delete-inline-style.js
index d9d3a72..e8c99be 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-delete-inline-style.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-delete-inline-style.js
@@ -8,10 +8,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that the &quot;style&quot; attribute removal results in the Styles sidebar pane update (not a crash). <a href="http://bugs.webkit.org/show_bug.cgi?id=51478">Bug 51478</a>
-      </p>
-
       <div id="inspected" style="color: red"></div>
     `);
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-hide-html-comments-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-hide-html-comments-expected.txt
index 8cf2ac0..548c863 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-hide-html-comments-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-hide-html-comments-expected.txt
@@ -7,7 +7,6 @@
       <!-- comment 2 -->
     - <body>
         - <p>
-              "\n      Verifies show/hide HTML comments setting.\n      "
               <span id="inspect"></span>
               <!-- comment 3 -->
           </p>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-hide-html-comments.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-hide-html-comments.js
index 57f4a51..9706798 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-hide-html-comments.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-hide-html-comments.js
@@ -16,7 +16,6 @@
       <!-- comment 2 -->
       <body>
       <p>
-      Verifies show/hide HTML comments setting.
       <span id="inspect"></span>
       <!-- comment 3 -->
       </p>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-inspect-iframe-from-different-domain.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-inspect-iframe-from-different-domain.js
index c3d212b..b81ba87 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-inspect-iframe-from-different-domain.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-inspect-iframe-from-different-domain.js
@@ -9,10 +9,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>Test that web inspector can select element in an iframe even if the element was created
-      via <code>createElement</code> of <code>document</code> other than iframe's <code>document</code>.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=60031">Bug 60031</a>
-      </p>
       <iframe style="width:400px"></iframe>
     `);
   await TestRunner.evaluateInPagePromise(`
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-limited-children-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-limited-children-expected.txt
index 961ccff..3c4b52c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-limited-children-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-limited-children-expected.txt
@@ -12,7 +12,6 @@
               <div id="id5">5</div>
               Show All Nodes (5 More)
           </div>
-          <p>\n      Tests that src and href element targets are rewritten properly.\n      </p>
       </body>
   </html>
 =========== Modified children ===========
@@ -27,7 +26,6 @@
               <div id="id5">5</div>
               Show All Nodes (6 More)
           </div>
-          <p>\n      Tests that src and href element targets are rewritten properly.\n      </p>
       </body>
   </html>
 =========== Loaded all children ===========
@@ -47,7 +45,6 @@
               <div id="id10">10</div>
               <a></a>
           </div>
-          <p>\n      Tests that src and href element targets are rewritten properly.\n      </p>
       </body>
   </html>
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-limited-children.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-limited-children.js
index 83dc0c17..35cb0c7e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-limited-children.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-limited-children.js
@@ -19,9 +19,6 @@
       <div id="id9">9</div>
       <div id="id10">10</div>
       </div>
-      <p>
-      Tests that src and href element targets are rewritten properly.
-      </p>
     `);
   await TestRunner.evaluateInPagePromise(`
       function insertNode()
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-reload-assert.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-reload-assert.js
index 090d06c0..7eaa241 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-reload-assert.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-reload-assert.js
@@ -9,10 +9,6 @@
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
       <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-      <p>
-      Tests that the inspected page does not crash in a debug build when reloading a page containing shadow DOM with open inspector. <a href="https://bugs.webkit.org/show_bug.cgi?id=84154">Bug 84154</a>.
-      </p>
-
       <input type="radio">
     `);
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/html-link-import-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/html-link-import-expected.txt
index 3607826e..abb6264b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/html-link-import-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/html-link-import-expected.txt
@@ -32,8 +32,6 @@
                   </html>
           </link>
       </head>
-    - <body>
-          <p>This test verifies that imported document is rendered within the import link.</p>
-      </body>
+      <body></body>
   </html>
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/html-link-import.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/html-link-import.js
index 05bfadec..ac20dc5 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/html-link-import.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/html-link-import.js
@@ -11,9 +11,6 @@
   <head>
   <link rel="import" href="../resources/imported-document.html">
   <head>
-  <body>
-  <p>This test verifies that imported document is rendered within the import link.</p>
-  </body>
   `);
 
   // Warm up highlighter module.
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-pointer-events-none.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-pointer-events-none.js
index f903d477..3ddb4d6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-pointer-events-none.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-pointer-events-none.js
@@ -29,8 +29,6 @@
           right: 10px;
       }
       </style>
-      <p>Test that Web Inspector can inspect element with <code>pointer-events:none</code>.
-      </p>
       <div id="outer"><div id="inner"></div></div>
     `);
   await TestRunner.evaluateInPagePromise(`
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/resolve-node-blocked.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/resolve-node-blocked.js
index 737caab1..34d7ba3 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/resolve-node-blocked.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/resolve-node-blocked.js
@@ -7,13 +7,6 @@
       `Tests that JS object to node resolution still works even if script evals are prohibited by Content-Security-Policy. The test passes if it doesn't crash. Bug 78705.\n`);
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that JS object to node resolution still works even if script evals are prohibited by Content-Security-Policy.
-      The test passes if it doesn't crash.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=78705">Bug 78705.</a>
-      </p>
-    `);
 
   var remoteObject = await TestRunner.evaluateInPageRemoteObject('document');
   TestRunner.addResult('didReceiveDocumentObject');
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/add-new-rule-with-style-after-body.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/add-new-rule-with-style-after-body.js
index bdc89fb..e893c40 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/add-new-rule-with-style-after-body.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/add-new-rule-with-style-after-body.js
@@ -8,10 +8,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that adding a new rule works when there is a STYLE element after BODY. TIMEOUT SHOULD NOT OCCUR! <a href="https://bugs.webkit.org/show_bug.cgi?id=111299">Bug 111299</a>
-      </p>
-
       <div id="inspected" style="font-size: 12px">Text</div>
     `);
   await TestRunner.evaluateInPagePromise(`
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/commit-selector.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/commit-selector.js
index 4facc3f2..986500c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/commit-selector.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/commit-selector.js
@@ -13,9 +13,6 @@
         color: green;
       }
       </style>
-      <p>
-      Tests that renaming a selector updates element styles. <a href="https://bugs.webkit.org/show_bug.cgi?id=70018">Bug 70018</a>.
-      </p>
 
       <div id="inspected" style="color: red">Text</div>
       <div id="other"></div>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/css-outline.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/css-outline.js
index 0a75d8f..7c84bb5 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/css-outline.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/css-outline.js
@@ -59,10 +59,6 @@
 </style>
     `);
   await TestRunner.evaluateInPagePromise(`
-      function initialize_Formatter() {
-          InspectorTest.preloadModule('formatter');
-      }
-
       function getCSS()
       {
           return document.querySelector("#styler").textContent;
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/cssom-media-insert-crash.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/cssom-media-insert-crash.js
index ec861d3..36c43764 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/cssom-media-insert-crash.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/cssom-media-insert-crash.js
@@ -15,7 +15,6 @@
           padding: 20px;
       }
       </style>
-      Tests that the inspected page does not crash after inspecting element with CSSOM added rules. <a href="http://crbug.com/373508">Bug 373508</a>
       <div id="box">Inspecting this element crashes DevTools</div>
     `);
   await TestRunner.evaluateInPagePromise(`
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/edit-value-with-trimmed-url.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/edit-value-with-trimmed-url.js
index 9f549b71..0d4e3d5 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/edit-value-with-trimmed-url.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-1/edit-value-with-trimmed-url.js
@@ -8,14 +8,7 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that editing a CSS property value in the Styles pane restores the original, non-trimmed value text. <a href="https://bugs.webkit.org/show_bug.cgi?id=107936">Bug 107936</a>.
-      </p>
-
       <div id="inspected" style="background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC) repeat-y 50% top">
-
-
-
       </div>
     `);
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/cssom-shorthand-important.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/cssom-shorthand-important.js
index ff8cbed2..1071356 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/cssom-shorthand-important.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/cssom-shorthand-important.js
@@ -12,7 +12,6 @@
         padding: 10px 50px !important;
       }
       </style>
-      <p>Tests that CSSOM-modified shorthands are reporting their &quot;important&quot; bits.</p>
       <div id="inspected">Text</div>
     `);
   await TestRunner.evaluateInPagePromise(`
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/import-pseudoclass-crash.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/import-pseudoclass-crash.js
index 7b1f53f..dab9b03f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/import-pseudoclass-crash.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/import-pseudoclass-crash.js
@@ -8,10 +8,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that modifying stylesheet text with @import and :last-child selector does not crash (<a href="https://bugs.webkit.org/show_bug.cgi?id=95324">Bug 95324</a>).
-      </p>
-
       <div>
           <p id="lastchild">:last-child</p>
       </div>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/metrics-box-sizing.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/metrics-box-sizing.js
index f9d25cdf..529f552 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/metrics-box-sizing.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/metrics-box-sizing.js
@@ -33,10 +33,6 @@
       <div id="output-border">zzz</div>
     `);
   await TestRunner.evaluateInPagePromise(`
-      var initialize_AdditionalPreload = function() {
-          InspectorTest.preloadModule("source_frame");
-      }
-
       function dumpDimensions()
       {
           var element;
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/page-reload-update-sidebar.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/page-reload-update-sidebar.js
index 036c7ce..beab9ad 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/page-reload-update-sidebar.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/page-reload-update-sidebar.js
@@ -8,10 +8,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that reloading page during styles sidebar pane editing cancels editing and re-renders the
-      sidebar pane.
-      </p>
       <div id="inspected" style="color: blue">Text</div>
     `);
   await TestRunner.evaluateInPagePromise(`
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/parse-declaration-with-quote.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/parse-declaration-with-quote.js
index d1a948c..58fb1a5 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/parse-declaration-with-quote.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/parse-declaration-with-quote.js
@@ -8,10 +8,7 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that CSSParser correctly parses declarations with unterminated strings. <a href="https://code.google.com/p/chromium/issues/detail?id=231127">Blink bug 231127</a>
-
-      </p><div id="inspected" style="color: red'foo"></div>
+      <div id="inspected" style="color: red'foo"></div>
     `);
 
   ElementsTestRunner.selectNodeAndWaitForStyles('inspected', dumpStyles);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/parse-utf8-bom.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/parse-utf8-bom.js
index b6875d17..618a91a1 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/parse-utf8-bom.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-2/parse-utf8-bom.js
@@ -8,9 +8,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that source data are extracted correctly from external stylesheets in UTF-8 with BOM. <a href="https://bugs.webkit.org/show_bug.cgi?id=59322">Bug 59322</a>.
-      </p>
       <h1 id="inspected">
       I'm red.
       </h1>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/selector-list.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/selector-list.js
index 07c8949..0c69d22 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/selector-list.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/selector-list.js
@@ -28,9 +28,6 @@
       }
 
       </style>
-      <p>
-      Tests representation of selector lists in the protocol. <a href="https://bugs.webkit.org/show_bug.cgi?id=103118">Bug 103118</a>.
-      </p>
 
       <div id="inspected">Text</div>
     `);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/shadow-dom-rules.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/shadow-dom-rules.js
index 3ffe635..6bbf589 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/shadow-dom-rules.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/shadow-dom-rules.js
@@ -7,10 +7,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      This test checks that style sheets hosted inside shadow roots
-      could be inspected.
-      </p>
       <div id="host"></div>
       <template id="tmpl">
           <style> .red { color: red; } </style>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-add-new-rule-tab.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-add-new-rule-tab.js
index df5472d5..3480c7a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-add-new-rule-tab.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-add-new-rule-tab.js
@@ -10,11 +10,6 @@
       <div id="inspected" style="font-size: 12px">Text</div>
       <div id="other" style="color:red"></div>
     `);
-  await TestRunner.evaluateInPagePromise(`
-      var initialize_AdditionalPreload = function() {
-          InspectorTest.preloadModule("source_frame");
-      }
-  `);
 
   ElementsTestRunner.selectNodeAndWaitForStyles('inspected', step1);
   TestRunner.addSniffer(Workspace.UISourceCode.prototype, 'addRevision', onRevisionAdded);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-add-new-rule.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-add-new-rule.js
index 902a3d55..e3c919a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-add-new-rule.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-add-new-rule.js
@@ -17,11 +17,6 @@
 
       <div class=" class-1 class-2  class-3   "></div>
     `);
-  await TestRunner.evaluateInPagePromise(`
-      var initialize_AdditionalPreload = function() {
-          InspectorTest.preloadModule("source_frame");
-      }
-  `);
 
   ElementsTestRunner.selectNodeAndWaitForStyles('inspected', step1);
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-disable-inherited.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-disable-inherited.js
index 813f718..580fc8c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-disable-inherited.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-3/styles-disable-inherited.js
@@ -11,11 +11,6 @@
           <div id="nested"></div>
       </div>
     `);
-  await TestRunner.evaluateInPagePromise(`
-      var initialize_AdditionalPreload = function() {
-          InspectorTest.preloadModule("source_frame");
-      }
-  `);
 
   ElementsTestRunner.selectNodeAndWaitForStyles('nested', step1);
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/resources/styles-update-links.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/resources/styles-update-links.js
deleted file mode 100644
index a56901e..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/resources/styles-update-links.js
+++ /dev/null
@@ -1,110 +0,0 @@
-var initialize_StylesUpdateLinks = function() {
-    function flattenRuleRanges(rule)
-    {
-        var ranges = [];
-        var medias = rule.media || [];
-        for (var i = 0; i < medias.length; ++i) {
-            var media = medias[i];
-            if (!media.range)
-                continue;
-            ranges.push({
-                range: media.range,
-                name: "media #" + i
-            });
-        }
-        for (var i = 0; i < rule.selectors.length; ++i) {
-            var selector = rule.selectors[i];
-            if (!selector.range)
-                continue;
-            ranges.push({
-                range: selector.range,
-                name: "selector #" + i
-            });
-        }
-        if (rule.style.range) {
-            ranges.push({
-                range: rule.style.range,
-                name: "style range"
-            });
-        }
-        var properties = rule.style.allProperties();
-        for (var i = 0; i < properties.length; ++i) {
-            var property = properties[i];
-            if (!property.range)
-                continue;
-            ranges.push({
-                range: property.range,
-                name: "property >>" + property.text + "<<"
-            });
-        }
-        return ranges;
-    }
-
-    function compareRuleRanges(lazyRule, originalRule)
-    {
-        if (lazyRule.selectorText !== originalRule.selectorText) {
-            InspectorTest.addResult("Error: rule selectors are not equal: " + lazyRule.selectorText + " != " + originalRule.selectorText);
-            return false;
-        }
-        var flattenLazy = flattenRuleRanges(lazyRule);
-        var flattenOriginal = flattenRuleRanges(originalRule);
-        if (flattenLazy.length !== flattenOriginal.length) {
-            InspectorTest.addResult("Error: rule range amount is not equal: " + flattenLazy.length + " != " + flattenOriginal.length);
-            return false
-        }
-        for (var i = 0; i < flattenLazy.length; ++i) {
-            var lazyRange = flattenLazy[i];
-            var originalRange = flattenOriginal[i];
-            if (lazyRange.name !== originalRange.name) {
-                InspectorTest.addResult("Error: rule names are not equal: " + lazyRange.name + " != " + originalRange.name);
-                return false;
-            }
-            if (!lazyRange.range.equal(originalRange.range)) {
-                InspectorTest.addResult("Error: ranges '" + lazyRange.name + "' are not equal: " + lazyRange.range.toString() + " != " + originalRange.range.toString());
-                return false;
-            }
-        }
-        InspectorTest.addResult(flattenLazy.length + " rule ranges are equal.");
-        return true;
-    }
-
-    InspectorTest.validateRuleRanges = function(selector, rules, callback)
-    {
-        InspectorTest.selectNodeAndWaitForStyles("other", onOtherSelected);
-
-        function onOtherSelected()
-        {
-            InspectorTest.selectNodeAndWaitForStyles(selector, onContainerSelected);
-        }
-
-        function onContainerSelected()
-        {
-            var fetchedRules = InspectorTest.getMatchedRules();
-            if (fetchedRules.length !== rules.length) {
-                InspectorTest.addResult(String.sprintf("Error: rules sizes are not equal! Expected: %d, actual: %d", fetchedRules.length, rules.length));
-                InspectorTest.completeTest();
-                return;
-            }
-            for (var i = 0; i < fetchedRules.length; ++i) {
-                if (!compareRuleRanges(rules[i], fetchedRules[i])) {
-                    InspectorTest.completeTest();
-                    return;
-                }
-            }
-            callback();
-        }
-    }
-
-    InspectorTest.getMatchedRules = function()
-    {
-        var rules = [];
-        for (var block of UI.panels.elements._stylesWidget._sectionBlocks) {
-            for (var section of block.sections) {
-                var rule = section.style().parentRule;
-                if (rule)
-                    rules.push(rule);
-            }
-        }
-        return rules;
-    }
-}
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-should-not-force-sync-style-recalc.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-should-not-force-sync-style-recalc.js
index c36a1886..2c4f34ed 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-should-not-force-sync-style-recalc.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-should-not-force-sync-style-recalc.js
@@ -20,9 +20,6 @@
       .test-8 { font-family: 'Arial'; }
       .test-9 { font-family: 'Arial'; }
       </style>
-      <p>
-      Tests that inspector doesn't force sync layout on operations with CSSOM.<a href="https://code.google.com/p/chromium/issues/detail?id=315885">Bug 315885</a>.
-      </p>
     `);
   await TestRunner.evaluateInPagePromise(`
       function performActions()
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-1.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-1.js
index 21b3352a..98dccdfe 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-1.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-1.js
@@ -35,7 +35,6 @@
     `);
   await TestRunner.addStylesheetTag('../styles/resources/styles-update-links-2.css');
   await TestRunner.addStylesheetTag('../styles/resources/styles-update-links.css');
-  await TestRunner.addScriptTag('resources/styles-update-links.js');
 
   TestRunner.runTestSuite([
     function selectInitialNode(next) {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-2.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-2.js
index 8520fc12..9cc78b3c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-2.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-2.js
@@ -35,7 +35,6 @@
     `);
   await TestRunner.addStylesheetTag('../styles/resources/styles-update-links-2.css');
   await TestRunner.addStylesheetTag('../styles/resources/styles-update-links.css');
-  await TestRunner.addScriptTag('resources/styles-update-links.js');
 
   TestRunner.runTestSuite([
     function selectInitialNode(next) {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-3.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-3.js
index df0f5ff..6895e30 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-3.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-3.js
@@ -35,7 +35,6 @@
     `);
   await TestRunner.addStylesheetTag('../styles/resources/styles-update-links-2.css');
   await TestRunner.addStylesheetTag('../styles/resources/styles-update-links.css');
-  await TestRunner.addScriptTag('resources/styles-update-links.js');
 
   TestRunner.runTestSuite([
     function selectInitialNode(next) {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-4.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-4.js
index 42940c2..a5d116d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-4.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-update-links-4.js
@@ -35,7 +35,6 @@
     `);
   await TestRunner.addStylesheetTag('../styles/resources/styles-update-links-2.css');
   await TestRunner.addStylesheetTag('../styles/resources/styles-update-links.css');
-  await TestRunner.addScriptTag('resources/styles-update-links.js');
 
   TestRunner.runTestSuite([
     function selectNodeWithPseudoElements(next) {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-url-linkify.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-url-linkify.js
index 62bf20d..bad2fa5 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-url-linkify.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/styles-url-linkify.js
@@ -8,9 +8,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that URLs are linked to and completed correctly. Bugs <a href="http://bugs.webkit.org/show_bug.cgi?id=51663">51663</a>, <a href="http://bugs.webkit.org/show_bug.cgi?id=53171">53171</a>, <a href="http://bugs.webkit.org/show_bug.cgi?id=62643">62643</a>, <a href="http://bugs.webkit.org/show_bug.cgi?id=72373">72373</a>, <a href="http://bugs.webkit.org/show_bug.cgi?id=79905">79905</a>
-      </p>
       <div id="local"></div>
       <iframe src="../styles/resources/styles-url-linkify-iframe.html"></iframe>
     `);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/supports-rule-after-invalid-selector-rule-crash.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/supports-rule-after-invalid-selector-rule-crash.js
index 11ec99c..1c0e2d8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/supports-rule-after-invalid-selector-rule-crash.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/supports-rule-after-invalid-selector-rule-crash.js
@@ -11,7 +11,6 @@
       ** { }
       @supports (display: flex) { }
       </style>
-      This test passes if it doesn't crash.
     `);
 
   TestRunner.completeTest();
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/undo-add-rule-crash.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/undo-add-rule-crash.js
index 8727dd03..98e24c63 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/undo-add-rule-crash.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles-4/undo-add-rule-crash.js
@@ -11,9 +11,6 @@
       @keyframes cfpulse1 { 0% { opacity: 0.1;  } }
       .c1 { animation-name: cfpulse1;  }
       </style>
-      Tests that the inspected page does not crash after undoing a new rule addition. <a href="https://bugs.webkit.org/show_bug.cgi?id=104806">Bug 104806</a>
-
-      <p>The test has passed (no crash).</p>
       <div id="inspected"><div id="other"></div>
       <style>
       @keyframes cfpulse1 { 0% { opacity: 0.1;  } }
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/selector-line-deprecated.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/selector-line-deprecated.js
index 11a513b..62650c5 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/selector-line-deprecated.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/selector-line-deprecated.js
@@ -13,10 +13,6 @@
         color: green;
       }
       </style>
-      <p>
-      Tests that selector line is computed correctly regardless of its start column. <a href="https://bugs.webkit.org/show_bug.cgi?id=110732">Bug 110732</a>.
-      </p>
-
       <div id="container">
           <div id="inspected">Text</div>
       </div>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/selector-line.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/selector-line.js
index 06c5bd7..1f1a23c9 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/selector-line.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/selector-line.js
@@ -15,9 +15,6 @@
         color: green;
       }
       </style>
-      <p>
-      Tests that selector line is computed correctly regardless of its start column. <a href="https://bugs.webkit.org/show_bug.cgi?id=110732">Bug 110732</a>.
-      </p>
 
       <div id="container">
           <div id="inspected">Text</div>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/styles-redirected-css.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/styles-redirected-css.js
index 6e393b7d..215d693 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/styles-redirected-css.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/styles-redirected-css.js
@@ -7,8 +7,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=68631">Bug 68631</a>
-
       <div id="test_div">test</div>
     `);
   await TestRunner.addStylesheetTag('../styles/resources/styles-redirected-css.php');
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/undo-after-cancelled-editing.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/undo-after-cancelled-editing.js
index c604c05..148494b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/undo-after-cancelled-editing.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/undo-after-cancelled-editing.js
@@ -11,10 +11,6 @@
       #inspected {
       }
       </style>
-      <p>
-      Verifies that cancelling property value editing doesn't affect
-      undo stack.
-      </p>
 
       <div id="inspected">Text</div>
     `);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/updates-during-dom-traversal.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/updates-during-dom-traversal.js
index 7ae2639c..946a63d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/updates-during-dom-traversal.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/updates-during-dom-traversal.js
@@ -7,11 +7,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that style updates are throttled during DOM traversal. <a href="https://bugs.webkit.org/show_bug.cgi?id=77643">Bug 77643</a>.
-      </p>
-
-
       <div></div>
       <div></div>
       <div></div>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/updates-throttled.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/updates-throttled.js
index 0115990..1048625 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/updates-throttled.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/updates-throttled.js
@@ -7,10 +7,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that Styles sidebar DOM rebuilds are throttled during consecutive updates. <a href="https://bugs.webkit.org/show_bug.cgi?id=78086">Bug 78086</a>.
-      </p>
-
       <div id="inspected"></div>
     `);
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/url-color-swatch.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/url-color-swatch.js
index b36d166..051a3636e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/url-color-swatch.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/url-color-swatch.js
@@ -16,10 +16,6 @@
           border-color: var(--blue);
       }
       </style>
-      <p>
-      Tests that url(...) with space-delimited color names as filename segments do not contain color swatches. Bug <a href="http://bugs.webkit.org/show_bug.cgi?id=106770">106770</a>.
-      Also tests that CSS variables such as var(--blue) do not contain color swatches. Bug <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=595231">595231</a>.
-      </p>
       <div id="inspected"></div>
     `);
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/url-multiple-collapsing.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/url-multiple-collapsing.js
index 44484601..0874b3b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/url-multiple-collapsing.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/styles/url-multiple-collapsing.js
@@ -13,9 +13,6 @@
           color: red;
       }
       </style>
-      <p>
-      Tests that multiple URLs which are long are not squashed into a single URL. Bug <a href="http://crbug.com/590172">590172</a>.
-      </p>
       <div id="inspected"></div>
     `);
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/jump-to-previous-editing-location.js b/third_party/WebKit/LayoutTests/http/tests/devtools/jump-to-previous-editing-location.js
index 6e63ddd..4d8ab00 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/jump-to-previous-editing-location.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/jump-to-previous-editing-location.js
@@ -8,7 +8,6 @@
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
   await TestRunner.addScriptTag('resources/example-fileset-for-test.js');
-  await TestRunner.addScriptTag('resources/editor-test.js');
   await TestRunner.addScriptTag('resources/jump-text.js');
 
   var panel = UI.panels.sources;
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network-preflight-options.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network-preflight-options.js
index 1e600aba..acbc4ab 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network-preflight-options.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network-preflight-options.js
@@ -4,9 +4,7 @@
 
 (async function() {
   TestRunner.addResult(`Tests that preflight OPTIONS requests appear in Network resources\n`);
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=63712">Bug 63712</a>
-    `);
+
   await TestRunner.evaluateInPagePromise(`
       function sendXHR(url, forcePreflight, async, callback)
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/cached-resource-destroyed-moved-to-storage.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/cached-resource-destroyed-moved-to-storage.js
index 6415f26..cafc47ed 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/cached-resource-destroyed-moved-to-storage.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/cached-resource-destroyed-moved-to-storage.js
@@ -11,11 +11,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('network');
 
-  await TestRunner.loadHTML(`
-    <p>Tests content is moved from cached resource to resource agent&apos;s data storage when cached resource is destroyed.</p>
-    <a href="https://bugs.webkit.org/show_bug.cgi?id=92108">Bug 92108</a>
-  `);
-
   await TestRunner.evaluateInPagePromise(`
     var image;;
     function loadFirstImage() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/cached-resource-destroyed-too-big-discarded.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/cached-resource-destroyed-too-big-discarded.js
index d90abc7f..a02879f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/cached-resource-destroyed-too-big-discarded.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/cached-resource-destroyed-too-big-discarded.js
@@ -11,11 +11,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('network');
 
-  await TestRunner.loadHTML(`
-    <p>Tests cached resource content is discarded when cached resource is destroyed if content size is too big for the resource agent&apos;s data storage.</p>
-    <a href="https://bugs.webkit.org/show_bug.cgi?id=92108">Bug 92108</a>
-  `);
-
   await TestRunner.evaluateInPagePromise(`
     var image;;
     function loadFirstImage()
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-disabling-check-no-memory-leak.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-disabling-check-no-memory-leak.js
index b4a30dc..1d72bfc 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-disabling-check-no-memory-leak.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-disabling-check-no-memory-leak.js
@@ -7,12 +7,6 @@
       `Tests that after disabling network domain, content saved on backend is removed. https://bugs.webkit.org/show_bug.cgi?id=67995`);
   await TestRunner.loadModule('network_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      <p>
-       Tests that after disabling network domain, content saved on backend is removed.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=67995">Bug 67995</a>
-      </p>
-    `);
 
   NetworkTestRunner.recordNetwork();
   NetworkTestRunner.makeSimpleXHR('GET', 'resources/resource.php', true, step2);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-empty-xhr.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-empty-xhr.js
index da12a38e..a28c981 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-empty-xhr.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-empty-xhr.js
@@ -7,10 +7,6 @@
       `Tests empty xhr content is correctly loaded in inspector. https://bugs.webkit.org/show_bug.cgi?id=79026`);
   await TestRunner.loadModule('network_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      <p> Tests empty xhr content is correctly loaded in inspector.</p>
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=79026">Bug 79026</a>
-    `);
 
   function dumpRequest(request, callback) {
     if (!request)
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-initiator-from-console.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-initiator-from-console.js
index c62fdb7..12b9361 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-initiator-from-console.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-initiator-from-console.js
@@ -6,9 +6,6 @@
   TestRunner.addResult(`Tests that there is no javascript error when console evaluation causes resource loading.\n`);
   await TestRunner.loadModule('network_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=65466">Bug 65466</a>
-    `);
 
   TestRunner.reloadPage(step1);
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-recording-after-reload-with-screenshots-enabled.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-recording-after-reload-with-screenshots-enabled.js
index 3ae0e06..9810919 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-recording-after-reload-with-screenshots-enabled.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-recording-after-reload-with-screenshots-enabled.js
@@ -8,10 +8,6 @@
   await TestRunner.showPanel('network');
   await TestRunner.loadHTML(`
       <p id="test"></p>
-       <p>
-       Tests if page keeps recording after refresh with Screenshot enabled.
-      <a>Bug 569557</a>
-      </p>
     `);
 
   UI.panels.network._networkRecordFilmStripSetting.set(true);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-request-revision-content.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-request-revision-content.js
index eff6e0ab..280d0c62 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-request-revision-content.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-request-revision-content.js
@@ -7,10 +7,6 @@
       `Tests how revision requests content if original content was not loaded yet. https://bugs.webkit.org/show_bug.cgi?id=63631\n`);
   await TestRunner.loadModule('network_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      <p>Tests how revision requests content if original content was not loaded yet.</p>
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=63631">Bug 63631</a>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function loadStylesheet()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-async-double.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-async-double.js
index aa5ee96..80b2573 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-async-double.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-async-double.js
@@ -7,10 +7,6 @@
   await TestRunner.loadModule('network_test_runner');
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      Tests responses in network tab for two XHRs sent without any delay between them.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=91630">Bug 91630</a>
-    `);
 
   function initArgs(method, url, async, payload) {
     var args = {};
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-async.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-async.js
index 20b7c1ac..c014639 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-async.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-async.js
@@ -6,12 +6,6 @@
   TestRunner.addResult(`Tests XHR network resource type and content for asynchronous requests. Bug 61205\n`);
   await TestRunner.loadModule('network_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      <p>
-       Tests XHR network resource type and content for asynchronous requests.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=61205">Bug 61205</a>
-      </p>
-    `);
 
   NetworkTestRunner.recordNetwork();
   NetworkTestRunner.makeSimpleXHR('GET', 'resources/resource.php', true, step2);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-replay.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-replay.js
index e5a5433..acd6cf6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-replay.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-replay.js
@@ -6,10 +6,6 @@
   TestRunner.addResult(`Tests XHR replaying. Bug 95187\n`);
   await TestRunner.loadModule('network_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      Tests XHR replaying.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=95187">Bug 95187</a>
-    `);
 
   function lastRequest() {
     return NetworkTestRunner.networkRequests().pop();
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-same-url-as-main-resource-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-same-url-as-main-resource-expected.txt
index d670ad4..c45a9b7 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-same-url-as-main-resource-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-same-url-as-main-resource-expected.txt
@@ -1,6 +1,6 @@
 Tests that XHRs with the same url as a main resource have correct category.
 
 xhr
-network-xhr-same-url…main-resource.js:19 iframe loaded
+network-xhr-same-url…main-resource.js:17 iframe loaded
 VM:5 XHR loaded: 1
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-same-url-as-main-resource.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-same-url-as-main-resource.js
index caea1a9e..35ba77c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-same-url-as-main-resource.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-same-url-as-main-resource.js
@@ -7,9 +7,7 @@
   await TestRunner.loadModule('network_test_runner');
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=68648">Bug 68648</a>
-    `);
+
   await TestRunner.evaluateInPagePromise(`
       function loadIframe()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-sync.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-sync.js
index 39d9f92..f589087 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-sync.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/network-xhr-sync.js
@@ -6,12 +6,6 @@
   TestRunner.addResult(`Tests XHR network resource type and content for synchronous requests. Bug 61205\n`);
   await TestRunner.loadModule('network_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      <p>
-       Tests XHR network resource type and content for synchronous requests.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=61205">Bug 61205</a>
-      </p>
-    `);
 
   NetworkTestRunner.recordNetwork();
   NetworkTestRunner.makeSimpleXHR('GET', 'resources/resource.php', false, step2);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/request-name-path.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/request-name-path.js
index c41b9e1..085b0b63 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/request-name-path.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/request-name-path.js
@@ -5,9 +5,6 @@
 (async function() {
   TestRunner.addResult(`Tests name() and path() methods of NetworkRequest.\n`);
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=101064">Bug 101064</a>
-    `);
 
   /**
      * @param {string} url
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/request-parameters-decoding.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/request-parameters-decoding.js
index 1eb83e63..c793a91 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/request-parameters-decoding.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/request-parameters-decoding.js
@@ -6,9 +6,7 @@
   TestRunner.addResult(`Tests how request headers are decoded in network item view.\n`);
   await TestRunner.loadModule('network_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=61205">Bug 74422</a>
-    `);
+
 
   var value = 'Test+%21%40%23%24%25%5E%26*%28%29_%2B+parameters.';
   var parameterElement = Network.RequestHeadersView.prototype._formatParameter(value, '', true);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-long-url-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-long-url-expected.txt
index d3d49dd2..e5ffa3f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-long-url-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-long-url-expected.txt
@@ -1,6 +1,6 @@
 Tests that long URLs are correctly trimmed in anchor links.
 
-script-as-text-loading-long-url.js:17 GET http://127.0.0.1:8000/inspector/network/resources/script-as-text-with-a-ver…y-very-very-very-very-very-very-very-very-very-very-very-very-long-url.php 404 (Not Found)
-loadScript @ script-as-text-loading-long-url.js:17
-(anonymous) @ script-as-text-loading-long-url.js:22
+script-as-text-loading-long-url.js:14 GET http://127.0.0.1:8000/inspector/network/resources/script-as-text-with-a-ver…y-very-very-very-very-very-very-very-very-very-very-very-very-long-url.php 404 (Not Found)
+loadScript @ script-as-text-loading-long-url.js:14
+(anonymous) @ script-as-text-loading-long-url.js:19
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-long-url.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-long-url.js
index 1ab7e68..9b95333 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-long-url.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-long-url.js
@@ -6,9 +6,6 @@
   TestRunner.addResult(`Tests that long URLs are correctly trimmed in anchor links.\n`);
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=100095">Bug 100095</a>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function loadScript()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-with-caret-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-with-caret-expected.txt
index ef1965a..6490efe 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-with-caret-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-with-caret-expected.txt
@@ -1,6 +1,6 @@
 Tests console message when script is loaded with incorrect text/html mime type and the URL contains the '^' character.
 
-script-as-text-loading-with-caret.js:20 GET http://127.0.0.1:8000/devtools/network/resources/this-is-a-weird?querystring=with^carats^like^these^because^who^doesnt^love^strange^characters^in^urls 404 (Not Found)
-loadScript @ script-as-text-loading-with-caret.js:20
-(anonymous) @ script-as-text-loading-with-caret.js:25
+script-as-text-loading-with-caret.js:15 GET http://127.0.0.1:8000/devtools/network/resources/this-is-a-weird?querystring=with^carats^like^these^because^who^doesnt^love^strange^characters^in^urls 404 (Not Found)
+loadScript @ script-as-text-loading-with-caret.js:15
+(anonymous) @ script-as-text-loading-with-caret.js:20
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-with-caret.js b/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-with-caret.js
index fca6392..7c207cd 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-with-caret.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/network/script-as-text-loading-with-caret.js
@@ -7,11 +7,6 @@
       `Tests console message when script is loaded with incorrect text/html mime type and the URL contains the '^' character.\n`);
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('network');
-  await TestRunner.loadHTML(`
-      <p>Tests console message when script is loaded with incorrect text/html mime
-      type and the URL contains the '^' character.</p>
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=103248">Bug 103248</a>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function loadScript()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/profiler/heap-snapshot-weak-dominator.js b/third_party/WebKit/LayoutTests/http/tests/devtools/profiler/heap-snapshot-weak-dominator.js
index 972b9cc..a45a5dc 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/profiler/heap-snapshot-weak-dominator.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/profiler/heap-snapshot-weak-dominator.js
@@ -7,9 +7,6 @@
       `Tests that weak references are ignored when dominators are calculated and that weak references won't affect object's retained size.\n`);
   await TestRunner.loadModule('heap_profiler_test_runner');
   await TestRunner.showPanel('heap_profiler');
-  await TestRunner.loadHTML(`
-      <pre></pre>
-    `);
 
   HeapProfilerTestRunner.runHeapSnapshotTestSuite([function testWeakReferencesDoNotAffectRetainedSize(next) {
     function createHeapSnapshot() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/accessibility-pane-test.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/accessibility-pane-test.js
deleted file mode 100644
index a86d5ab3..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/accessibility-pane-test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var initialize_AccessibilityTest = function() {
-    InspectorTest.preloadModule('accessibility_test_runner');
-};
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/coverage-test.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/coverage-test.js
deleted file mode 100644
index c6bc218..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/coverage-test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-function initialize_CoverageTests() {
-    InspectorTest.preloadModule("coverage_test_runner");
-}
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/datagrid-test.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/datagrid-test.js
deleted file mode 100644
index d4d4cb9..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/datagrid-test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-function initialize_DataGridTest() {
-    InspectorTest.preloadModule("data_grid_test_runner");
-}
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/device-mode-test.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/device-mode-test.js
deleted file mode 100644
index 0e3bc2d..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/device-mode-test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var initialize_DeviceMode = function() {
-    InspectorTest.preloadModule('device_mode_test_runner');
-}
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/edit-dom-test.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/edit-dom-test.js
deleted file mode 100644
index 00d7ddc8..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/edit-dom-test.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function initialize_EditDOMTests() {
-    InspectorTest.preloadModule("elements_test_runner");
-
-    // Preload codemirror which is used for "Edit as HTML".
-    InspectorTest.preloadModule("text_editor");
-}
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/editing-test-suite.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/editing-test-suite.js
deleted file mode 100644
index 92e4da7..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/editing-test-suite.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var initialize_SassEditingTest = function() {
-    TestRunner.loadModule('sass_test_runner');
-}
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/editor-test.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/editor-test.js
deleted file mode 100644
index 17c2c96..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/editor-test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-function initialize_EditorTests() {
-    InspectorTest.preloadModule("sources_test_runner");
-}
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/elements-panel-shadow-selection-on-refresh.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/elements-panel-shadow-selection-on-refresh.js
deleted file mode 100644
index 091b15f..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/elements-panel-shadow-selection-on-refresh.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var initialize_ElementPanelShadowSelection = function() {
-    InspectorTest.preloadModule("elements_test_runner");
-};
-
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/heap-snapshot-test.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/heap-snapshot-test.js
deleted file mode 100644
index 1c1d5c1..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/heap-snapshot-test.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var initialize_HeapSnapshotTest = function() {
-    InspectorTest.preloadModule("heap_snapshot_test_runner");
-    InspectorTest.preloadPanel("heap_profiler");
-};
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/profiler-test.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/profiler-test.js
deleted file mode 100644
index 3622292..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/profiler-test.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var initialize_ProfilerTest = function() {
-    InspectorTest.preloadModule("profiler_test_runner");
-    InspectorTest.preloadPanel("js_profiler");
-};
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/sass-test.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/sass-test.js
deleted file mode 100644
index 63d632c..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/sass-test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var initialize_SassTest = function() {
-    InspectorTest.preloadModule("sass_test_runner");
-}
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/set-outer-html-test.js b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/set-outer-html-test.js
deleted file mode 100644
index 53fd14b0..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/set-outer-html-test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var initialize_SetOuterHTMLTest = function() {
-    InspectorTest.preloadModule("elements_test_runner");
-};
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/runtime/runtime-localStorage-getProperties.js b/third_party/WebKit/LayoutTests/http/tests/devtools/runtime/runtime-localStorage-getProperties.js
index a97524ec..4cee5a5 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/runtime/runtime-localStorage-getProperties.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/runtime/runtime-localStorage-getProperties.js
@@ -4,11 +4,6 @@
 
 (async function() {
   TestRunner.addResult(`Tests RemoteObject.getProperties on localStorage object. 66215\n`);
-  await TestRunner.loadHTML(`
-      <p>
-      Tests RemoteObject.getProperties on localStorage object. <a href="https://bugs.webkit.org/show_bug.cgi?id=66215">66215</a>
-      </p>
-    `);
   await TestRunner.evaluateInPagePromise(`
       localStorage.testProperty = "testPropertyValue";
   `);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/search/sources-search-scope-in-files-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/search/sources-search-scope-in-files-expected.txt
index 80041281..af5c522f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/search/sources-search-scope-in-files-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/search/sources-search-scope-in-files-expected.txt
@@ -1,6 +1,6 @@
 Tests that ScriptSearchScope performs search across all sources correctly.
 
-Total uiSourceCodes: 8
+Total uiSourceCodes: 7
 
 Running: testIgnoreCase
 Search result #1: uiSourceCode.url = file:///var/www/search.css
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/search/sources-search-scope-in-files.js b/third_party/WebKit/LayoutTests/http/tests/devtools/search/sources-search-scope-in-files.js
index b0e4c4b..3b344096 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/search/sources-search-scope-in-files.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/search/sources-search-scope-in-files.js
@@ -7,9 +7,6 @@
   await TestRunner.loadModule('bindings_test_runner');
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      See <a href="https://bugs.webkit.org/show_bug.cgi?id=41350">bug 41350</a>.
-    `);
 
   function fileSystemUISourceCodes() {
     var uiSourceCodes = [];
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/autocomplete-general.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/autocomplete-general.js
index ac7a9f1..7cb20ad 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/autocomplete-general.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/autocomplete-general.js
@@ -8,7 +8,6 @@
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
   await TestRunner.addScriptTag('debugger/resources/edit-me.js');
-  await TestRunner.addScriptTag('../resources/editor-test.js');
 
   SourcesTestRunner.showScriptSource('edit-me.js', onSourceFrame);
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/autocomplete-hide-on-smart-brace.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/autocomplete-hide-on-smart-brace.js
index 71319e9..8978a40 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/autocomplete-hide-on-smart-brace.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/autocomplete-hide-on-smart-brace.js
@@ -7,7 +7,6 @@
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
   await TestRunner.addScriptTag('debugger/resources/edit-me.js');
-  await TestRunner.addScriptTag('../resources/editor-test.js');
 
   SourcesTestRunner.showScriptSource('edit-me.js', onSourceFrame);
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/compile-javascript.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/compile-javascript.js
index c80e0eb9..fd1ba69 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/compile-javascript.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/compile-javascript.js
@@ -6,7 +6,6 @@
   TestRunner.addResult(`Verifies proactive javascript compilation.\n`);
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.addScriptTag('../resources/editor-test.js');
   await TestRunner.addScriptTag('debugger/resources/edit-me.js');
 
   SourcesTestRunner.showScriptSource('edit-me.js', onSourceFrame);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-async/async-callstack-reload-no-crash.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-async/async-callstack-reload-no-crash.js
index c8765a2..a4a5553 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-async/async-callstack-reload-no-crash.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-async/async-callstack-reload-no-crash.js
@@ -6,12 +6,6 @@
   TestRunner.addResult(`Tests that page reload with async stacks turned on does not crash. Bug 441223.\n`);
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that page reload with async stacks turned on does not crash.
-      <a href="https://code.google.com/p/chromium/issues/detail?id=441223">Bug 441223.</a>
-      </p>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function testFunction()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-breakpoints/debugger-breakpoints-not-activated-on-reload.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-breakpoints/debugger-breakpoints-not-activated-on-reload.js
index c9396b20..151c05ec 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-breakpoints/debugger-breakpoints-not-activated-on-reload.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-breakpoints/debugger-breakpoints-not-activated-on-reload.js
@@ -6,11 +6,6 @@
   TestRunner.addResult(`Tests that breakpoints are not activated on page reload.Bug 41461\n`);
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that breakpoints are not activated on page reload.<a href="https://bugs.webkit.org/show_bug.cgi?id=41461">Bug 41461</a>
-      </p>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function testFunction()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints-editing-dom-from-inspector.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints-editing-dom-from-inspector.js
index 8be7016..8bffe225 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints-editing-dom-from-inspector.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints-editing-dom-from-inspector.js
@@ -9,10 +9,6 @@
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
   await TestRunner.loadHTML(`
-      <p>
-      Tests that DOM debugger will not crash when editing DOM nodes from the Web Inspector. <a href="https://code.google.com/p/chromium/issues/detail?id=249655">Chromium bug 249655</a>
-      </p>
-
       <div id="rootElement" style="color: red">
       <div id="elementToRemove"></div>
       </div>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/debugger-eval-on-call-frame.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/debugger-eval-on-call-frame.js
index 3e38dffc..fc495b1 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/debugger-eval-on-call-frame.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/debugger-eval-on-call-frame.js
@@ -8,14 +8,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <p>
-      Test that evaluation in the context of top frame will see values
-      of its local variables, even if there are global variables with
-      same names. On success the test will print a = 2(value of the
-      local variable a). <a href="https://bugs.webkit.org/show_bug.cgi?id=47358">Bug 47358.</a>
-      </p>
-    `);
   await TestRunner.evaluateInPagePromise(`
       var a = 1;
       function testFunction()
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/debugger-no-nested-pause.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/debugger-no-nested-pause.js
index d8e039aa4..0a3f6e6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/debugger-no-nested-pause.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/debugger-no-nested-pause.js
@@ -8,11 +8,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that debugger will skip breakpoint hit when script execution is already paused. <a href="https://bugs.webkit.org/show_bug.cgi?id=41768">See bug</a>
-      </p>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function testFunction()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/eval-on-pause-blocked.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/eval-on-pause-blocked.js
index 4703f74..0e4ff88 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/eval-on-pause-blocked.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/eval-on-pause-blocked.js
@@ -8,12 +8,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <p>
-      Test that evaluation in the context of top frame will not be blocked by Content-Security-Policy.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=77203">Bug 77203.</a>
-      </p>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function testFunction()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/pause-on-elements-panel-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/pause-on-elements-panel-expected.txt
index bcb98be..1111b77 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/pause-on-elements-panel-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/pause-on-elements-panel-expected.txt
@@ -1,6 +1,6 @@
 Tests that debugger pause button works on Elements panel after a DOM node highlighting. Chromium bug 433366
 
 Call stack:
-    0) callback (pause-on-elements-panel.js:20)
+    0) callback (pause-on-elements-panel.js:17)
 PASS: Debugger paused.
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/pause-on-elements-panel.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/pause-on-elements-panel.js
index 842f29c..4eff6be 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/pause-on-elements-panel.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-pause/pause-on-elements-panel.js
@@ -10,9 +10,6 @@
   await TestRunner.showPanel('sources');
   await TestRunner.loadHTML(`
       <div id="test"></div>
-      <p>
-      Tests that debugger pause button works on Elements panel after a DOM node highlighting. <a href="https://code.google.com/p/chromium/issues/detail?id=433366">Chromium bug 433366</a>
-      </p>
     `);
   await TestRunner.evaluateInPagePromise(`
       function callback()
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-step/step-through-event-listeners-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-step/step-through-event-listeners-expected.txt
index 7cd1700..f0cc29e2 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-step/step-through-event-listeners-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-step/step-through-event-listeners-expected.txt
@@ -4,26 +4,26 @@
 Running: testClickBreakpoint
 Script execution paused.
 Call stack:
-    0) listener3 (step-through-event-listeners.js:27)
-    1) addListenerAndClick (step-through-event-listeners.js:38)
+    0) listener3 (step-through-event-listeners.js:22)
+    1) addListenerAndClick (step-through-event-listeners.js:33)
     2)  (:1)
 Script execution resumed.
 Script execution paused.
 Call stack:
-    0) listener1 (step-through-event-listeners.js:19)
-    1) addListenerAndClick (step-through-event-listeners.js:38)
+    0) listener1 (step-through-event-listeners.js:14)
+    1) addListenerAndClick (step-through-event-listeners.js:33)
     2)  (:1)
 Script execution resumed.
 Script execution paused.
 Call stack:
-    0) listener2 (step-through-event-listeners.js:23)
-    1) addListenerAndClick (step-through-event-listeners.js:38)
+    0) listener2 (step-through-event-listeners.js:18)
+    1) addListenerAndClick (step-through-event-listeners.js:33)
     2)  (:1)
 Script execution resumed.
 Script execution paused.
 Call stack:
-    0) listener3 (step-through-event-listeners.js:27)
-    1) addListenerAndClick (step-through-event-listeners.js:38)
+    0) listener3 (step-through-event-listeners.js:22)
+    1) addListenerAndClick (step-through-event-listeners.js:33)
     2)  (:1)
 Script execution resumed.
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-step/step-through-event-listeners.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-step/step-through-event-listeners.js
index a2d63f9..474755f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-step/step-through-event-listeners.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-step/step-through-event-listeners.js
@@ -8,11 +8,6 @@
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
   await TestRunner.loadHTML(`
-      <p>
-      Test that debugger will pause in all event listeners when corresponding breakpoint is set.
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=77331">Bug 77331.</a>
-      </p>
-
       <input type="button" id="test">
     `);
   await TestRunner.evaluateInPagePromise(`
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/callstack-placards-discarded.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/callstack-placards-discarded.js
index 890c6f2..d5a3864 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/callstack-placards-discarded.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/callstack-placards-discarded.js
@@ -6,11 +6,6 @@
   TestRunner.addResult(`Tests that RawSourceCode listeners count won't grow on each script pause. Bug 70996\n`);
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that RawSourceCode listeners count won't grow on each script pause. <a href="https://bugs.webkit.org/show_bug.cgi?id=70996">Bug 70996</a>
-      </p>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function testFunction()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/debugger-expand-scope.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/debugger-expand-scope.js
index f25d262e94..c81b19d8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/debugger-expand-scope.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/debugger-expand-scope.js
@@ -9,10 +9,6 @@
   await TestRunner.showPanel('sources');
   await TestRunner.loadHTML(`
       <input type="button" onclick="testFunction()" value="Test">
-      <p>
-      Test that sections representing scopes of the current call frame are expandable
-      and contain correct data.
-      </p>
     `);
   await TestRunner.evaluateInPagePromise(`
       function makeClosure(n)
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-details-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-details-expected.txt
index 888788ce..5566289 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-details-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-details-expected.txt
@@ -4,7 +4,7 @@
 Running: testGetFirstLineFunctionDetails
 firstLineFunction type = function
 Function details: 
-lineNumber: 14
+lineNumber: 9
 columnNumber: 34
 scriptId is valid: true
 functionName: firstLineFunction
@@ -13,7 +13,7 @@
 Running: testGetNonFirstLineFunctionDetails
 notFirstLineFunction type = function
 Function details: 
-lineNumber: 19
+lineNumber: 14
 columnNumber: 37
 scriptId is valid: true
 functionName: notFirstLineFunction
@@ -22,7 +22,7 @@
 Running: testGetDetailsOfFunctionWithInferredName
 obj.m type = function
 Function details: 
-lineNumber: 25
+lineNumber: 20
 columnNumber: 23
 scriptId is valid: true
 functionName: m
@@ -31,7 +31,7 @@
 Running: testGetDetailsOfFunctionWithDisplayName
 functionWithDisplayName type = function
 Function details: 
-lineNumber: 28
+lineNumber: 23
 columnNumber: 40
 scriptId is valid: true
 functionName: user-friendly name
@@ -40,7 +40,7 @@
 Running: testGetDetailsOfFunctionWithDisplayNameGetter
 functionWithDisplayNameGetter type = function
 Function details: 
-lineNumber: 31
+lineNumber: 26
 columnNumber: 46
 scriptId is valid: true
 functionName: functionWithDisplayNameGetter
@@ -49,7 +49,7 @@
 Running: testSmallClosure
 smallClosure type = function
 Function details: 
-lineNumber: 34
+lineNumber: 29
 columnNumber: 57
 scriptId is valid: true
 functionName: 
@@ -59,7 +59,7 @@
 Running: testBigClosure
 bigClosure type = function
 Function details: 
-lineNumber: 47
+lineNumber: 42
 columnNumber: 35
 scriptId is valid: true
 functionName: 
@@ -71,7 +71,7 @@
 Running: testGenFunction
 gen type = function
 Function details: 
-lineNumber: 54
+lineNumber: 49
 columnNumber: 21
 scriptId is valid: true
 functionName: gen
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-details.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-details.js
index d7e5727f..3d8998dd 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-details.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-details.js
@@ -6,11 +6,6 @@
   TestRunner.addResult(`Tests that Debugger.getFunctionDetails command returns correct location. Bug 71808\n`);
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-        <p>Tests that Debugger.getFunctionDetails command returns correct location.
-        <a href="https://bugs.webkit.org/show_bug.cgi?id=71808">Bug 71808</a>
-        </p>
-      `);
   await TestRunner.evaluateInPagePromise(`
         function firstLineFunction()
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-display-name-call-stack-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-display-name-call-stack-expected.txt
index b1f6a3a..9f190c8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-display-name-call-stack-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-display-name-call-stack-expected.txt
@@ -3,13 +3,13 @@
 Set timer for test function.
 Script execution paused.
 Call stack:
-    0) my.framework.foo (function-display-name-call-stack.js:19)
-    1) my.framework.bar (function-display-name-call-stack.js:24)
-    2) func3 (function-display-name-call-stack.js:29)
-    3) func4 (function-display-name-call-stack.js:32)
-    4) func5 (function-display-name-call-stack.js:35)
-    5) func6 (function-display-name-call-stack.js:39)
-    6) <anonymous_inside_testFunction> (function-display-name-call-stack.js:46)
-    7) <InspectorTest::testFunction> (function-display-name-call-stack.js:47)
+    0) my.framework.foo (function-display-name-call-stack.js:14)
+    1) my.framework.bar (function-display-name-call-stack.js:19)
+    2) func3 (function-display-name-call-stack.js:24)
+    3) func4 (function-display-name-call-stack.js:27)
+    4) func5 (function-display-name-call-stack.js:30)
+    5) func6 (function-display-name-call-stack.js:34)
+    6) <anonymous_inside_testFunction> (function-display-name-call-stack.js:41)
+    7) <InspectorTest::testFunction> (function-display-name-call-stack.js:42)
 Script execution resumed.
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-display-name-call-stack.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-display-name-call-stack.js
index c725b7a1..a8298084 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-display-name-call-stack.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/function-display-name-call-stack.js
@@ -6,11 +6,6 @@
   TestRunner.addResult(`Tests that we display function's "displayName" property in the call stack. CrBug 17356\n`);
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <p>Tests that we display function's &quot;displayName&quot; property in the call stack.
-      <a href="http://code.google.com/p/chromium/issues/detail?id=17356">CrBug 17356</a>
-      </p>
-    `);
   await TestRunner.evaluateInPagePromise(`
       var error = false;
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/reveal-execution-line.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/reveal-execution-line.js
index b1aca59..b142c35e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/reveal-execution-line.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/reveal-execution-line.js
@@ -6,9 +6,6 @@
   TestRunner.addResult(`Tests that execution line is revealed and highlighted when debugger is paused.\n`);
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=80306">Bug 80306</a>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function testFunction()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/selected-call-frame-after-formatting-source.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/selected-call-frame-after-formatting-source.js
index 60f9f6e..e691e0a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/selected-call-frame-after-formatting-source.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/selected-call-frame-after-formatting-source.js
@@ -7,9 +7,6 @@
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=70906">Bug 70906</a>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function testFunction()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/watch-expressions-preserve-expansion.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/watch-expressions-preserve-expansion.js
index e9f576e..90f65a792 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/watch-expressions-preserve-expansion.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger-ui/watch-expressions-preserve-expansion.js
@@ -8,9 +8,6 @@
   await TestRunner.loadModule('elements_test_runner');
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=99304">Bug 99304</a>
-    `);
   await TestRunner.evaluateInPagePromise(`
       var globalObject = {
           foo: {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-compile-and-run.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-compile-and-run.js
index 546baf1..b7a4959 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-compile-and-run.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-compile-and-run.js
@@ -6,9 +6,6 @@
   TestRunner.addResult(`Tests separate compilation and run.\n`);
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=89646">Bug 89646.</a>
-    `);
 
   function printExceptionDetails(exceptionDetails) {
     TestRunner.addResult('exceptionDetails:');
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-cyclic-reference.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-cyclic-reference.js
index 72a3bd2..440b1f8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-cyclic-reference.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-cyclic-reference.js
@@ -7,12 +7,6 @@
       `Tests that debugging a page where Object prototype has a cyclic reference won't crash the browser.Bug 43558\n`);
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that debugging a page where Object prototype has a cyclic reference won't
-      crash the browser.<a href="https://bugs.webkit.org/show_bug.cgi?id=43558">Bug 43558</a>
-      </p>
-    `);
   await TestRunner.evaluateInPagePromise(`
       Object.prototype.cyclicRef = Object.prototype;
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-proto-property.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-proto-property.js
index 24ddef8..304c61c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-proto-property.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/debugger-proto-property.js
@@ -7,12 +7,6 @@
       `Tests that object's __proto__ property is present in object properties section when script is paused on a breakpoint.Bug 41214\n`);
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that object's __proto__ property is present in object properties section when
-      script is paused on a breakpoint.<a href="https://bugs.webkit.org/show_bug.cgi?id=41214">Bug 41214</a>
-      </p>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function C()
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/dynamic-scripts.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/dynamic-scripts.js
index b0543e1..8d74143 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/dynamic-scripts.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/dynamic-scripts.js
@@ -8,10 +8,6 @@
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=99324">Bug 99324</a>
-    `);
   await TestRunner.evaluateInPagePromise(`
       function appendDynamicScriptElement(src, content)
       {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/live-edit-breakpoints.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/live-edit-breakpoints.js
index b706e2c..e492c06 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/live-edit-breakpoints.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/live-edit-breakpoints.js
@@ -7,9 +7,6 @@
       `Tests breakpoints are correctly dimmed and restored in JavaScriptSourceFrame during live edit.\n`);
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=99598">Bug 99598</a>
-    `);
   await TestRunner.addScriptTag('resources/edit-me-breakpoints.js');
 
   function pathToFileName(path) {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/mutation-observer-suspend-while-paused.js b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/mutation-observer-suspend-while-paused.js
index 8487de2..56a791d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/mutation-observer-suspend-while-paused.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/sources/debugger/mutation-observer-suspend-while-paused.js
@@ -8,11 +8,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('sources');
-  await TestRunner.loadHTML(`
-      <p>
-      Tests that DOM Mutation Observers do not attempt to deliver mutation records while the debugger is paused.<a href="https://bugs.webkit.org/show_bug.cgi?id=105810">Bug 105810</a>
-      </p>
-    `);
 
   var setup = 'window.testDiv = document.createElement(\'div\');\n' +
       'window.deliveryCount = 0;\n' +
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-editors-history.js b/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-editors-history.js
index 3c9eaf70..2a22274 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-editors-history.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-editors-history.js
@@ -5,10 +5,6 @@
 (async function() {
   TestRunner.addResult(`Tests history saving logic in TabbedEditorContainer.\n`);
   await TestRunner.loadModule('sources_test_runner');
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=76912">Bug 76912</a>
-    `);
-
 
   function dumpHistory(history) {
     TestRunner.addResult('  history = ' + JSON.stringify(history._serializeToObject()) + '');
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-pane-max-tab-width-calculation.js b/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-pane-max-tab-width-calculation.js
index db13ecb..16ea698 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-pane-max-tab-width-calculation.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-pane-max-tab-width-calculation.js
@@ -4,9 +4,6 @@
 
 (async function() {
   TestRunner.addResult(`Tests tabbed pane max tab element width calculation.\n`);
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=75005">Bug 75005</a>
-    `);
 
   function calculateAndDumpMaxWidth(measuredWidths, totalWidth) {
     var maxWidth = UI.TabbedPane.prototype._calculateMaxWidth(measuredWidths, totalWidth);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-pane-tabs-to-show.js b/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-pane-tabs-to-show.js
index 8288e3e8..1dabe30c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-pane-tabs-to-show.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/tabbed-pane-tabs-to-show.js
@@ -4,9 +4,6 @@
 
 (async function() {
   TestRunner.addResult(`Tests tabbed pane tabs to show calculation.\n`);
-  await TestRunner.loadHTML(`
-      <a href="https://bugs.webkit.org/show_bug.cgi?id=75085">Bug 75085</a>
-    `);
 
   function createFakeTab(title, width) {
     function toString() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/template-content-inspect-crash.js b/third_party/WebKit/LayoutTests/http/tests/devtools/template-content-inspect-crash.js
index d0192dd..b34dcb9 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/template-content-inspect-crash.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/template-content-inspect-crash.js
@@ -8,7 +8,7 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
-      <p id="description">This test verifies that template's content DocumentFragment is  accessible from DevTools.</p>
+      <p id="description"></p>
 
       <template id="tpl">
           <div>Hello!</div>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/resources/empty.js b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/resources/empty.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/resources/empty.js
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/resources/timeline-data.js b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/resources/timeline-data.js
deleted file mode 100644
index 116119a..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/resources/timeline-data.js
+++ /dev/null
@@ -1,460 +0,0 @@
-var initialize_TimelineData = function() {
-
-InspectorTest.timelineData = function()
-{
-    return JSON.stringify([{"args":{"number":32},"cat":"__metadata","name":"num_cpus","ph":"M","pid":3840,"tid":0,"ts":0},
-        {"args":{"sort_index":-5},"cat":"__metadata","name":"process_sort_index","ph":"M","pid":3840,"tid":12,"ts":0},
-        {"args":{"name":"Renderer"},"cat":"__metadata","name":"process_name","ph":"M","pid":3840,"tid":12,"ts":0},
-        {"args":{"sort_index":-1},"cat":"__metadata","name":"thread_sort_index","ph":"M","pid":3840,"tid":11,"ts":0},
-        {"args":{"sessionId":"9.4"},"cat":"disabled-by-default-devtools.timeline","name":"TracingStartedInPage","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673092068,"tts":170409},
-        {"args":{"layerTreeId":1,"sessionId":"9.4"},"cat":"disabled-by-default-devtools.timeline","name":"SetLayerTreeId","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673092082,"tts":170421},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673092095,"tts":170434},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673107791,"tts":170482},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673107799,"tts":170490},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":438}},"cat":"disabled-by-default-devtools.timeline","dur":65,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":64,"tid":9,"ts":1122673107821,"tts":170511},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":27,"name":"FunctionCall","ph":"X","pid":3834,"tdur":26,"tid":9,"ts":1122673107849,"tts":170539},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":439}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673107869,"tts":170559},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2688936,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673107883,"tts":170573},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673107891,"tts":170581},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673107921,"tts":170612},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673107934,"tts":170624},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673107941,"tts":170631},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673126470,"tts":170708},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673126480,"tts":170717},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":439}},"cat":"disabled-by-default-devtools.timeline","dur":108,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":107,"tid":9,"ts":1122673126522,"tts":170759},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":47,"name":"FunctionCall","ph":"X","pid":3834,"tdur":46,"tid":9,"ts":1122673126569,"tts":170806},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":440}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673126606,"tts":170843},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2688952,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673126627,"tts":170864},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673126637,"tts":170874},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673126683,"tts":170920},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673126699,"tts":170936},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673126708,"tts":170944},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673141177,"tts":171002},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673141186,"tts":171010},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":440}},"cat":"disabled-by-default-devtools.timeline","dur":110,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":109,"tid":9,"ts":1122673141212,"tts":171036},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":46,"name":"FunctionCall","ph":"X","pid":3834,"tdur":43,"tid":9,"ts":1122673141259,"tts":171084},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":441}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673141293,"tts":171117},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2688968,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673141318,"tts":171142},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673141329,"tts":171154},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673141379,"tts":171204},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673141406,"tts":171231},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673141421,"tts":171246},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673162929,"tts":171304},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673162938,"tts":171313},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":441}},"cat":"disabled-by-default-devtools.timeline","dur":98,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":97,"tid":9,"ts":1122673162975,"tts":171350},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":41,"name":"FunctionCall","ph":"X","pid":3834,"tdur":39,"tid":9,"ts":1122673163020,"tts":171395},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":442}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673163051,"tts":171426},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2688984,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673163070,"tts":171445},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673163081,"tts":171455},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673163119,"tts":171493},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673163133,"tts":171508},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673163141,"tts":171516},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673179592,"tts":171569},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673179600,"tts":171576},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":442}},"cat":"disabled-by-default-devtools.timeline","dur":77,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":76,"tid":9,"ts":1122673179625,"tts":171601},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":31,"name":"FunctionCall","ph":"X","pid":3834,"tdur":31,"tid":9,"ts":1122673179660,"tts":171635},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":443}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673179683,"tts":171659},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689000,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673179699,"tts":171675},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673179707,"tts":171682},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673179736,"tts":171711},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673179751,"tts":171727},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673179759,"tts":171735},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673196258,"tts":171788},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673196265,"tts":171794},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":443}},"cat":"disabled-by-default-devtools.timeline","dur":73,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":72,"tid":9,"ts":1122673196291,"tts":171820},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":30,"name":"FunctionCall","ph":"X","pid":3834,"tdur":29,"tid":9,"ts":1122673196323,"tts":171852},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":444}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673196346,"tts":171875},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689016,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673196361,"tts":171890},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673196370,"tts":171899},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673196402,"tts":171931},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673196417,"tts":171946},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673196425,"tts":171954},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673213043,"tts":172016},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122673107747,"tts":77989},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122673107777,"tts":78018},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122673126358,"tts":78708},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122673126413,"tts":78760},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122673141111,"tts":78880},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122673141133,"tts":78902},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122673162867,"tts":79126},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122673162886,"tts":79145},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122673179534,"tts":79253},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122673179551,"tts":79269},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673313423,"tts":174171},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673313452,"tts":174200},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673313467,"tts":174215},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673329958,"tts":174302},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673329971,"tts":174314},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":451}},"cat":"disabled-by-default-devtools.timeline","dur":98,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":96,"tid":9,"ts":1122673330000,"tts":174343},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":44,"name":"FunctionCall","ph":"X","pid":3834,"tdur":41,"tid":9,"ts":1122673330035,"tts":174379},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":452}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673330066,"tts":174409},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689144,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673330092,"tts":174435},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673330106,"tts":174450},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673330151,"tts":174495},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673330180,"tts":174523},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673330194,"tts":174538},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673346680,"tts":174624},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673346692,"tts":174635},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":452}},"cat":"disabled-by-default-devtools.timeline","dur":98,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":96,"tid":9,"ts":1122673346721,"tts":174664},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":43,"tid":9,"ts":1122673346756,"tts":174699},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":453}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673346787,"tts":174730},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689160,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673346813,"tts":174756},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673346827,"tts":174770},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673346871,"tts":174814},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673346900,"tts":174843},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673346914,"tts":174857},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673363348,"tts":174943},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673363361,"tts":174954},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":453}},"cat":"disabled-by-default-devtools.timeline","dur":98,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":95,"tid":9,"ts":1122673363390,"tts":174984},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122673363425,"tts":175019},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":454}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673363456,"tts":175050},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689176,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673363482,"tts":175075},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673363496,"tts":175090},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673363540,"tts":175134},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673363569,"tts":175163},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673363584,"tts":175177},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673380043,"tts":175286},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673380057,"tts":175299},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":454}},"cat":"disabled-by-default-devtools.timeline","dur":99,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":97,"tid":9,"ts":1122673380086,"tts":175328},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122673380122,"tts":175364},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":455}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673380153,"tts":175396},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689192,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673380179,"tts":175421},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673380194,"tts":175436},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673380238,"tts":175480},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673380266,"tts":175508},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673380281,"tts":175523},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673396686,"tts":175611},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673396699,"tts":175622},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":455}},"cat":"disabled-by-default-devtools.timeline","dur":99,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":96,"tid":9,"ts":1122673396735,"tts":175659},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":44,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122673396771,"tts":175694},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":456}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673396802,"tts":175725},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689208,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673396828,"tts":175751},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673396842,"tts":175765},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673396886,"tts":175810},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673396915,"tts":175838},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673396930,"tts":175853},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673413345,"tts":175940},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673413358,"tts":175952},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674113927,"tts":89784},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674113950,"tts":89806},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674130606,"tts":89979},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674130629,"tts":90001},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674147273,"tts":90157},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674147296,"tts":90179},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674163929,"tts":90337},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674163951,"tts":90358},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673747387,"tts":182445},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":476}},"cat":"disabled-by-default-devtools.timeline","dur":100,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":97,"tid":9,"ts":1122673747439,"tts":182498},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122673747475,"tts":182534},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":477}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673747507,"tts":182565},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689544,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673747532,"tts":182591},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673747547,"tts":182605},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673747592,"tts":182650},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673747621,"tts":182680},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673747636,"tts":182694},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673764047,"tts":182781},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673764060,"tts":182792},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":477}},"cat":"disabled-by-default-devtools.timeline","dur":99,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":97,"tid":9,"ts":1122673764089,"tts":182821},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122673764125,"tts":182858},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":478}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673764156,"tts":182889},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689560,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673764182,"tts":182914},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673764196,"tts":182929},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673764241,"tts":182973},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673764268,"tts":183001},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673764283,"tts":183015},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673780702,"tts":183103},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673780715,"tts":183114},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":478}},"cat":"disabled-by-default-devtools.timeline","dur":106,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":104,"tid":9,"ts":1122673780744,"tts":183143},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":44,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122673780787,"tts":183186},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":479}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673780818,"tts":183217},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689576,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673780844,"tts":183243},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673780858,"tts":183257},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673780902,"tts":183302},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673780932,"tts":183331},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673780946,"tts":183346},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673797374,"tts":183434},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673797387,"tts":183445},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":479}},"cat":"disabled-by-default-devtools.timeline","dur":106,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":104,"tid":9,"ts":1122673797416,"tts":183475},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122673797458,"tts":183517},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":480}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673797489,"tts":183548},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689592,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673797516,"tts":183575},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673797530,"tts":183589},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673797575,"tts":183633},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673797604,"tts":183662},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673797618,"tts":183677},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673814044,"tts":183764},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673814056,"tts":183776},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":480}},"cat":"disabled-by-default-devtools.timeline","dur":98,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":96,"tid":9,"ts":1122673814086,"tts":183805},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":43,"tid":9,"ts":1122673814121,"tts":183840},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":481}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673814153,"tts":183872},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689608,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673814178,"tts":183897},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673814193,"tts":183912},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673814237,"tts":183956},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673814265,"tts":183985},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673814280,"tts":183999},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673830696,"tts":184086},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673830709,"tts":184097},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":481}},"cat":"disabled-by-default-devtools.timeline","dur":99,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":97,"tid":9,"ts":1122673830738,"tts":184126},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122673830774,"tts":184163},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":482}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673830806,"tts":184194},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689624,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673830831,"tts":184219},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673830846,"tts":184234},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122673830890,"tts":184278},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122673830917,"tts":184305},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122673830932,"tts":184320},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122673847325,"tts":184405},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122673847337,"tts":184417},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674030729,"tts":188070},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":493}},"cat":"disabled-by-default-devtools.timeline","dur":98,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":96,"tid":9,"ts":1122674030758,"tts":188099},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":44,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122674030794,"tts":188135},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":494}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674030825,"tts":188166},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689816,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674030850,"tts":188191},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674030864,"tts":188205},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674030908,"tts":188249},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674030937,"tts":188278},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674030951,"tts":188292},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674047345,"tts":188381},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674047358,"tts":188393},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":494}},"cat":"disabled-by-default-devtools.timeline","dur":98,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":96,"tid":9,"ts":1122674047387,"tts":188422},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":43,"tid":9,"ts":1122674047422,"tts":188457},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":495}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674047453,"tts":188489},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689832,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674047479,"tts":188514},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674047493,"tts":188528},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674047538,"tts":188573},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674047566,"tts":188601},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674047580,"tts":188615},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674064041,"tts":188723},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674064054,"tts":188735},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":495}},"cat":"disabled-by-default-devtools.timeline","dur":114,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":112,"tid":9,"ts":1122674064084,"tts":188765},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":60,"name":"FunctionCall","ph":"X","pid":3834,"tdur":57,"tid":9,"ts":1122674064120,"tts":188801},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":496}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674064166,"tts":188847},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689848,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674064192,"tts":188873},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674064207,"tts":188888},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674064252,"tts":188933},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674064279,"tts":188960},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674064293,"tts":188974},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674080701,"tts":189063},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674080714,"tts":189075},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":496}},"cat":"disabled-by-default-devtools.timeline","dur":112,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":110,"tid":9,"ts":1122674080743,"tts":189104},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":46,"name":"FunctionCall","ph":"X","pid":3834,"tdur":44,"tid":9,"ts":1122674080791,"tts":189152},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":497}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674080823,"tts":189185},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689864,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674080849,"tts":189210},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674080864,"tts":189225},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674080908,"tts":189269},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674080936,"tts":189297},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674080950,"tts":189312},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674097365,"tts":189401},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674097378,"tts":189412},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":497}},"cat":"disabled-by-default-devtools.timeline","dur":97,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":95,"tid":9,"ts":1122674097407,"tts":189441},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":43,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122674097443,"tts":189477},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":498}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674097473,"tts":189507},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689880,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674097498,"tts":189532},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674097513,"tts":189547},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674097556,"tts":189591},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674097585,"tts":189619},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674097599,"tts":189634},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674114019,"tts":189724},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674114032,"tts":189735},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":498}},"cat":"disabled-by-default-devtools.timeline","dur":97,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":95,"tid":9,"ts":1122674114061,"tts":189765},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122674114096,"tts":189800},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":499}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674114127,"tts":189830},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689896,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674114153,"tts":189856},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674114167,"tts":189870},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674114211,"tts":189914},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674114239,"tts":189942},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674114253,"tts":189957},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674130694,"tts":190042},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674130707,"tts":190054},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":499}},"cat":"disabled-by-default-devtools.timeline","dur":98,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":95,"tid":9,"ts":1122674130736,"tts":190084},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":44,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122674130772,"tts":190119},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":500}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674130802,"tts":190150},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689912,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674130828,"tts":190175},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674130842,"tts":190189},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674130887,"tts":190234},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674130914,"tts":190262},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674130929,"tts":190276},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674147364,"tts":190365},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674147377,"tts":190376},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":500}},"cat":"disabled-by-default-devtools.timeline","dur":111,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":109,"tid":9,"ts":1122674147406,"tts":190406},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":47,"name":"FunctionCall","ph":"X","pid":3834,"tdur":44,"tid":9,"ts":1122674147452,"tts":190453},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":501}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674147486,"tts":190486},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689928,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674147511,"tts":190511},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674147526,"tts":190526},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674147570,"tts":190570},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674147598,"tts":190598},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674147613,"tts":190613},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674164055,"tts":190720},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674164068,"tts":190732},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":501}},"cat":"disabled-by-default-devtools.timeline","dur":113,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":111,"tid":9,"ts":1122674164097,"tts":190761},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":46,"name":"FunctionCall","ph":"X","pid":3834,"tdur":44,"tid":9,"ts":1122674164146,"tts":190810},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":502}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674164178,"tts":190842},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689944,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674164204,"tts":190868},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674164219,"tts":190883},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674164263,"tts":190927},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674164312,"tts":190976},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674164327,"tts":190991},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674180694,"tts":191071},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674180707,"tts":191083},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":502}},"cat":"disabled-by-default-devtools.timeline","dur":111,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":109,"tid":9,"ts":1122674180736,"tts":191112},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":46,"name":"FunctionCall","ph":"X","pid":3834,"tdur":43,"tid":9,"ts":1122674180783,"tts":191160},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":503}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674180816,"tts":191192},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689960,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674180841,"tts":191217},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674180855,"tts":191232},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674180899,"tts":191276},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674180928,"tts":191305},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674180943,"tts":191319},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674197354,"tts":191407},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674197367,"tts":191418},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":503}},"cat":"disabled-by-default-devtools.timeline","dur":98,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":96,"tid":9,"ts":1122674197396,"tts":191447},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122674197431,"tts":191483},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":504}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674197462,"tts":191514},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689976,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674197487,"tts":191539},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674197502,"tts":191553},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674197546,"tts":191598},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674197590,"tts":191642},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674197606,"tts":191657},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674214025,"tts":191747},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674214038,"tts":191759},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":504}},"cat":"disabled-by-default-devtools.timeline","dur":111,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":110,"tid":9,"ts":1122674214067,"tts":191788},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":43,"tid":9,"ts":1122674214115,"tts":191836},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":505}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674214147,"tts":191868},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2689992,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674214173,"tts":191894},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674214187,"tts":191908},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674214232,"tts":191953},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674214259,"tts":191981},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674214274,"tts":191995},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674230673,"tts":192083},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674230686,"tts":192095},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":505}},"cat":"disabled-by-default-devtools.timeline","dur":125,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":123,"tid":9,"ts":1122674230716,"tts":192124},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":48,"name":"FunctionCall","ph":"X","pid":3834,"tdur":46,"tid":9,"ts":1122674230775,"tts":192183},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":506}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674230809,"tts":192217},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2690008,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674230835,"tts":192243},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674230849,"tts":192258},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674230894,"tts":192303},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674230924,"tts":192332},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674230938,"tts":192347},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674247362,"tts":192436},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674247374,"tts":192447},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":506}},"cat":"disabled-by-default-devtools.timeline","dur":97,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":95,"tid":9,"ts":1122674247403,"tts":192476},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":43,"name":"FunctionCall","ph":"X","pid":3834,"tdur":41,"tid":9,"ts":1122674247439,"tts":192512},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":507}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674247469,"tts":192543},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2690024,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674247494,"tts":192567},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674247509,"tts":192582},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674247553,"tts":192626},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674247581,"tts":192655},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674247596,"tts":192669},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674264048,"tts":192774},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674264062,"tts":192786},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":507}},"cat":"disabled-by-default-devtools.timeline","dur":99,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":97,"tid":9,"ts":1122674264091,"tts":192815},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":45,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122674264127,"tts":192851},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":508}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674264158,"tts":192883},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2690040,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674264184,"tts":192908},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674264199,"tts":192923},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674264243,"tts":192967},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674264272,"tts":192996},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674264286,"tts":193010},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674280687,"tts":193099},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674180599,"tts":90536},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674180634,"tts":90570},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674197265,"tts":90728},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674197288,"tts":90750},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674213934,"tts":90908},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674213956,"tts":90929},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674230583,"tts":91100},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674230606,"tts":91122},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674247271,"tts":91300},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674247293,"tts":91321},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674263915,"tts":91477},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674263938,"tts":91499},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674280596,"tts":91655},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674280619,"tts":91677},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674297261,"tts":91831},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674297287,"tts":91856},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674313908,"tts":92015},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674313930,"tts":92036},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674330601,"tts":92208},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674330623,"tts":92230},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674347259,"tts":92385},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674347281,"tts":92407},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674363933,"tts":92564},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674363956,"tts":92586},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674380587,"tts":92742},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674380610,"tts":92764},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674397245,"tts":92919},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674397268,"tts":92940},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674413915,"tts":93111},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674413938,"tts":93133},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674430594,"tts":93290},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674430617,"tts":93312},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674447250,"tts":93468},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674447273,"tts":93490},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674463925,"tts":93617},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674463948,"tts":93639},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674480599,"tts":93799},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674480621,"tts":93820},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674497252,"tts":93974},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674497275,"tts":93996},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674513924,"tts":94167},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674513946,"tts":94189},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674530585,"tts":94357},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674530607,"tts":94379},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674547254,"tts":94537},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674547276,"tts":94558},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"BeginFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674563916,"tts":94716},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline.frame","name":"RequestMainThreadFrame","ph":"I","pid":3834,"s":"t","tid":17,"ts":1122674563954,"tts":94753},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674514204,"tts":198558},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674514232,"tts":198586},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674514246,"tts":198600},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674530672,"tts":198686},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674530685,"tts":198697},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":523}},"cat":"disabled-by-default-devtools.timeline","dur":97,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":95,"tid":9,"ts":1122674530714,"tts":198727},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":44,"name":"FunctionCall","ph":"X","pid":3834,"tdur":41,"tid":9,"ts":1122674530749,"tts":198762},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":524}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674530780,"tts":198792},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2693784,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674530805,"tts":198817},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674530820,"tts":198832},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674530864,"tts":198876},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674530892,"tts":198905},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674530907,"tts":198919},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674547345,"tts":199009},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674547358,"tts":199020},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":524}},"cat":"disabled-by-default-devtools.timeline","dur":98,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":95,"tid":9,"ts":1122674547387,"tts":199050},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":44,"name":"FunctionCall","ph":"X","pid":3834,"tdur":41,"tid":9,"ts":1122674547423,"tts":199086},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":525}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674547454,"tts":199116},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2693800,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674547479,"tts":199141},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674547493,"tts":199156},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674547538,"tts":199200},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674547566,"tts":199229},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674547581,"tts":199243},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":3834,"tid":9,"ts":1122674564053,"tts":199343},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"BeginMainThreadFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674564066,"tts":199355},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":525}},"cat":"disabled-by-default-devtools.timeline","dur":99,"name":"FireAnimationFrame","ph":"X","pid":3834,"tdur":97,"tid":9,"ts":1122674564096,"tts":199384},
-        {"args":{"data":{"frame":"0x1100e70a8000","scriptId":"29","scriptLine":2,"scriptName":"http://localhost/raf.html"}},"cat":"disabled-by-default-devtools.timeline","dur":44,"name":"FunctionCall","ph":"X","pid":3834,"tdur":42,"tid":9,"ts":1122674564132,"tts":199420},
-        {"args":{"data":{"frame":"0x1100e70a8000","id":526}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674564162,"tts":199451},
-        {"args":{"data":{"documents":1,"jsEventListeners":0,"jsHeapSizeUsed":2693816,"nodes":7}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674564188,"tts":199477},
-        {"args":{"frame":"0x1100e70a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3834,"s":"g","tid":9,"ts":1122674564203,"tts":199492},
-        {"args":{"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"B","pid":3834,"tid":9,"ts":1122674564248,"tts":199536},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"CompositeLayers","ph":"E","pid":3834,"tid":9,"ts":1122674564276,"tts":199565},
-        {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":3834,"tid":9,"ts":1122674564291,"tts":199579},
-        {"args":{"number":32},"cat":"__metadata","name":"num_cpus","ph":"M","pid":3834,"tid":0,"ts":0},
-        {"args":{"sort_index":-5},"cat":"__metadata","name":"process_sort_index","ph":"M","pid":3834,"tid":10,"ts":0},
-        {"args":{"name":"Renderer"},"cat":"__metadata","name":"process_name","ph":"M","pid":3834,"tid":10,"ts":0},
-        {"args":{"sort_index":-1},"cat":"__metadata","name":"thread_sort_index","ph":"M","pid":3834,"tid":9,"ts":0},
-        {"args":{"name":"CrRendererMain"},"cat":"__metadata","name":"thread_name","ph":"M","pid":3834,"tid":9,"ts":0},
-        {"args":{"name":"Compositor"},"cat":"__metadata","name":"thread_name","ph":"M","pid":3834,"tid":17,"ts":0},
-        {"args":{"elementCount":47},"cat":"disabled-by-default-devtools.timeline","name":"RecalculateStyles","ph":"E","pid":3872,"tid":26,"ts":1122673092850,"tts":827512},
-        {"args":{"beginData":{"dirtyObjects":44,"frame":"0x176b9c2a8000","partialLayout":false,"totalObjects":261}},"cat":"disabled-by-default-devtools.timeline","name":"Layout","ph":"B","pid":3872,"tid":26,"ts":1122673092873,"tts":827535},
-        {"args":{"endData":{"root":[0,0,1570,0,1570,1472,0,1472],"rootNode":2}},"cat":"disabled-by-default-devtools.timeline","name":"Layout","ph":"E","pid":3872,"tid":26,"ts":1122673093523,"tts":828186},
-        {"args":{"data":{"frame":"0x176b9c2a8000","id":12}},"cat":"disabled-by-default-devtools.timeline","dur":1828,"name":"FireAnimationFrame","ph":"X","pid":3872,"tdur":1827,"tid":26,"ts":1122673093558,"tts":828220},
-        {"args":{"data":{"frame":"0x176b9c2a8000","scriptId":"65","scriptLine":939,"scriptName":"chrome-devtools://devtools/bundled/ui/UIUtils.js"}},"cat":"disabled-by-default-devtools.timeline","dur":1770,"name":"FunctionCall","ph":"X","pid":3872,"tdur":1770,"tid":26,"ts":1122673093604,"tts":828265},
-        {"args":{"frame":"0x176b9c2a8000"},"cat":"disabled-by-default-devtools.timeline","name":"ScheduleStyleRecalculation","ph":"I","pid":3872,"s":"g","tid":26,"ts":1122673094798,"tts":829461},
-        {"args":{"frame":"0x176b9c2a8000"},"cat":"disabled-by-default-devtools.timeline","name":"RecalculateStyles","ph":"B","pid":3872,"tid":26,"ts":1122673094958,"tts":829620},
-        {"args":{"elementCount":1},"cat":"disabled-by-default-devtools.timeline","name":"RecalculateStyles","ph":"E","pid":3872,"tid":26,"ts":1122673094989,"tts":829651},
-        {"args":{"data":{"frame":"0x176b9c2a8000","id":13}},"cat":"disabled-by-default-devtools.timeline","name":"RequestAnimationFrame","ph":"I","pid":3872,"s":"g","tid":26,"ts":1122673095367,"tts":830030},
-        {"args":{"data":{"documents":1,"jsEventListeners":141,"jsHeapSizeUsed":15850696,"nodes":1705}},"cat":"disabled-by-default-devtools.timeline","name":"UpdateCounters","ph":"I","pid":3872,"s":"g","tid":26,"ts":1122673095384,"tts":830046},
-        {"args":{"frame":"0x176b9c2a8000"},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayerTree","ph":"I","pid":3872,"s":"g","tid":26,"ts":1122673095390,"tts":830052},
-        {"args":{"layerId":11,"layerTreeId":1},"cat":"disabled-by-default-devtools.timeline","name":"UpdateLayer","ph":"B","pid":3872,"tid":26,"ts":1122673095845,"tts":830507},
-        {"args":{"data":{"clip":[-15,-15,1585,-15,1585,1487,-15,1487],"frame":"0x176b9c2a8000","layerId":11,"nodeId":2}},"cat":"disabled-by-default-devtools.timeline","dur":4637,"name":"Paint","ph":"X","pid":3872,"tdur":4630,"tid":26,"ts":1122673095897,"tts":830559},
-        {"args":{"name":"Browser"},"cat":"__metadata","name":"process_name","ph":"M","pid":3778,"tid":3801,"ts":0},
-        {"args":{"name":"CrBrowserMain"},"cat":"__metadata","name":"thread_name","ph":"M","pid":3778,"tid":3778,"ts":0}]);
-}
-}
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-js/timeline-js-line-level-profile-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-js/timeline-js-line-level-profile-expected.txt
index a4ae8e22..792f507b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-js/timeline-js-line-level-profile-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-js/timeline-js-line-level-profile-expected.txt
@@ -1,6 +1,6 @@
 Tests that a line-level CPU profile is shown in the text editor.
 
-.../devtools/tracing/resources/timeline-data.js
+.../devtools/tracing/resources/empty.js
 99 CodeMirror-gutter-performance 10.0 ms rgba(255, 187, 0, 0.263)
 101 CodeMirror-gutter-performance 1900.0 ms rgba(255, 187, 0, 0.718)
 0 CodeMirror-gutter-performance 100.0 ms rgba(255, 187, 0, 0.463)
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-js/timeline-js-line-level-profile.js b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-js/timeline-js-line-level-profile.js
index 794daa09..eb6c670 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-js/timeline-js-line-level-profile.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-js/timeline-js-line-level-profile.js
@@ -7,7 +7,7 @@
   await TestRunner.loadModule('sources_test_runner');
   await TestRunner.showPanel('timeline');
   await TestRunner.showPanel('sources');
-  await TestRunner.addScriptTag('../resources/timeline-data.js');
+  await TestRunner.addScriptTag('../resources/empty.js');
 
   var cpuProfile = {
     startTime: 10e6,
@@ -38,7 +38,7 @@
   };
 
   TestRunner.addSniffer(SourceFrame.SourcesTextEditor.prototype, 'setGutterDecoration', decorationAdded, true);
-  SourcesTestRunner.showScriptSource('timeline-data.js', frameRevealed);
+  SourcesTestRunner.showScriptSource('empty.js', frameRevealed);
 
   function decorationAdded(line, type, element) {
     TestRunner.addResult(`${line} ${type} ${element.textContent} ${element.style.backgroundColor}`);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-flame-chart-automatically-size-window.js b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-flame-chart-automatically-size-window.js
index e60d0ef..1a94a19 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-flame-chart-automatically-size-window.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-flame-chart-automatically-size-window.js
@@ -7,7 +7,6 @@
   await TestRunner.loadModule('console_test_runner');
   await TestRunner.loadModule('performance_test_runner');
   await TestRunner.showPanel('timeline');
-  await TestRunner.addScriptTag('../resources/timeline-data.js');
 
   var timeline = UI.panels.timeline;
   timeline._onModeChanged();
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-window-filter.js b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-window-filter.js
index 8013c7d..c9a7cd8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-window-filter.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-window-filter.js
@@ -7,7 +7,6 @@
   TestRunner.addResult(`It applies different ranges to the OverviewGrid and expects that current view reflects the change.\n`);
   await TestRunner.loadModule('performance_test_runner');
   await TestRunner.showPanel('timeline');
-  await TestRunner.addScriptTag('../resources/timeline-data.js');
 
   var timeline = UI.panels.timeline;
   var overviewPane = timeline._overviewPane;
diff --git a/third_party/WebKit/LayoutTests/http/tests/resources/permissions-helper.js b/third_party/WebKit/LayoutTests/http/tests/resources/permissions-helper.js
index 1e18f50e..286ff12 100644
--- a/third_party/WebKit/LayoutTests/http/tests/resources/permissions-helper.js
+++ b/third_party/WebKit/LayoutTests/http/tests/resources/permissions-helper.js
@@ -27,10 +27,6 @@
         return {name: "background-sync"};
       case "accessibility-events":
         return {name: "accessibility-events"};
-      case "clipboard-read":
-        return {name: "clipboard-read"};
-      case "clipboard-write":
-        return {name: "clipboard-write"};
       default:
         throw "Invalid permission name provided";
     }
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/OWNERS b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/OWNERS
new file mode 100644
index 0000000..75630178
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/OWNERS
@@ -0,0 +1,2 @@
+# TEAM: layout-dev@chromium.org
+# COMPONENT: Blink>Fonts
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-0-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-0-expected.txt
similarity index 97%
rename from third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-0-expected.txt
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-0-expected.txt
index 3065048..69bef1e8 100644
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-0-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-0-expected.txt
@@ -2,14 +2,6 @@
 ( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
 available font faces by finding the nearest match in the following order of
 precedence: stretch, style, weight.
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
 Testing font set variations 0 to 2 out of 0-26
 Available fonts updated: ["condensed_normal_100","condensed_normal_900","condensed_italic_100","condensed_italic_900","expanded_normal_100","expanded_normal_900","expanded_italic_100","expanded_italic_900"]
 
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-0.js b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-0.js
new file mode 100644
index 0000000..57d4d3c7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-0.js
@@ -0,0 +1,4 @@
+(async function(testRunner) {
+  var test = await testRunner.loadScript('resources/style-matching-test.js');
+  test(testRunner);
+})
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-1-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-1-expected.txt
similarity index 97%
rename from third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-1-expected.txt
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-1-expected.txt
index 5a19d19..c5b781b 100644
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-1-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-1-expected.txt
@@ -2,14 +2,6 @@
 ( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
 available font faces by finding the nearest match in the following order of
 precedence: stretch, style, weight.
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
 Testing font set variations 3 to 5 out of 0-26
 Available fonts updated: ["condensed_normal_100","condensed_normal_900","expanded_normal_100","expanded_normal_900"]
 
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-1.js b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-1.js
new file mode 100644
index 0000000..57d4d3c7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-1.js
@@ -0,0 +1,4 @@
+(async function(testRunner) {
+  var test = await testRunner.loadScript('resources/style-matching-test.js');
+  test(testRunner);
+})
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-2-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-2-expected.txt
similarity index 97%
rename from third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-2-expected.txt
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-2-expected.txt
index e498bf4..9d879cf8 100644
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-2-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-2-expected.txt
@@ -2,14 +2,6 @@
 ( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
 available font faces by finding the nearest match in the following order of
 precedence: stretch, style, weight.
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
 Testing font set variations 6 to 8 out of 0-26
 Available fonts updated: ["condensed_italic_100","condensed_italic_900","expanded_italic_100","expanded_italic_900"]
 
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-2.js b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-2.js
new file mode 100644
index 0000000..57d4d3c7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-2.js
@@ -0,0 +1,4 @@
+(async function(testRunner) {
+  var test = await testRunner.loadScript('resources/style-matching-test.js');
+  test(testRunner);
+})
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-3-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-3-expected.txt
similarity index 97%
rename from third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-3-expected.txt
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-3-expected.txt
index e038b6e..b130ade 100644
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-3-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-3-expected.txt
@@ -2,14 +2,6 @@
 ( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
 available font faces by finding the nearest match in the following order of
 precedence: stretch, style, weight.
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
 Testing font set variations 9 to 11 out of 0-26
 Available fonts updated: ["condensed_normal_100","condensed_normal_900","condensed_italic_100","condensed_italic_900"]
 
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-3.js b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-3.js
new file mode 100644
index 0000000..57d4d3c7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-3.js
@@ -0,0 +1,4 @@
+(async function(testRunner) {
+  var test = await testRunner.loadScript('resources/style-matching-test.js');
+  test(testRunner);
+})
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-4-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-4-expected.txt
similarity index 97%
rename from third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-4-expected.txt
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-4-expected.txt
index 08fc219..0a5d0ce 100644
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-4-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-4-expected.txt
@@ -2,14 +2,6 @@
 ( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
 available font faces by finding the nearest match in the following order of
 precedence: stretch, style, weight.
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
 Testing font set variations 12 to 14 out of 0-26
 Available fonts updated: ["condensed_normal_100","condensed_normal_900"]
 
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-4.js b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-4.js
new file mode 100644
index 0000000..57d4d3c7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-4.js
@@ -0,0 +1,4 @@
+(async function(testRunner) {
+  var test = await testRunner.loadScript('resources/style-matching-test.js');
+  test(testRunner);
+})
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-5-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-5-expected.txt
similarity index 97%
rename from third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-5-expected.txt
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-5-expected.txt
index 640038f..34149fe 100644
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-5-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-5-expected.txt
@@ -2,14 +2,6 @@
 ( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
 available font faces by finding the nearest match in the following order of
 precedence: stretch, style, weight.
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
 Testing font set variations 15 to 17 out of 0-26
 Available fonts updated: ["condensed_italic_100","condensed_italic_900"]
 
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-5.js b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-5.js
new file mode 100644
index 0000000..57d4d3c7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-5.js
@@ -0,0 +1,4 @@
+(async function(testRunner) {
+  var test = await testRunner.loadScript('resources/style-matching-test.js');
+  test(testRunner);
+})
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-6-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-6-expected.txt
similarity index 97%
rename from third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-6-expected.txt
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-6-expected.txt
index 9ab6f1c3..bb3a516e 100644
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-6-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-6-expected.txt
@@ -2,14 +2,6 @@
 ( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
 available font faces by finding the nearest match in the following order of
 precedence: stretch, style, weight.
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
 Testing font set variations 18 to 20 out of 0-26
 Available fonts updated: ["expanded_normal_100","expanded_normal_900","expanded_italic_100","expanded_italic_900"]
 
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-6.js b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-6.js
new file mode 100644
index 0000000..57d4d3c7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-6.js
@@ -0,0 +1,4 @@
+(async function(testRunner) {
+  var test = await testRunner.loadScript('resources/style-matching-test.js');
+  test(testRunner);
+})
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-7-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-7-expected.txt
similarity index 97%
rename from third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-7-expected.txt
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-7-expected.txt
index 7fc39a1..a431f12d 100644
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-7-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-7-expected.txt
@@ -2,14 +2,6 @@
 ( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
 available font faces by finding the nearest match in the following order of
 precedence: stretch, style, weight.
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
 Testing font set variations 21 to 23 out of 0-26
 Available fonts updated: ["expanded_normal_100","expanded_normal_900"]
 
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-7.js b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-7.js
new file mode 100644
index 0000000..57d4d3c7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-7.js
@@ -0,0 +1,4 @@
+(async function(testRunner) {
+  var test = await testRunner.loadScript('resources/style-matching-test.js');
+  test(testRunner);
+})
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-8-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-8-expected.txt
similarity index 97%
rename from third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-8-expected.txt
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-8-expected.txt
index d4658cc..0f4d40a 100644
--- a/third_party/WebKit/LayoutTests/css3/fonts/font-style-matching-8-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-8-expected.txt
@@ -2,14 +2,6 @@
 ( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
 available font faces by finding the nearest match in the following order of
 precedence: stretch, style, weight.
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
-abcdefg
 Testing font set variations 24 to 26 out of 0-26
 Available fonts updated: ["expanded_italic_100","expanded_italic_900"]
 
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-8.js b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-8.js
new file mode 100644
index 0000000..57d4d3c7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/font-style-matching-8.js
@@ -0,0 +1,4 @@
+(async function(testRunner) {
+  var test = await testRunner.loadScript('resources/style-matching-test.js');
+  test(testRunner);
+})
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/applied-styles.css b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/applied-styles.css
similarity index 100%
rename from third_party/WebKit/LayoutTests/css3/fonts/resources/applied-styles.css
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/applied-styles.css
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_condensed_italic_100.ttf b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_condensed_italic_100.ttf
similarity index 100%
rename from third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_condensed_italic_100.ttf
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_condensed_italic_100.ttf
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_condensed_italic_900.ttf b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_condensed_italic_900.ttf
similarity index 100%
rename from third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_condensed_italic_900.ttf
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_condensed_italic_900.ttf
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_condensed_normal_100.ttf b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_condensed_normal_100.ttf
similarity index 100%
rename from third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_condensed_normal_100.ttf
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_condensed_normal_100.ttf
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_condensed_normal_900.ttf b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_condensed_normal_900.ttf
similarity index 100%
rename from third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_condensed_normal_900.ttf
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_condensed_normal_900.ttf
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_expanded_italic_100.ttf b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_expanded_italic_100.ttf
similarity index 100%
rename from third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_expanded_italic_100.ttf
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_expanded_italic_100.ttf
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_expanded_italic_900.ttf b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_expanded_italic_900.ttf
similarity index 100%
rename from third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_expanded_italic_900.ttf
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_expanded_italic_900.ttf
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_expanded_normal_100.ttf b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_expanded_normal_100.ttf
similarity index 100%
rename from third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_expanded_normal_100.ttf
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_expanded_normal_100.ttf
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_expanded_normal_900.ttf b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_expanded_normal_900.ttf
similarity index 100%
rename from third_party/WebKit/LayoutTests/css3/fonts/resources/fonts/CSSMatchingTest_expanded_normal_900.ttf
rename to third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/fonts/CSSMatchingTest_expanded_normal_900.ttf
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/style-matching-test.js b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/style-matching-test.js
new file mode 100644
index 0000000..2144e06
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/layout-fonts/resources/style-matching-test.js
@@ -0,0 +1,286 @@
+(async function test(testRunner) {
+  var {session, dp} = await testRunner.startHTML(`
+    <!DOCTYPE html>
+    <html>
+    <meta charset="UTF-8">
+    <head>
+        <!-- available fonts --->
+        <style type="text/css">
+        </style>
+        <link rel="stylesheet" type="text/css" href="${testRunner.url("resources/applied-styles.css")}">
+    </head>
+    <body>
+        <div class="test">
+            <div id="condensed_normal_100">abcdefg</div>
+            <div id="condensed_normal_900">abcdefg</div>
+            <div id="condensed_italic_100">abcdefg</div>
+            <div id="condensed_italic_900">abcdefg</div>
+            <div id="expanded_normal_100">abcdefg</div>
+            <div id="expanded_normal_900">abcdefg</div>
+            <div id="expanded_italic_100">abcdefg</div>
+            <div id="expanded_italic_900">abcdefg</div>
+        </div>
+    </body>
+    </html>
+  `, `According to the CSS3 Fonts Module, Step 4 or the Font Style Matching Algorithm
+( https://drafts.csswg.org/css-fonts-3/#font-style-matching ) must narrow down the
+available font faces by finding the nearest match in the following order of
+precedence: stretch, style, weight.`);
+
+  await dp.DOM.enable();
+  await dp.CSS.enable();
+
+  await session.evaluate(`
+    function updateFont(available) {
+      var fulfill;
+      var promise = new Promise(f => fulfill = f);
+
+      function emptyFontFaceDeclarations()
+      {
+          var stylesheet = document.styleSheets[0];
+          var rules = stylesheet.cssRules;
+          var rulesLengthSnapshot = stylesheet.cssRules.length;
+          if (!rulesLengthSnapshot)
+              return;
+          for (var i = 0; i < rulesLengthSnapshot; i++) {
+              stylesheet.deleteRule(0);
+          }
+      }
+
+      function makeFontFaceDeclaration(stretch, style, weight)
+      {
+          var fontFaceDeclaration = '@font-face { font-family: "CSSMatchingtest"; ' +
+              "font-stretch: " + stretch + ";" +
+              "font-style: " + style + ";" +
+              "font-weight: " + weight + ";" +
+              'src: url("' +
+              "${testRunner.url("resources/fonts/CSSMatchingTest_")}" +
+              stretch + "_" + style + "_" + weight + '.ttf");';
+          return fontFaceDeclaration;
+      }
+
+      function notifyInspectorFontsReady() {
+          var cssRules = document.styleSheets[0].cssRules;
+          var fontsAvailable = [];
+          for (var i = 0; i < cssRules.length; i++) {
+              urlmatch = \/url\\(".*fonts\\/CSSMatchingTest_(.*).ttf"\\)/.exec(
+                  cssRules[i].cssText);
+              fontsAvailable.push(urlmatch[1]);
+          }
+          fulfill(JSON.stringify(fontsAvailable));
+      }
+
+      function updateAvailableFontFaceDeclarations(available)
+      {
+          emptyFontFaceDeclarations();
+          for (stretch of available.stretches)
+              for (style of available.styles)
+                  for (weight of available.weights) {
+                      document.styleSheets[0].addRule(
+                          makeFontFaceDeclaration(stretch, style, weight));
+                  }
+
+          document.fonts.ready.then(() => {
+              // fonts.ready event fires too early, used fonts for rendering have not
+              // been updated yet. Force a layout to hopefully work around this.
+              // Remove this when crbug.com/516680 is fixed.
+              // https://drafts.csswg.org/css-font-loading/#font-face-set-ready
+              document.body.offsetTop;
+              notifyInspectorFontsReady();
+          });
+      }
+      updateAvailableFontFaceDeclarations(available);
+      return promise;
+    }
+  `);
+
+  var documentNodeId;
+  var documentNodeSelector;
+  var allTestSelectors = [];
+  var testSelectors = [];
+  var testGroup = 0;
+
+  var stretches = ['condensed', 'expanded'];
+  var styles = ['normal', 'italic'];
+  var weights = ['100', '900'];
+
+  var weightsHumanReadable = ["Thin", "Black"];
+
+  var fontSetVariations = [];
+  var currentFontSetVariation = {};
+
+  makeFontSetVariations();
+
+  function makeFontSetVariations() {
+    // For each of the three properties we have three choices:
+    // Restrict to the first value, to the second, or
+    // allow both. So we're iterating over those options
+    // for each dimension to generate the set of allowed
+    // options for each property. The fonts in the test
+    // page will later be generated from these possible
+    // choices / restrictions.
+    function choices(property) {
+      return [property, [property[0]], [property[1]]];
+    }
+
+    for (var stretchChoice of choices(stretches)) {
+      for (var styleChoice of choices(styles)) {
+        for (var weightChoice of choices(weights)) {
+          var available = {};
+          available.stretches = stretchChoice;
+          available.styles = styleChoice;
+          available.weights = weightChoice;
+          fontSetVariations.push(available);
+        }
+      }
+    }
+  }
+
+  function subsetFontSetVariations() {
+    var NUM_GROUPS = 9;
+    var numVariations = fontSetVariations.length;
+    var groupLength = numVariations / NUM_GROUPS;
+    var start = testGroup * groupLength;
+    var end = start + groupLength;
+    testRunner.log("Testing font set variations " + start + " to " +
+      (end - 1) + " out of 0-" + (numVariations - 1));
+    fontSetVariations = fontSetVariations.slice(start, end);
+  }
+
+  dp.DOM.getDocument({}).then(({ result }) => onDocumentNodeId(result.root.nodeId));
+
+  function onDocumentNodeId(nodeId) {
+    documentNodeId = nodeId;
+    var params = new URLSearchParams(window.location.search);
+    var testURL = params.get('test');
+    testGroup = /font-style-matching-(\d).js/.exec(
+      testURL)[1];
+    subsetFontSetVariations();
+    session.evaluate(
+      'JSON.stringify(' +
+      'Array.prototype.map.call(' +
+      'document.querySelectorAll(".test *"),' +
+      'function(element) { return element.id } ));',
+    ).then(startTestingPage);
+  }
+
+  function startTestingPage(result) {
+    allTestSelectors = JSON.parse(result);
+    nextTest();
+  }
+
+  function nextTest() {
+    if (testSelectors.length) {
+      testNextPageElement();
+    } else {
+      currentFontSetVariation = fontSetVariations.shift();
+      if (currentFontSetVariation) {
+        testSelectors = allTestSelectors.slice();
+        updateFontDeclarationsInPageForVariation(
+          currentFontSetVariation);
+      } else {
+        testRunner.completeTest();
+      }
+    }
+  }
+
+  async function updateFontDeclarationsInPageForVariation(fontSetVariation) {
+    var loadedFonts = await session.evaluateAsync(
+      'updateFont(' +
+      JSON.stringify(fontSetVariation) +
+      ');');
+    testRunner.log("Available fonts updated: " + loadedFonts + "\n");
+    nextTest();
+  }
+
+  function testNextPageElement(result) {
+    var nextSelector = testSelectors.shift()
+    if (nextSelector) {
+      documentNodeSelector = "#" + nextSelector;
+      platformFontsForElementWithSelector(documentNodeSelector);
+    }
+  }
+
+  async function platformFontsForElementWithSelector(selector) {
+    var response = await dp.DOM.querySelector({ nodeId: documentNodeId, selector });
+    var nodeId = response.result.nodeId;
+    var response = await dp.CSS.getPlatformFontsForNode({ nodeId });
+    logResults(response);
+    nextTest();
+  }
+
+  function logResults(response) {
+    testRunner.log(documentNodeSelector);
+    logPassFailResult(
+      documentNodeSelector,
+      response.result.fonts[0].familyName);
+  }
+
+  function cssStyleMatchingExpectationForSelector(selector) {
+    var selectorStretchStyleWeight = selector.substr(1).split("_");
+    var selectorStretch = selectorStretchStyleWeight[0].toLowerCase();
+    var selectorStyle = selectorStretchStyleWeight[1].toLowerCase();
+    var selectorWeight = selectorStretchStyleWeight[2];
+
+    var expectedProperties = {};
+    if (currentFontSetVariation.stretches.indexOf(selectorStretch) > 0) {
+      expectedProperties.stretch = selectorStretch;
+    } else {
+      // If the requested property value is not availabe in the
+      // current font set, then it's restricted to only one value,
+      // which is the nearest match, and at index 0.
+      expectedProperties.stretch = currentFontSetVariation.stretches[0];
+    }
+
+    if (currentFontSetVariation.styles.indexOf(selectorStyle) > 0) {
+      expectedProperties.style = selectorStyle;
+    } else {
+      expectedProperties.style = currentFontSetVariation.styles[0];
+    }
+
+    if (currentFontSetVariation.weights.indexOf(selectorWeight) > 0) {
+      expectedProperties.weight = selectorWeight;
+    } else {
+      expectedProperties.weight = currentFontSetVariation.weights[0];
+    }
+
+    return expectedProperties;
+  }
+
+  function logPassFailResult(selector, usedFontName) {
+    var actualStretchStyleWeight =
+      /CSSMatchingTest (\w*) (\w*) (.*)/.exec(usedFontName);
+    var actualStretch, actualStyle, actualWeight;
+    if (actualStretchStyleWeight && actualStretchStyleWeight.length > 3) {
+      actualStretch = actualStretchStyleWeight[1].toLowerCase();
+      actualStyle = actualStretchStyleWeight[2].toLowerCase();
+      // Font names have human readable weight description,
+      // we need to convert.
+      actualWeight = weights[
+        weightsHumanReadable.indexOf(actualStretchStyleWeight[3])];
+    } else {
+      actualStretch = usedFontName;
+      actualStyle = "";
+      actualWeight = "";
+    }
+
+    var expectedProperties = cssStyleMatchingExpectationForSelector(
+      selector);
+
+    testRunner.log("Expected: " +
+      expectedProperties.stretch + " " +
+      expectedProperties.style + " " +
+      expectedProperties.weight);
+    testRunner.log("Actual: " + actualStretch + " " +
+      actualStyle + " " +
+      actualWeight);
+
+    if (actualStretch != expectedProperties.stretch ||
+      actualStyle != expectedProperties.style ||
+      actualWeight != expectedProperties.weight) {
+      testRunner.log("FAIL\n");
+    } else {
+      testRunner.log("PASS\n");
+    }
+  }
+})
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
index 581fcae..28bb3e66 100644
--- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
@@ -8899,7 +8899,7 @@
 interface XRDevice : EventTarget
     attribute @@toStringTag
     getter deviceName
-    getter isExternal
+    getter external
     method constructor
     method requestSession
     method supportsSession
@@ -8933,10 +8933,10 @@
     getter onend
     getter onfocus
     getter onresetpose
-    method cancelFrame
+    method cancelAnimationFrame
     method constructor
     method end
-    method requestFrame
+    method requestAnimationFrame
     method requestFrameOfReference
     setter baseLayer
     setter depthFar
diff --git a/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_called.html b/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_called.html
index bebf33cd..df0247dc 100644
--- a/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_called.html
+++ b/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_called.html
@@ -14,15 +14,15 @@
   // Session must have a baseLayer or frame requests will be ignored.
   session.baseLayer = new XRWebGLLayer(session, gl);
 
-  function onFrame(xrFrame) {
+  function onFrame(time, xrFrame) {
     t.step( () => {
       assert_true(xrFrame instanceof XRPresentationFrame);
     });
     t.done();
   }
 
-  session.requestFrame(onFrame);
+  session.requestAnimationFrame(onFrame);
 }, fakeDisplays["Pixel"], { exclusive: true },
-"XRSession requestFrame properly calls the provided callback");
+"XRSession requestAnimationFrame properly calls the provided callback");
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_invalidhandle.html b/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_invalidhandle.html
index a6dcf73..c9c124f 100644
--- a/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_invalidhandle.html
+++ b/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_invalidhandle.html
@@ -16,26 +16,26 @@
 
   let counter = 0;
 
-  function onFrame(vrFrame) {
-    // Intentionally session.requestFrame at the beginning, ensuring that
+  function onFrame(time, vrFrame) {
+    // Intentionally session.requestAnimationFrame at the beginning, ensuring that
     // there's an outstanding callback when t.done() is called. This is to make
     // sure it doesn't cause any unexpected behavior like it did with
     // crbug.com/679401
-    session.requestFrame(onFrame);
+    session.requestAnimationFrame(onFrame);
     if (counter > 10) {
       t.done();
     }
     counter++;
   }
 
-  let handle = session.requestFrame(onFrame);
-  session.cancelFrame(0);
-  session.cancelFrame(-1);
-  session.cancelFrame(handle + 1);
-  session.cancelFrame(handle - 1);
-  session.cancelFrame(0.5);
-  session.cancelFrame(null);
+  let handle = session.requestAnimationFrame(onFrame);
+  session.cancelAnimationFrame(0);
+  session.cancelAnimationFrame(-1);
+  session.cancelAnimationFrame(handle + 1);
+  session.cancelAnimationFrame(handle - 1);
+  session.cancelAnimationFrame(0.5);
+  session.cancelAnimationFrame(null);
 }, fakeDisplays["Pixel"], { exclusive: true },
-"XRSession cancelFrame does not have unexpected behavior when given invalid handles");
+"XRSession cancelAnimationFrame does not have unexpected behavior when given invalid handles");
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_nolayer.html b/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_nolayer.html
index 399006b..cf789e9 100644
--- a/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_nolayer.html
+++ b/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_nolayer.html
@@ -14,20 +14,20 @@
   // Session must have a baseLayer or frame requests will be ignored.
   let webglLayer = new XRWebGLLayer(session, gl);
 
-  function onBadFrame(vrFrame) {
+  function onBadFrame(time, vrFrame) {
     t.step( () => {
       assert_unreached("Callback registered without layer was called");
     });
     t.done();
   }
 
-  function onGoodFrame(vrFrame) {
+  function onGoodFrame(time, vrFrame) {
     t.done();
   }
 
   // This callback shouldn't be allowed to register, since the session doesn't
   // have a baseLayer when this call is made.
-  let badHandle = session.requestFrame(onBadFrame);
+  let badHandle = session.requestAnimationFrame(onBadFrame);
 
   t.step( () => {
     assert_equals(badHandle, 0);
@@ -36,12 +36,12 @@
   // Once the base layer is set the callback should be allowed.
   session.baseLayer = webglLayer;
 
-  let goodHandle = session.requestFrame(onGoodFrame);
+  let goodHandle = session.requestAnimationFrame(onGoodFrame);
 
   t.step( () => {
     assert_not_equals(goodHandle, 0);
   });
 }, fakeDisplays["Pixel"], { exclusive: true },
-"XRSession requestFrame must fail if the session has no baseLayer");
+"XRSession requestAnimationFrame must fail if the session has no baseLayer");
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_unregister.html b/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_unregister.html
index 9151c8b..a1b7eee 100644
--- a/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_unregister.html
+++ b/third_party/WebKit/LayoutTests/xr/exclusive_requestFrame_unregister.html
@@ -14,7 +14,7 @@
   // Session must have a baseLayer or frame requests will be ignored.
   session.baseLayer = new XRWebGLLayer(session, gl);
 
-  function onFrameBad(vrFrame) {
+  function onFrameBad(time, vrFrame) {
     t.step( () => {
       assert_unreached("Unregistered callback was called");
     });
@@ -23,31 +23,31 @@
 
   let counter = 0;
   let handle2 = 0;
-  function onFrameGood(vrFrame) {
+  function onFrameGood(time, vrFrame) {
     counter++;
     if (counter >= 4) {
       t.done();
-      // Intentionally don't return immediately so that session.requestFrame
+      // Intentionally don't return immediately so that session.requestAnimationFrame
       // gets called again to make sure it doesn't cause unexpected behavior
       // like in crbug.com/679401
     }
-    session.requestFrame(onFrameGood);
+    session.requestAnimationFrame(onFrameGood);
 
     if (handle2 != 0) {
       // The first time we enter this callback the callback associated with
       // handle2 will have already been queued to execute immediately after
-      // this callback returns. Ensure that cancelFrame works even in that
+      // this callback returns. Ensure that cancelAnimationFrame works even in that
       // scenario.
-      session.cancelFrame(handle2);
+      session.cancelAnimationFrame(handle2);
       handle2 = 0;
     }
   }
 
-  let handle = session.requestFrame(onFrameBad);
-  session.cancelFrame(handle);
-  session.requestFrame(onFrameGood);
-  handle2 = session.requestFrame(onFrameBad);
+  let handle = session.requestAnimationFrame(onFrameBad);
+  session.cancelAnimationFrame(handle);
+  session.requestAnimationFrame(onFrameGood);
+  handle2 = session.requestAnimationFrame(onFrameBad);
 }, fakeDisplays["Pixel"], { exclusive: true },
-"XRSession requestFrame callbacks can be unregistered with cancelFrame");
+"XRSession requestAnimationFrame callbacks can be unregistered with cancelAnimationFrame");
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/xr/getDevicePose_oneframeupdate.html b/third_party/WebKit/LayoutTests/xr/getDevicePose_oneframeupdate.html
index 26b98fc..180b16b 100644
--- a/third_party/WebKit/LayoutTests/xr/getDevicePose_oneframeupdate.html
+++ b/third_party/WebKit/LayoutTests/xr/getDevicePose_oneframeupdate.html
@@ -19,8 +19,8 @@
     let expected_pose = VALID_POSE;
     let counter = 0;
 
-    function onFrame(vrFrame) {
-      session.requestFrame(onFrame);
+    function onFrame(time, vrFrame) {
+      session.requestAnimationFrame(onFrame);
       if (counter == 0) {
         t.step( () => {
           assert_equals(vrFrame.getDevicePose(frameOfRef), null);
@@ -45,7 +45,7 @@
       counter++;
     }
 
-    session.requestFrame(onFrame);
+    session.requestAnimationFrame(onFrame);
   });
 }, fakeDisplays["Pixel"], { exclusive: true },
 "XRPresentationFrame getDevicePose updates on the next frame");
diff --git a/third_party/WebKit/LayoutTests/xr/requestDevice_one_device.html b/third_party/WebKit/LayoutTests/xr/requestDevice_one_device.html
index 40229191..051085d 100644
--- a/third_party/WebKit/LayoutTests/xr/requestDevice_one_device.html
+++ b/third_party/WebKit/LayoutTests/xr/requestDevice_one_device.html
@@ -14,7 +14,7 @@
     t.step( () => {
       assert_true(device != null);
       assert_equals(device.deviceName, 'Google, Inc. Daydream View');
-      assert_false(device.isExternal);
+      assert_false(device.external);
     }, "requestDevice returned correct results");
   }, (err) => {
     t.step( () => {
diff --git a/third_party/WebKit/LayoutTests/xr/requestDevice_two_devices.html b/third_party/WebKit/LayoutTests/xr/requestDevice_two_devices.html
index 82edaf58..fae89f0 100644
--- a/third_party/WebKit/LayoutTests/xr/requestDevice_two_devices.html
+++ b/third_party/WebKit/LayoutTests/xr/requestDevice_two_devices.html
@@ -19,8 +19,8 @@
 
     t.step( () => {
       assert_equals(device.deviceName, 'Google, Inc. Daydream View');
-      assert_false(device.isExternal);
-    }, "Attributes for device are correct");
+      assert_false(device.external);
+    }, "Attribute for device is correct");
   }, (err) => {
     t.step( () => {
       assert_unreached("requestDevice rejected");
diff --git a/third_party/WebKit/LayoutTests/xr/xrView_match.html b/third_party/WebKit/LayoutTests/xr/xrView_match.html
index a0715b2..2da49d13 100644
--- a/third_party/WebKit/LayoutTests/xr/xrView_match.html
+++ b/third_party/WebKit/LayoutTests/xr/xrView_match.html
@@ -17,7 +17,7 @@
   session.baseLayer = webglLayer;
 
   session.requestFrameOfReference("eyeLevel").then((frameOfRef) => {
-    function onFrame(xrFrame) {
+    function onFrame(time, xrFrame) {
       t.step( () => {
         // Ensure that two views are provided.
         assert_not_equals(xrFrame.views, null);
@@ -52,7 +52,7 @@
       t.done();
     }
 
-    session.requestFrame(onFrame);
+    session.requestAnimationFrame(onFrame);
   });
 }, fakeDisplays["Pixel"], { exclusive: true },
 "XRPresentationFrame contains the expected views");
diff --git a/third_party/WebKit/LayoutTests/xr/xrView_oneframeupdate.html b/third_party/WebKit/LayoutTests/xr/xrView_oneframeupdate.html
index 469c2e5..2dc48a6 100644
--- a/third_party/WebKit/LayoutTests/xr/xrView_oneframeupdate.html
+++ b/third_party/WebKit/LayoutTests/xr/xrView_oneframeupdate.html
@@ -21,12 +21,12 @@
   session.requestFrameOfReference("eyeLevel").then((frameOfRef) => {
     let counter = 0;
 
-    function onFrame(xrFrame) {
+    function onFrame(time, xrFrame) {
       let leftView = xrFrame.views[0];
       let rightView = xrFrame.views[1];
 
       if (counter == 0) {
-        session.requestFrame(onFrame);
+        session.requestAnimationFrame(onFrame);
 
         t.step( () => {
           let expectedLeftProjection = perspectiveFromFieldOfView(
@@ -66,7 +66,7 @@
       counter++;
     }
 
-    session.requestFrame(onFrame);
+    session.requestAnimationFrame(onFrame);
   });
 }, fakeDisplays["Pixel"], { exclusive: true },
 "XRView projection matrices update near and far depths on the next frame");
diff --git a/third_party/WebKit/LayoutTests/xr/xrViewport_valid.html b/third_party/WebKit/LayoutTests/xr/xrViewport_valid.html
index dd83bd3..ae20bdf 100644
--- a/third_party/WebKit/LayoutTests/xr/xrViewport_valid.html
+++ b/third_party/WebKit/LayoutTests/xr/xrViewport_valid.html
@@ -17,7 +17,7 @@
   session.baseLayer = webglLayer;
 
   session.requestFrameOfReference("eyeLevel").then((frameOfRef) => {
-    function onFrame(xrFrame) {
+    function onFrame(time, xrFrame) {
       let leftView = xrFrame.views[0];
       let rightView = xrFrame.views[1];
 
@@ -62,7 +62,7 @@
       t.done();
     }
 
-    session.requestFrame(onFrame);
+    session.requestAnimationFrame(onFrame);
   });
 }, fakeDisplays["Pixel"], { exclusive: true },
 "XRViewport attributes are valid");
diff --git a/third_party/WebKit/LayoutTests/xr/xrWebGLLayer_framebuffer_draw.html b/third_party/WebKit/LayoutTests/xr/xrWebGLLayer_framebuffer_draw.html
index 2640136..3a67bedf 100644
--- a/third_party/WebKit/LayoutTests/xr/xrWebGLLayer_framebuffer_draw.html
+++ b/third_party/WebKit/LayoutTests/xr/xrWebGLLayer_framebuffer_draw.html
@@ -86,7 +86,7 @@
   runDrawTests(t, "INVALID_FRAMEBUFFER_OPERATION");
 
   // Drawing operations within a XR frame should succeed.
-  session.requestFrame((xrFrame) => {
+  session.requestAnimationFrame((time, xrFrame) => {
     runDrawTests(t, "NO_ERROR");
     t.done();
   });
diff --git a/third_party/WebKit/LayoutTests/xr/xrWebGLLayer_opaque_framebuffer.html b/third_party/WebKit/LayoutTests/xr/xrWebGLLayer_opaque_framebuffer.html
index 202b98bd..723738d 100644
--- a/third_party/WebKit/LayoutTests/xr/xrWebGLLayer_opaque_framebuffer.html
+++ b/third_party/WebKit/LayoutTests/xr/xrWebGLLayer_opaque_framebuffer.html
@@ -95,7 +95,7 @@
     assert_equals(gl.checkFramebufferStatus(gl.FRAMEBUFFER), gl.FRAMEBUFFER_UNSUPPORTED);
   }, "Framebuffer status must be unsupported outside of a XR frame callback");
 
-  session.requestFrame((xrFrame) => {
+  session.requestAnimationFrame((time, xrFrame) => {
     t.step( () => {
       assert_equals(gl.checkFramebufferStatus(gl.FRAMEBUFFER), gl.FRAMEBUFFER_COMPLETE);
     }, "Framebuffer status must be complete inside of a XR frame callback");
diff --git a/third_party/WebKit/Source/DEPS b/third_party/WebKit/Source/DEPS
index 06538f2..07607a1 100644
--- a/third_party/WebKit/Source/DEPS
+++ b/third_party/WebKit/Source/DEPS
@@ -2,10 +2,11 @@
     "+base/callback.h",
     "+base/callback_forward.h",
     "+base/debug",
+    "+base/gtest_prod_util.h",
     "+base/location.h",
     "+base/macros.h",
+    "+base/memory/ptr_util.h",
     "+base/memory/weak_ptr.h",
-    "+base/gtest_prod_util.h",
     "+build",
     "+services/service_manager/public/cpp/connector.h",
     "+services/service_manager/public/cpp/interface_provider.h",
diff --git a/third_party/WebKit/Source/bindings/core/v8/ActivityLoggerTest.cpp b/third_party/WebKit/Source/bindings/core/v8/ActivityLoggerTest.cpp
index 1f8a067..7825f57 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ActivityLoggerTest.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ActivityLoggerTest.cpp
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ScriptController.h"
 #include "bindings/core/v8/ScriptSourceCode.h"
 #include "bindings/core/v8/V8BindingForCore.h"
@@ -9,7 +10,6 @@
 #include "core/frame/WebLocalFrameImpl.h"
 #include "platform/bindings/V8DOMActivityLogger.h"
 #include "platform/wtf/Forward.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/Base64.h"
 #include "public/platform/WebCache.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -75,7 +75,7 @@
   ActivityLoggerTest() {
     activity_logger_ = new TestActivityLogger();
     V8DOMActivityLogger::SetActivityLogger(kIsolatedWorldId, String(),
-                                           WTF::WrapUnique(activity_logger_));
+                                           base::WrapUnique(activity_logger_));
     web_view_helper_.Initialize();
     script_controller_ = &web_view_helper_.GetWebView()
                               ->MainFrameImpl()
diff --git a/third_party/WebKit/Source/bindings/core/v8/CallbackPromiseAdapter.h b/third_party/WebKit/Source/bindings/core/v8/CallbackPromiseAdapter.h
index b6ac6f0..f256133 100644
--- a/third_party/WebKit/Source/bindings/core/v8/CallbackPromiseAdapter.h
+++ b/third_party/WebKit/Source/bindings/core/v8/CallbackPromiseAdapter.h
@@ -34,7 +34,6 @@
 #include <memory>
 #include <utility>
 #include "bindings/core/v8/ScriptPromiseResolver.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/TypeTraits.h"
 #include "public/platform/WebCallbacks.h"
 
@@ -83,13 +82,13 @@
 // };
 // std::unique_ptr<WebCallbacks<std::unique_ptr<WebMyClass>,
 //                 const WebMyErrorClass&>>
-//     callbacks = WTF::wrapUnique(
-//         new CallbackPromiseAdapter<MyClass, MyErrorClass>(resolver));
+//     callbacks =
+//         std::make_unique<CallbackPromiseAdapter<MyClass, MyErrorClass>>(
+//             resolver);
 // ...
 //
 // std::unique_ptr<WebCallbacks<bool, const WebMyErrorClass&>> callbacks2 =
-//     WTF::wrapUnique(
-//         new CallbackPromiseAdapter<bool, MyErrorClass>(resolver));
+//     std::make_unique<CallbackPromiseAdapter<bool, MyErrorClass>>(resolver);
 // ...
 //
 //
diff --git a/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp b/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp
index ef909f37..3790f65a 100644
--- a/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp
@@ -39,7 +39,6 @@
 #include "bindings/core/v8/V8Initializer.h"
 #include "bindings/core/v8/V8PagePopupControllerBinding.h"
 #include "bindings/core/v8/V8Window.h"
-#include "core/dom/Modulator.h"
 #include "core/frame/LocalFrame.h"
 #include "core/frame/LocalFrameClient.h"
 #include "core/frame/csp/ContentSecurityPolicy.h"
@@ -47,6 +46,7 @@
 #include "core/html/HTMLIFrameElement.h"
 #include "core/inspector/MainThreadDebugger.h"
 #include "core/loader/FrameLoader.h"
+#include "core/script/Modulator.h"
 #include "platform/Histogram.h"
 #include "platform/bindings/DOMWrapperWorld.h"
 #include "platform/bindings/OriginTrialFeatures.h"
diff --git a/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp b/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp
index bd6b8b95..dd86e28 100644
--- a/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp
@@ -5,6 +5,8 @@
 #include "bindings/core/v8/RejectedPromises.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ScriptValue.h"
 #include "bindings/core/v8/V8BindingForCore.h"
 #include "core/dom/ExecutionContext.h"
@@ -17,7 +19,6 @@
 #include "platform/bindings/V8PerIsolateData.h"
 #include "platform/scheduler/child/web_scheduler.h"
 #include "platform/wtf/Functional.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebThread.h"
 
@@ -34,9 +35,9 @@
       const String& error_message,
       std::unique_ptr<SourceLocation> location,
       AccessControlStatus cors_status) {
-    return WTF::WrapUnique(new Message(script_state, promise, exception,
-                                       error_message, std::move(location),
-                                       cors_status));
+    return base::WrapUnique(new Message(script_state, promise, exception,
+                                        error_message, std::move(location),
+                                        cors_status));
   }
 
   bool IsCollected() { return collected_ || !script_state_->ContextIsValid(); }
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptModule.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptModule.cpp
index c8a27f6..88e2129 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptModule.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptModule.cpp
@@ -7,9 +7,9 @@
 #include "bindings/core/v8/ExceptionState.h"
 #include "bindings/core/v8/V8BindingForCore.h"
 #include "bindings/core/v8/V8ScriptRunner.h"
-#include "core/dom/Modulator.h"
-#include "core/dom/ScriptModuleResolver.h"
 #include "core/probe/CoreProbes.h"
+#include "core/script/Modulator.h"
+#include "core/script/ScriptModuleResolver.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptModuleTest.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptModuleTest.cpp
index c815f19c..8fa61399 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptModuleTest.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptModuleTest.cpp
@@ -7,8 +7,8 @@
 #include "bindings/core/v8/ScriptController.h"
 #include "bindings/core/v8/ScriptSourceCode.h"
 #include "bindings/core/v8/V8BindingForTesting.h"
-#include "core/dom/ScriptModuleResolver.h"
 #include "core/frame/LocalFrame.h"
+#include "core/script/ScriptModuleResolver.h"
 #include "core/testing/DummyModulator.h"
 #include "platform/bindings/V8Binding.h"
 #include "platform/bindings/V8PerContextData.h"
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp
index 2e5651a87..0ddd7dd 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.cpp
@@ -9,7 +9,6 @@
 #include "core/dom/ExecutionContext.h"
 #include "platform/bindings/ScopedPersistent.h"
 #include "platform/bindings/ScriptState.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
@@ -146,7 +145,7 @@
   }
   v8::Local<v8::Object> wrapper = Holder(isolate_, context->Global());
   std::unique_ptr<ScopedPersistent<v8::Object>> weak_persistent =
-      WTF::WrapUnique(new ScopedPersistent<v8::Object>);
+      std::make_unique<ScopedPersistent<v8::Object>>();
   weak_persistent->Set(isolate_, wrapper);
   weak_persistent->SetPhantom();
   wrappers_.push_back(std::move(weak_persistent));
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
index 46597e213..a0b644da 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
@@ -5,13 +5,15 @@
 #include "bindings/core/v8/ScriptStreamer.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ScriptStreamerThread.h"
 #include "bindings/core/v8/V8ScriptRunner.h"
-#include "core/dom/ClassicPendingScript.h"
 #include "core/dom/Document.h"
 #include "core/dom/Element.h"
 #include "core/frame/Settings.h"
 #include "core/html/parser/TextResourceDecoder.h"
+#include "core/script/ClassicPendingScript.h"
 #include "platform/CrossThreadFunctional.h"
 #include "platform/Histogram.h"
 #include "platform/SharedBuffer.h"
@@ -20,7 +22,6 @@
 #include "platform/loader/fetch/Resource.h"
 #include "platform/scheduler/child/web_scheduler.h"
 #include "platform/wtf/Deque.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/TextEncodingRegistry.h"
 
 namespace blink {
@@ -454,13 +455,13 @@
     DCHECK(!source_);
     stream_ = new SourceStream;
     // m_source takes ownership of m_stream.
-    source_ = WTF::WrapUnique(
-        new v8::ScriptCompiler::StreamedSource(stream_, encoding_));
+    source_ = std::make_unique<v8::ScriptCompiler::StreamedSource>(stream_,
+                                                                   encoding_);
 
     ScriptState::Scope scope(script_state_.get());
     std::unique_ptr<v8::ScriptCompiler::ScriptStreamingTask>
         script_streaming_task(
-            WTF::WrapUnique(v8::ScriptCompiler::StartStreamingScript(
+            base::WrapUnique(v8::ScriptCompiler::StartStreamingScript(
                 script_state_->GetIsolate(), source_.get(), compile_options_)));
     if (!script_streaming_task) {
       // V8 cannot stream the script.
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp
index 3fbe0f2..bca33d6f 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp
@@ -11,10 +11,10 @@
 #include "bindings/core/v8/V8BindingForCore.h"
 #include "bindings/core/v8/V8BindingForTesting.h"
 #include "bindings/core/v8/V8ScriptRunner.h"
-#include "core/dom/ClassicPendingScript.h"
-#include "core/dom/ClassicScript.h"
-#include "core/dom/MockScriptElementBase.h"
 #include "core/frame/Settings.h"
+#include "core/script/ClassicPendingScript.h"
+#include "core/script/ClassicScript.h"
+#include "core/script/MockScriptElementBase.h"
 #include "core/testing/DummyPageHolder.h"
 #include "platform/exported/WrappedResourceResponse.h"
 #include "platform/heap/Handle.h"
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerThread.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerThread.cpp
index 2dd18ec..e2c3194 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerThread.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerThread.cpp
@@ -10,7 +10,6 @@
 #include "core/inspector/InspectorTraceEvents.h"
 #include "platform/WebTaskRunner.h"
 #include "platform/instrumentation/tracing/TraceEvent.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/bindings/core/v8/SourceLocation.cpp b/third_party/WebKit/Source/bindings/core/v8/SourceLocation.cpp
index c7ae0acf..c1d40cb 100644
--- a/third_party/WebKit/Source/bindings/core/v8/SourceLocation.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/SourceLocation.cpp
@@ -5,6 +5,8 @@
 #include "bindings/core/v8/SourceLocation.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/V8BindingForCore.h"
 #include "core/dom/Document.h"
 #include "core/dom/ExecutionContext.h"
@@ -16,7 +18,6 @@
 #include "platform/bindings/V8BindingMacros.h"
 #include "platform/bindings/V8PerIsolateData.h"
 #include "platform/instrumentation/tracing/TracedValue.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
@@ -118,8 +119,8 @@
     unsigned column_number,
     std::unique_ptr<v8_inspector::V8StackTrace> stack_trace,
     int script_id) {
-  return WTF::WrapUnique(new SourceLocation(url, line_number, column_number,
-                                            std::move(stack_trace), script_id));
+  return base::WrapUnique(new SourceLocation(
+      url, line_number, column_number, std::move(stack_trace), script_id));
 }
 
 // static
@@ -130,8 +131,8 @@
   String url = ToCoreString(stack_trace->topSourceURL());
   unsigned line_number = stack_trace->topLineNumber();
   unsigned column_number = stack_trace->topColumnNumber();
-  return WTF::WrapUnique(new SourceLocation(url, line_number, column_number,
-                                            std::move(stack_trace), script_id));
+  return base::WrapUnique(new SourceLocation(
+      url, line_number, column_number, std::move(stack_trace), script_id));
 }
 
 // static
@@ -186,7 +187,7 @@
 }
 
 std::unique_ptr<SourceLocation> SourceLocation::Clone() const {
-  return WTF::WrapUnique(new SourceLocation(
+  return base::WrapUnique(new SourceLocation(
       url_.IsolatedCopy(), line_number_, column_number_,
       stack_trace_ ? stack_trace_->clone() : nullptr, script_id_));
 }
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8IdleTaskRunner.h b/third_party/WebKit/Source/bindings/core/v8/V8IdleTaskRunner.h
index 5b9d05a..95f0b93 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8IdleTaskRunner.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8IdleTaskRunner.h
@@ -27,12 +27,13 @@
 #define V8IdleTaskRunner_h
 
 #include <memory>
+
 #include "base/location.h"
+#include "base/memory/ptr_util.h"
 #include "core/CoreExport.h"
 #include "gin/public/v8_idle_task_runner.h"
 #include "platform/runtime_enabled_features.h"
 #include "platform/scheduler/child/web_scheduler.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebThread.h"
 
@@ -48,7 +49,7 @@
   void PostIdleTask(v8::IdleTask* task) override {
     DCHECK(RuntimeEnabledFeatures::V8IdleTasksEnabled());
     scheduler_->PostIdleTask(
-        FROM_HERE, WTF::Bind(&v8::IdleTask::Run, WTF::WrapUnique(task)));
+        FROM_HERE, WTF::Bind(&v8::IdleTask::Run, base::WrapUnique(task)));
   }
 
  private:
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp b/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp
index 227c766..c78f41c 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp
@@ -47,11 +47,11 @@
 #include "bindings/core/v8/WorkerOrWorkletScriptController.h"
 #include "core/dom/Document.h"
 #include "core/dom/ExecutionContext.h"
-#include "core/dom/Modulator.h"
 #include "core/frame/LocalDOMWindow.h"
 #include "core/frame/csp/ContentSecurityPolicy.h"
 #include "core/inspector/ConsoleMessage.h"
 #include "core/inspector/MainThreadDebugger.h"
+#include "core/script/Modulator.h"
 #include "core/workers/WorkerGlobalScope.h"
 #include "platform/EventDispatchForbiddenScope.h"
 #include "platform/bindings/DOMWrapperWorld.h"
@@ -66,7 +66,6 @@
 #include "platform/weborigin/SecurityViolationReportingPolicy.h"
 #include "platform/wtf/AddressSanitizer.h"
 #include "platform/wtf/Assertions.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/WTFString.h"
 #include "platform/wtf/typed_arrays/ArrayBufferContents.h"
 #include "public/platform/Platform.h"
diff --git a/third_party/WebKit/Source/bindings/core/v8/custom/V8DocumentCustom.cpp b/third_party/WebKit/Source/bindings/core/v8/custom/V8DocumentCustom.cpp
index 803d84419..f3731d5 100644
--- a/third_party/WebKit/Source/bindings/core/v8/custom/V8DocumentCustom.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/custom/V8DocumentCustom.cpp
@@ -46,7 +46,6 @@
 #include "core/html/HTMLAllCollection.h"
 #include "core/html/HTMLCollection.h"
 #include "core/html/HTMLIFrameElement.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/StdLibExtras.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/bindings/core/v8/custom/V8HTMLPlugInElementCustom.cpp b/third_party/WebKit/Source/bindings/core/v8/custom/V8HTMLPlugInElementCustom.cpp
index 31cc91d..62af3aa 100644
--- a/third_party/WebKit/Source/bindings/core/v8/custom/V8HTMLPlugInElementCustom.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/custom/V8HTMLPlugInElementCustom.cpp
@@ -37,7 +37,6 @@
 #include "core/frame/UseCounter.h"
 #include "platform/bindings/DOMWrapperWorld.h"
 #include "platform/bindings/ScriptState.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/serialization/SerializedScriptValue.cpp b/third_party/WebKit/Source/bindings/core/v8/serialization/SerializedScriptValue.cpp
index b7ef9aaa..4f43868 100644
--- a/third_party/WebKit/Source/bindings/core/v8/serialization/SerializedScriptValue.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/serialization/SerializedScriptValue.cpp
@@ -58,7 +58,6 @@
 #include "platform/wtf/Assertions.h"
 #include "platform/wtf/ByteOrder.h"
 #include "platform/wtf/CheckedNumeric.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Vector.h"
 #include "platform/wtf/dtoa/utils.h"
 #include "platform/wtf/text/StringBuffer.h"
diff --git a/third_party/WebKit/Source/controller/BlinkInitializer.cpp b/third_party/WebKit/Source/controller/BlinkInitializer.cpp
index 98818e4e..914358d1 100644
--- a/third_party/WebKit/Source/controller/BlinkInitializer.cpp
+++ b/third_party/WebKit/Source/controller/BlinkInitializer.cpp
@@ -30,6 +30,8 @@
 
 #include "controller/BlinkInitializer.h"
 
+#include <memory>
+
 #include "bindings/core/v8/V8Initializer.h"
 #include "bindings/modules/v8/V8ContextSnapshotExternalReferences.h"
 #include "build/build_config.h"
@@ -43,7 +45,6 @@
 #include "platform/heap/Heap.h"
 #include "platform/wtf/Assertions.h"
 #include "platform/wtf/Functional.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/WTF.h"
 #include "public/platform/InterfaceRegistry.h"
 #include "public/platform/Platform.h"
@@ -70,7 +71,7 @@
 
 static BlinkInitializer& GetBlinkInitializer() {
   DEFINE_STATIC_LOCAL(std::unique_ptr<BlinkInitializer>, initializer,
-                      (WTF::WrapUnique(new BlinkInitializer)));
+                      (std::make_unique<BlinkInitializer>()));
   return *initializer;
 }
 
diff --git a/third_party/WebKit/Source/core/BUILD.gn b/third_party/WebKit/Source/core/BUILD.gn
index 03193db6..32d0121 100644
--- a/third_party/WebKit/Source/core/BUILD.gn
+++ b/third_party/WebKit/Source/core/BUILD.gn
@@ -210,6 +210,7 @@
     "//third_party/WebKit/Source/core/policy",
     "//third_party/WebKit/Source/core/probe",
     "//third_party/WebKit/Source/core/resize_observer",
+    "//third_party/WebKit/Source/core/script",
     "//third_party/WebKit/Source/core/streams",
     "//third_party/WebKit/Source/core/style:rendering",
     "//third_party/WebKit/Source/core/style:svg_style",
@@ -1700,7 +1701,6 @@
     "dom/DOMImplementationTest.cpp",
     "dom/DocumentStatisticsCollectorTest.cpp",
     "dom/DocumentTest.cpp",
-    "dom/DynamicModuleResolverTest.cpp",
     "dom/ElementTest.cpp",
     "dom/ElementVisibilityObserverTest.cpp",
     "dom/FirstLetterPseudoElementTest.cpp",
@@ -1708,16 +1708,11 @@
     "dom/IdleDeadlineTest.cpp",
     "dom/LayoutTreeBuilderTraversalTest.cpp",
     "dom/LiveNodeListRegistryTest.cpp",
-    "dom/MockScriptElementBase.h",
-    "dom/ModulatorTest.cpp",
-    "dom/ModuleMapTest.cpp",
     "dom/MutationObserverTest.cpp",
     "dom/NodeTest.cpp",
     "dom/NthIndexCacheTest.cpp",
     "dom/PausableObjectTest.cpp",
     "dom/RangeTest.cpp",
-    "dom/ScriptModuleResolverImplTest.cpp",
-    "dom/ScriptRunnerTest.cpp",
     "dom/ScriptedAnimationControllerTest.cpp",
     "dom/ScriptedIdleTaskControllerTest.cpp",
     "dom/ShadowDOMV0Test.cpp",
@@ -2008,6 +2003,12 @@
     "scheduler/FrameThrottlingTest.cpp",
     "scheduler/ThrottlingTest.cpp",
     "scheduler/VirtualTimeTest.cpp",
+    "script/DynamicModuleResolverTest.cpp",
+    "script/MockScriptElementBase.h",
+    "script/ModulatorTest.cpp",
+    "script/ModuleMapTest.cpp",
+    "script/ScriptModuleResolverImplTest.cpp",
+    "script/ScriptRunnerTest.cpp",
     "streams/ReadableStreamOperationsTest.cpp",
     "style/BorderValueTest.cpp",
     "style/ComputedStyleTest.cpp",
diff --git a/third_party/WebKit/Source/core/dom/BUILD.gn b/third_party/WebKit/Source/core/dom/BUILD.gn
index 50ea0f4..d6da73aa 100644
--- a/third_party/WebKit/Source/core/dom/BUILD.gn
+++ b/third_party/WebKit/Source/core/dom/BUILD.gn
@@ -35,10 +35,6 @@
     "ChildNodeList.h",
     "ClassCollection.cpp",
     "ClassCollection.h",
-    "ClassicPendingScript.cpp",
-    "ClassicPendingScript.h",
-    "ClassicScript.cpp",
-    "ClassicScript.h",
     "CollectionIndexCache.h",
     "Comment.cpp",
     "Comment.h",
@@ -82,8 +78,6 @@
     "DocumentInit.h",
     "DocumentLifecycle.cpp",
     "DocumentLifecycle.h",
-    "DocumentModulatorImpl.cpp",
-    "DocumentModulatorImpl.h",
     "DocumentOrShadowRoot.h",
     "DocumentParser.cpp",
     "DocumentParser.h",
@@ -100,10 +94,6 @@
     "DocumentTiming.h",
     "DocumentType.cpp",
     "DocumentType.h",
-    "DocumentWriteIntervention.cpp",
-    "DocumentWriteIntervention.h",
-    "DynamicModuleResolver.cpp",
-    "DynamicModuleResolver.h",
     "Element.cpp",
     "Element.h",
     "ElementData.cpp",
@@ -139,7 +129,6 @@
     "IdTargetObserverRegistry.h",
     "IdleDeadline.cpp",
     "IdleDeadline.h",
-    "IgnoreDestructiveWriteCountIncrementer.h",
     "IncrementLoadEventDelayCount.cpp",
     "IncrementLoadEventDelayCount.h",
     "Iterator.h",
@@ -153,17 +142,6 @@
     "LiveNodeListBase.h",
     "LiveNodeListRegistry.cpp",
     "LiveNodeListRegistry.h",
-    "Modulator.cpp",
-    "Modulator.h",
-    "ModulatorImplBase.cpp",
-    "ModulatorImplBase.h",
-    "ModuleImportMeta.h",
-    "ModuleMap.cpp",
-    "ModuleMap.h",
-    "ModulePendingScript.cpp",
-    "ModulePendingScript.h",
-    "ModuleScript.cpp",
-    "ModuleScript.h",
     "MutationObserver.cpp",
     "MutationObserver.h",
     "MutationObserverInterestGroup.cpp",
@@ -203,8 +181,6 @@
     "ParserContentPolicy.h",
     "PausableObject.cpp",
     "PausableObject.h",
-    "PendingScript.cpp",
-    "PendingScript.h",
     "PresentationAttributeStyle.cpp",
     "PresentationAttributeStyle.h",
     "ProcessingInstruction.cpp",
@@ -223,16 +199,6 @@
     "SandboxFlags.cpp",
     "SandboxFlags.h",
     "ScopedWindowFocusAllowedIndicator.h",
-    "Script.h",
-    "ScriptElementBase.cpp",
-    "ScriptElementBase.h",
-    "ScriptLoader.cpp",
-    "ScriptLoader.h",
-    "ScriptModuleResolver.h",
-    "ScriptModuleResolverImpl.cpp",
-    "ScriptModuleResolverImpl.h",
-    "ScriptRunner.cpp",
-    "ScriptRunner.h",
     "ScriptableDocumentParser.cpp",
     "ScriptableDocumentParser.h",
     "ScriptedAnimationController.cpp",
@@ -293,10 +259,6 @@
     "WeakIdentifierMap.h",
     "WhitespaceAttacher.cpp",
     "WhitespaceAttacher.h",
-    "WorkerModulatorImpl.cpp",
-    "WorkerModulatorImpl.h",
-    "WorkletModulatorImpl.cpp",
-    "WorkletModulatorImpl.h",
     "XMLDocument.cpp",
     "XMLDocument.h",
     "events/AddEventListenerOptionsDefaults.h",
@@ -342,8 +304,6 @@
     "trustedtypes/TrustedURL.h",
   ]
 
-  jumbo_excluded_sources = [ "Modulator.cpp" ]  # https://crbug.com/716395
-
   configs += [
     # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
     "//build/config/compiler:no_size_t_to_int_warning",
diff --git a/third_party/WebKit/Source/core/dom/ContainerNode.cpp b/third_party/WebKit/Source/core/dom/ContainerNode.cpp
index 92c599e..b4e42878 100644
--- a/third_party/WebKit/Source/core/dom/ContainerNode.cpp
+++ b/third_party/WebKit/Source/core/dom/ContainerNode.cpp
@@ -987,43 +987,42 @@
     return false;
 
   // FIXME: What is this code really trying to do?
-  // TODO(xiaochengh): Rename |o| to |runner|.
-  LayoutObject* o = GetLayoutObject();
-  if (!o->IsInline() || o->IsAtomicInlineLevel()) {
-    point = o->LocalToAbsolute(FloatPoint(), kUseTransforms);
+  LayoutObject* runner = GetLayoutObject();
+  if (!runner->IsInline() || runner->IsAtomicInlineLevel()) {
+    point = runner->LocalToAbsolute(FloatPoint(), kUseTransforms);
     return true;
   }
 
   // Find the next text/image child, to get a position.
-  while (o) {
-    const LayoutObject* const previous = o;
-    if (LayoutObject* o_first_child = o->SlowFirstChild()) {
-      o = o_first_child;
-    } else if (o->NextSibling()) {
-      o = o->NextSibling();
+  while (runner) {
+    const LayoutObject* const previous = runner;
+    if (LayoutObject* runner_first_child = runner->SlowFirstChild()) {
+      runner = runner_first_child;
+    } else if (runner->NextSibling()) {
+      runner = runner->NextSibling();
     } else {
       LayoutObject* next = nullptr;
-      while (!next && o->Parent()) {
-        o = o->Parent();
-        next = o->NextSibling();
+      while (!next && runner->Parent()) {
+        runner = runner->Parent();
+        next = runner->NextSibling();
       }
-      o = next;
+      runner = next;
 
-      if (!o)
+      if (!runner)
         break;
     }
-    DCHECK(o);
+    DCHECK(runner);
 
-    if (!o->IsInline() || o->IsAtomicInlineLevel()) {
-      point = o->LocalToAbsolute(FloatPoint(), kUseTransforms);
+    if (!runner->IsInline() || runner->IsAtomicInlineLevel()) {
+      point = runner->LocalToAbsolute(FloatPoint(), kUseTransforms);
       return true;
     }
 
-    if (o->IsText() && !o->IsBR()) {
+    if (runner->IsText() && !runner->IsBR()) {
       const Optional<FloatPoint> maybe_point =
-          ToLayoutText(o)->GetUpperLeftCorner();
+          ToLayoutText(runner)->GetUpperLeftCorner();
       if (maybe_point.has_value()) {
-        point = o->LocalToAbsolute(maybe_point.value(), kUseTransforms);
+        point = runner->LocalToAbsolute(maybe_point.value(), kUseTransforms);
         return true;
       }
       if (previous->GetNode() == this) {
@@ -1033,15 +1032,15 @@
         // whitespace child (because |previous| has moved).
         continue;
       }
-      point = o->LocalToAbsolute(FloatPoint(), kUseTransforms);
+      point = runner->LocalToAbsolute(FloatPoint(), kUseTransforms);
       return true;
     }
 
-    if (o->IsAtomicInlineLevel()) {
-      DCHECK(o->IsBox());
-      LayoutBox* box = ToLayoutBox(o);
+    if (runner->IsAtomicInlineLevel()) {
+      DCHECK(runner->IsBox());
+      LayoutBox* box = ToLayoutBox(runner);
       point = FloatPoint(box->Location());
-      point = o->Container()->LocalToAbsolute(point, kUseTransforms);
+      point = runner->Container()->LocalToAbsolute(point, kUseTransforms);
       return true;
     }
   }
@@ -1050,7 +1049,7 @@
   // calculate the scroll position, we must be at the end of the
   // document. Scroll to the bottom.
   // FIXME: who said anything about scrolling?
-  if (!o && GetDocument().View()) {
+  if (!runner && GetDocument().View()) {
     point = FloatPoint(0, GetDocument().View()->ContentsHeight());
     return true;
   }
diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp
index e9282cea..cf10279b 100644
--- a/third_party/WebKit/Source/core/dom/Document.cpp
+++ b/third_party/WebKit/Source/core/dom/Document.cpp
@@ -89,7 +89,6 @@
 #include "core/dom/NodeWithIndex.h"
 #include "core/dom/NthIndexCache.h"
 #include "core/dom/ProcessingInstruction.h"
-#include "core/dom/ScriptRunner.h"
 #include "core/dom/ScriptedAnimationController.h"
 #include "core/dom/ShadowRoot.h"
 #include "core/dom/StaticNodeList.h"
@@ -208,6 +207,7 @@
 #include "core/policy/DocumentPolicy.h"
 #include "core/probe/CoreProbes.h"
 #include "core/resize_observer/ResizeObserverController.h"
+#include "core/script/ScriptRunner.h"
 #include "core/svg/SVGDocumentExtensions.h"
 #include "core/svg/SVGScriptElement.h"
 #include "core/svg/SVGTitleElement.h"
diff --git a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
index 0d72bea..15282a9 100644
--- a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
+++ b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
@@ -43,7 +43,6 @@
 #include "core/css/resolver/StyleResolver.h"
 #include "core/dom/DOMImplementation.h"
 #include "core/dom/FrameRequestCallbackCollection.h"
-#include "core/dom/Modulator.h"
 #include "core/dom/SandboxFlags.h"
 #include "core/dom/ScriptedIdleTaskController.h"
 #include "core/dom/SinkDocument.h"
@@ -85,6 +84,7 @@
 #include "core/page/Page.h"
 #include "core/page/scrolling/ScrollingCoordinator.h"
 #include "core/probe/CoreProbes.h"
+#include "core/script/Modulator.h"
 #include "core/timing/DOMWindowPerformance.h"
 #include "core/timing/Performance.h"
 #include "platform/EventDispatchForbiddenScope.h"
diff --git a/third_party/WebKit/Source/core/html/HTMLScriptElement.cpp b/third_party/WebKit/Source/core/html/HTMLScriptElement.cpp
index 88db8426..d05302d 100644
--- a/third_party/WebKit/Source/core/html/HTMLScriptElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLScriptElement.cpp
@@ -28,13 +28,13 @@
 #include "bindings/core/v8/html_script_element_or_svg_script_element.h"
 #include "core/dom/Attribute.h"
 #include "core/dom/Document.h"
-#include "core/dom/ScriptLoader.h"
-#include "core/dom/ScriptRunner.h"
 #include "core/dom/Text.h"
 #include "core/dom/events/Event.h"
 #include "core/frame/UseCounter.h"
 #include "core/frame/csp/ContentSecurityPolicy.h"
 #include "core/html_names.h"
+#include "core/script/ScriptLoader.h"
+#include "core/script/ScriptRunner.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/core/html/HTMLScriptElement.h b/third_party/WebKit/Source/core/html/HTMLScriptElement.h
index 27d492e..d0534740 100644
--- a/third_party/WebKit/Source/core/html/HTMLScriptElement.h
+++ b/third_party/WebKit/Source/core/html/HTMLScriptElement.h
@@ -26,9 +26,9 @@
 #define HTMLScriptElement_h
 
 #include "core/CoreExport.h"
-#include "core/dom/ScriptElementBase.h"
-#include "core/dom/ScriptLoader.h"
 #include "core/html/HTMLElement.h"
+#include "core/script/ScriptElementBase.h"
+#include "core/script/ScriptLoader.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/core/html/parser/BUILD.gn b/third_party/WebKit/Source/core/html/parser/BUILD.gn
index 4176253..cbfe6bba 100644
--- a/third_party/WebKit/Source/core/html/parser/BUILD.gn
+++ b/third_party/WebKit/Source/core/html/parser/BUILD.gn
@@ -41,9 +41,6 @@
     "HTMLParserReentryPermit.h",
     "HTMLParserScheduler.cpp",
     "HTMLParserScheduler.h",
-    "HTMLParserScriptRunner.cpp",
-    "HTMLParserScriptRunner.h",
-    "HTMLParserScriptRunnerHost.h",
     "HTMLPreloadScanner.cpp",
     "HTMLPreloadScanner.h",
     "HTMLResourcePreloader.cpp",
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLConstructionSite.cpp b/third_party/WebKit/Source/core/html/parser/HTMLConstructionSite.cpp
index a705f6bc..4d786d26 100644
--- a/third_party/WebKit/Source/core/html/parser/HTMLConstructionSite.cpp
+++ b/third_party/WebKit/Source/core/html/parser/HTMLConstructionSite.cpp
@@ -32,7 +32,6 @@
 #include "core/dom/DocumentType.h"
 #include "core/dom/Element.h"
 #include "core/dom/ElementTraversal.h"
-#include "core/dom/IgnoreDestructiveWriteCountIncrementer.h"
 #include "core/dom/Node.h"
 #include "core/dom/TemplateContentDocumentFragment.h"
 #include "core/dom/Text.h"
@@ -60,6 +59,7 @@
 #include "core/html_element_factory.h"
 #include "core/html_names.h"
 #include "core/loader/FrameLoader.h"
+#include "core/script/IgnoreDestructiveWriteCountIncrementer.h"
 #include "core/svg/SVGScriptElement.h"
 #include "platform/bindings/Microtask.h"
 #include "platform/bindings/V8PerIsolateData.h"
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp b/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp
index 89fa0c6..d494b3deb 100644
--- a/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp
+++ b/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp
@@ -36,7 +36,6 @@
 #include "core/html/parser/AtomicHTMLToken.h"
 #include "core/html/parser/BackgroundHTMLParser.h"
 #include "core/html/parser/HTMLParserScheduler.h"
-#include "core/html/parser/HTMLParserScriptRunner.h"
 #include "core/html/parser/HTMLResourcePreloader.h"
 #include "core/html/parser/HTMLTreeBuilder.h"
 #include "core/html_names.h"
@@ -45,6 +44,7 @@
 #include "core/loader/LinkLoader.h"
 #include "core/loader/NavigationScheduler.h"
 #include "core/probe/CoreProbes.h"
+#include "core/script/HTMLParserScriptRunner.h"
 #include "platform/CrossThreadFunctional.h"
 #include "platform/Histogram.h"
 #include "platform/SharedBuffer.h"
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.h b/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.h
index ed852d6..6995b97c 100644
--- a/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.h
+++ b/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.h
@@ -36,7 +36,6 @@
 #include "core/html/parser/HTMLInputStream.h"
 #include "core/html/parser/HTMLParserOptions.h"
 #include "core/html/parser/HTMLParserReentryPermit.h"
-#include "core/html/parser/HTMLParserScriptRunnerHost.h"
 #include "core/html/parser/HTMLPreloadScanner.h"
 #include "core/html/parser/HTMLSourceTracker.h"
 #include "core/html/parser/HTMLToken.h"
@@ -47,6 +46,7 @@
 #include "core/html/parser/TextResourceDecoder.h"
 #include "core/html/parser/XSSAuditor.h"
 #include "core/html/parser/XSSAuditorDelegate.h"
+#include "core/script/HTMLParserScriptRunnerHost.h"
 #include "platform/bindings/TraceWrapperMember.h"
 #include "platform/wtf/Deque.h"
 #include "platform/wtf/text/TextPosition.h"
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp b/third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp
index f7dfa542..018bf35 100644
--- a/third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp
+++ b/third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp
@@ -33,7 +33,6 @@
 #include "core/css/MediaValuesCached.h"
 #include "core/css/parser/SizesAttributeParser.h"
 #include "core/dom/Document.h"
-#include "core/dom/ScriptLoader.h"
 #include "core/frame/LocalFrame.h"
 #include "core/frame/Settings.h"
 #include "core/html/CrossOriginAttribute.h"
@@ -46,6 +45,7 @@
 #include "core/html_names.h"
 #include "core/input_type_names.h"
 #include "core/loader/LinkLoader.h"
+#include "core/script/ScriptLoader.h"
 #include "platform/Histogram.h"
 #include "platform/instrumentation/tracing/TraceEvent.h"
 #include "platform/loader/SubresourceIntegrity.h"
diff --git a/third_party/WebKit/Source/core/html/parser/PreloadRequest.cpp b/third_party/WebKit/Source/core/html/parser/PreloadRequest.cpp
index 549a41e..27d2c4e 100644
--- a/third_party/WebKit/Source/core/html/parser/PreloadRequest.cpp
+++ b/third_party/WebKit/Source/core/html/parser/PreloadRequest.cpp
@@ -5,9 +5,9 @@
 #include "core/html/parser/PreloadRequest.h"
 
 #include "core/dom/Document.h"
-#include "core/dom/DocumentWriteIntervention.h"
-#include "core/dom/ScriptLoader.h"
 #include "core/loader/DocumentLoader.h"
+#include "core/script/DocumentWriteIntervention.h"
+#include "core/script/ScriptLoader.h"
 #include "platform/CrossOriginAttributeValue.h"
 #include "platform/loader/fetch/FetchInitiatorInfo.h"
 #include "platform/loader/fetch/FetchParameters.h"
diff --git a/third_party/WebKit/Source/core/html/parser/PreloadRequest.h b/third_party/WebKit/Source/core/html/parser/PreloadRequest.h
index f5b2bdb..f4c8a29 100644
--- a/third_party/WebKit/Source/core/html/parser/PreloadRequest.h
+++ b/third_party/WebKit/Source/core/html/parser/PreloadRequest.h
@@ -7,7 +7,7 @@
 
 #include <memory>
 #include "core/CoreExport.h"
-#include "core/dom/Script.h"
+#include "core/script/Script.h"
 #include "platform/CrossOriginAttributeValue.h"
 #include "platform/loader/fetch/ClientHintsPreferences.h"
 #include "platform/loader/fetch/FetchParameters.h"
diff --git a/third_party/WebKit/Source/core/loader/LinkLoader.cpp b/third_party/WebKit/Source/core/loader/LinkLoader.cpp
index cf75c76..49d9abfb 100644
--- a/third_party/WebKit/Source/core/loader/LinkLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/LinkLoader.cpp
@@ -35,8 +35,6 @@
 #include "core/css/MediaList.h"
 #include "core/css/MediaQueryEvaluator.h"
 #include "core/dom/Document.h"
-#include "core/dom/ModuleScript.h"
-#include "core/dom/ScriptLoader.h"
 #include "core/frame/FrameConsole.h"
 #include "core/frame/LocalFrame.h"
 #include "core/frame/Settings.h"
@@ -51,6 +49,8 @@
 #include "core/loader/modulescript/ModuleScriptFetchRequest.h"
 #include "core/loader/private/PrerenderHandle.h"
 #include "core/loader/resource/LinkFetchResource.h"
+#include "core/script/ModuleScript.h"
+#include "core/script/ScriptLoader.h"
 #include "platform/Prerender.h"
 #include "platform/loader/LinkHeader.h"
 #include "platform/loader/SubresourceIntegrity.h"
diff --git a/third_party/WebKit/Source/core/loader/LinkLoader.h b/third_party/WebKit/Source/core/loader/LinkLoader.h
index 202fefc1..71842aa 100644
--- a/third_party/WebKit/Source/core/loader/LinkLoader.h
+++ b/third_party/WebKit/Source/core/loader/LinkLoader.h
@@ -33,8 +33,8 @@
 #define LinkLoader_h
 
 #include "core/CoreExport.h"
-#include "core/dom/Modulator.h"
 #include "core/loader/LinkLoaderClient.h"
+#include "core/script/Modulator.h"
 #include "platform/CrossOriginAttributeValue.h"
 #include "platform/PrerenderClient.h"
 #include "platform/loader/fetch/Resource.h"
diff --git a/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.h b/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.h
index 1ecbd24..be9a12e 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.h
+++ b/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.h
@@ -5,10 +5,10 @@
 #ifndef DocumentModuleScriptFetcher_h
 #define DocumentModuleScriptFetcher_h
 
-#include "core/dom/Modulator.h"
 #include "core/loader/modulescript/ModuleScriptCreationParams.h"
 #include "core/loader/modulescript/ModuleScriptFetcher.h"
 #include "core/loader/resource/ScriptResource.h"
+#include "core/script/Modulator.h"
 #include "platform/loader/fetch/FetchParameters.h"
 #include "platform/loader/fetch/ResourceFetcher.h"
 #include "platform/weborigin/SecurityOrigin.h"
diff --git a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.cpp b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.cpp
index 56c17442..03819b4 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.cpp
@@ -5,14 +5,14 @@
 #include "core/loader/modulescript/ModuleScriptLoader.h"
 
 #include "core/dom/ExecutionContext.h"
-#include "core/dom/Modulator.h"
-#include "core/dom/ModuleScript.h"
 #include "core/inspector/ConsoleMessage.h"
 #include "core/loader/modulescript/DocumentModuleScriptFetcher.h"
 #include "core/loader/modulescript/ModuleScriptFetcher.h"
 #include "core/loader/modulescript/ModuleScriptLoaderClient.h"
 #include "core/loader/modulescript/ModuleScriptLoaderRegistry.h"
 #include "core/loader/modulescript/WorkletModuleScriptFetcher.h"
+#include "core/script/Modulator.h"
+#include "core/script/ModuleScript.h"
 #include "core/workers/MainThreadWorkletGlobalScope.h"
 #include "platform/loader/fetch/Resource.h"
 #include "platform/loader/fetch/ResourceLoaderOptions.h"
diff --git a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoaderTest.cpp b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoaderTest.cpp
index 670925a..c68c1774 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoaderTest.cpp
+++ b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoaderTest.cpp
@@ -7,14 +7,14 @@
 #include "bindings/core/v8/V8BindingForCore.h"
 #include "bindings/core/v8/WorkerOrWorkletScriptController.h"
 #include "core/dom/Document.h"
-#include "core/dom/Modulator.h"
-#include "core/dom/ModuleScript.h"
 #include "core/loader/modulescript/DocumentModuleScriptFetcher.h"
 #include "core/loader/modulescript/ModuleScriptFetchRequest.h"
 #include "core/loader/modulescript/ModuleScriptLoaderClient.h"
 #include "core/loader/modulescript/ModuleScriptLoaderRegistry.h"
 #include "core/loader/modulescript/WorkletModuleScriptFetcher.h"
 #include "core/origin_trials/OriginTrialContext.h"
+#include "core/script/Modulator.h"
+#include "core/script/ModuleScript.h"
 #include "core/testing/DummyModulator.h"
 #include "core/testing/DummyPageHolder.h"
 #include "core/workers/GlobalScopeCreationParams.h"
diff --git a/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinker.cpp b/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinker.cpp
index 07437a17..d658a380 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinker.cpp
+++ b/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinker.cpp
@@ -5,9 +5,9 @@
 #include "core/loader/modulescript/ModuleTreeLinker.h"
 
 #include "bindings/core/v8/ScriptModule.h"
-#include "core/dom/ModuleScript.h"
 #include "core/loader/modulescript/ModuleScriptFetchRequest.h"
 #include "core/loader/modulescript/ModuleTreeLinkerRegistry.h"
+#include "core/script/ModuleScript.h"
 #include "platform/WebTaskRunner.h"
 #include "platform/bindings/V8ThrowException.h"
 #include "platform/loader/fetch/ResourceLoadingLog.h"
diff --git a/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinker.h b/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinker.h
index f0990380..b30c8d83 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinker.h
+++ b/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinker.h
@@ -6,7 +6,7 @@
 #define ModuleTreeLinker_h
 
 #include "core/CoreExport.h"
-#include "core/dom/Modulator.h"
+#include "core/script/Modulator.h"
 #include "platform/bindings/ScriptWrappable.h"
 #include "platform/bindings/TraceWrapperMember.h"
 #include "platform/weborigin/KURL.h"
diff --git a/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinkerTest.cpp b/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinkerTest.cpp
index f34eb99..1098c4f 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinkerTest.cpp
+++ b/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinkerTest.cpp
@@ -7,10 +7,10 @@
 #include "bindings/core/v8/ScriptModule.h"
 #include "bindings/core/v8/V8BindingForCore.h"
 #include "bindings/core/v8/V8BindingForTesting.h"
-#include "core/dom/Modulator.h"
-#include "core/dom/ModuleScript.h"
 #include "core/loader/modulescript/ModuleScriptFetchRequest.h"
 #include "core/loader/modulescript/ModuleTreeLinkerRegistry.h"
+#include "core/script/Modulator.h"
+#include "core/script/ModuleScript.h"
 #include "core/testing/DummyModulator.h"
 #include "core/testing/DummyPageHolder.h"
 #include "platform/bindings/ScriptState.h"
diff --git a/third_party/WebKit/Source/core/script/BUILD.gn b/third_party/WebKit/Source/core/script/BUILD.gn
new file mode 100644
index 0000000..40e5344
--- /dev/null
+++ b/third_party/WebKit/Source/core/script/BUILD.gn
@@ -0,0 +1,63 @@
+# 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.
+
+import("//third_party/WebKit/Source/core/core.gni")
+
+blink_core_sources("script") {
+  split_count = 5
+
+  sources = [
+    "ClassicPendingScript.cpp",
+    "ClassicPendingScript.h",
+    "ClassicScript.cpp",
+    "ClassicScript.h",
+    "DocumentModulatorImpl.cpp",
+    "DocumentModulatorImpl.h",
+    "DocumentWriteIntervention.cpp",
+    "DocumentWriteIntervention.h",
+    "DynamicModuleResolver.cpp",
+    "DynamicModuleResolver.h",
+    "HTMLParserScriptRunner.cpp",
+    "HTMLParserScriptRunner.h",
+    "HTMLParserScriptRunnerHost.h",
+    "IgnoreDestructiveWriteCountIncrementer.h",
+    "Modulator.cpp",
+    "Modulator.h",
+    "ModulatorImplBase.cpp",
+    "ModulatorImplBase.h",
+    "ModuleImportMeta.h",
+    "ModuleMap.cpp",
+    "ModuleMap.h",
+    "ModulePendingScript.cpp",
+    "ModulePendingScript.h",
+    "ModuleScript.cpp",
+    "ModuleScript.h",
+    "PendingScript.cpp",
+    "PendingScript.h",
+    "Script.h",
+    "ScriptElementBase.cpp",
+    "ScriptElementBase.h",
+    "ScriptLoader.cpp",
+    "ScriptLoader.h",
+    "ScriptModuleResolver.h",
+    "ScriptModuleResolverImpl.cpp",
+    "ScriptModuleResolverImpl.h",
+    "ScriptRunner.cpp",
+    "ScriptRunner.h",
+    "WorkerModulatorImpl.cpp",
+    "WorkerModulatorImpl.h",
+    "WorkletModulatorImpl.cpp",
+    "WorkletModulatorImpl.h",
+    "XMLParserScriptRunner.cpp",
+    "XMLParserScriptRunner.h",
+    "XMLParserScriptRunnerHost.h",
+  ]
+
+  jumbo_excluded_sources = [ "Modulator.cpp" ]  # https://crbug.com/716395
+
+  configs += [
+    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
+    "//build/config/compiler:no_size_t_to_int_warning",
+  ]
+}
diff --git a/third_party/WebKit/Source/core/dom/ClassicPendingScript.cpp b/third_party/WebKit/Source/core/script/ClassicPendingScript.cpp
similarity index 98%
rename from third_party/WebKit/Source/core/dom/ClassicPendingScript.cpp
rename to third_party/WebKit/Source/core/script/ClassicPendingScript.cpp
index b3bc75ab..6a477c4e 100644
--- a/third_party/WebKit/Source/core/dom/ClassicPendingScript.cpp
+++ b/third_party/WebKit/Source/core/script/ClassicPendingScript.cpp
@@ -2,18 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/ClassicPendingScript.h"
+#include "core/script/ClassicPendingScript.h"
 
 #include "bindings/core/v8/ScriptSourceCode.h"
 #include "bindings/core/v8/ScriptStreamer.h"
 #include "bindings/core/v8/V8BindingForCore.h"
 #include "core/dom/Document.h"
-#include "core/dom/DocumentWriteIntervention.h"
-#include "core/dom/ScriptLoader.h"
 #include "core/frame/LocalFrame.h"
 #include "core/loader/AllowedByNosniff.h"
 #include "core/loader/SubresourceIntegrityHelper.h"
 #include "core/loader/resource/ScriptResource.h"
+#include "core/script/DocumentWriteIntervention.h"
+#include "core/script/ScriptLoader.h"
 #include "platform/bindings/ScriptState.h"
 #include "platform/loader/fetch/MemoryCache.h"
 #include "public/platform/TaskType.h"
diff --git a/third_party/WebKit/Source/core/dom/ClassicPendingScript.h b/third_party/WebKit/Source/core/script/ClassicPendingScript.h
similarity index 98%
rename from third_party/WebKit/Source/core/dom/ClassicPendingScript.h
rename to third_party/WebKit/Source/core/script/ClassicPendingScript.h
index 0110c6d..3ab5258 100644
--- a/third_party/WebKit/Source/core/dom/ClassicPendingScript.h
+++ b/third_party/WebKit/Source/core/script/ClassicPendingScript.h
@@ -7,9 +7,9 @@
 
 #include "bindings/core/v8/ScriptSourceLocationType.h"
 #include "bindings/core/v8/ScriptStreamer.h"
-#include "core/dom/ClassicScript.h"
-#include "core/dom/PendingScript.h"
 #include "core/loader/resource/ScriptResource.h"
+#include "core/script/ClassicScript.h"
+#include "core/script/PendingScript.h"
 #include "platform/MemoryCoordinator.h"
 #include "platform/loader/fetch/FetchParameters.h"
 
diff --git a/third_party/WebKit/Source/core/dom/ClassicScript.cpp b/third_party/WebKit/Source/core/script/ClassicScript.cpp
similarity index 94%
rename from third_party/WebKit/Source/core/dom/ClassicScript.cpp
rename to third_party/WebKit/Source/core/script/ClassicScript.cpp
index cd3bd9c..adecbb7e 100644
--- a/third_party/WebKit/Source/core/dom/ClassicScript.cpp
+++ b/third_party/WebKit/Source/core/script/ClassicScript.cpp
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/ClassicScript.h"
+#include "core/script/ClassicScript.h"
 
 #include "bindings/core/v8/ScriptController.h"
 #include "core/frame/LocalFrame.h"
diff --git a/third_party/WebKit/Source/core/dom/ClassicScript.h b/third_party/WebKit/Source/core/script/ClassicScript.h
similarity index 97%
rename from third_party/WebKit/Source/core/dom/ClassicScript.h
rename to third_party/WebKit/Source/core/script/ClassicScript.h
index c47ff4fe..a499443 100644
--- a/third_party/WebKit/Source/core/dom/ClassicScript.h
+++ b/third_party/WebKit/Source/core/script/ClassicScript.h
@@ -7,8 +7,8 @@
 
 #include "bindings/core/v8/ScriptSourceCode.h"
 #include "core/CoreExport.h"
-#include "core/dom/Script.h"
 #include "core/loader/resource/ScriptResource.h"
+#include "core/script/Script.h"
 #include "platform/loader/fetch/AccessControlStatus.h"
 #include "platform/loader/fetch/ScriptFetchOptions.h"
 
diff --git a/third_party/WebKit/Source/core/dom/DocumentModulatorImpl.cpp b/third_party/WebKit/Source/core/script/DocumentModulatorImpl.cpp
similarity index 95%
rename from third_party/WebKit/Source/core/dom/DocumentModulatorImpl.cpp
rename to third_party/WebKit/Source/core/script/DocumentModulatorImpl.cpp
index e976576..69ba6b5 100644
--- a/third_party/WebKit/Source/core/dom/DocumentModulatorImpl.cpp
+++ b/third_party/WebKit/Source/core/script/DocumentModulatorImpl.cpp
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/DocumentModulatorImpl.h"
+#include "core/script/DocumentModulatorImpl.h"
 
 #include "core/loader/modulescript/DocumentModuleScriptFetcher.h"
 
diff --git a/third_party/WebKit/Source/core/dom/DocumentModulatorImpl.h b/third_party/WebKit/Source/core/script/DocumentModulatorImpl.h
similarity index 95%
rename from third_party/WebKit/Source/core/dom/DocumentModulatorImpl.h
rename to third_party/WebKit/Source/core/script/DocumentModulatorImpl.h
index 17cf575..06d214e 100644
--- a/third_party/WebKit/Source/core/dom/DocumentModulatorImpl.h
+++ b/third_party/WebKit/Source/core/script/DocumentModulatorImpl.h
@@ -5,7 +5,7 @@
 #ifndef DocumentModulatorImpl_h
 #define DocumentModulatorImpl_h
 
-#include "core/dom/ModulatorImplBase.h"
+#include "core/script/ModulatorImplBase.h"
 
 #include "platform/heap/Handle.h"
 
diff --git a/third_party/WebKit/Source/core/dom/DocumentWriteIntervention.cpp b/third_party/WebKit/Source/core/script/DocumentWriteIntervention.cpp
similarity index 99%
rename from third_party/WebKit/Source/core/dom/DocumentWriteIntervention.cpp
rename to third_party/WebKit/Source/core/script/DocumentWriteIntervention.cpp
index a8850e7b..b98e35f2 100644
--- a/third_party/WebKit/Source/core/dom/DocumentWriteIntervention.cpp
+++ b/third_party/WebKit/Source/core/script/DocumentWriteIntervention.cpp
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/DocumentWriteIntervention.h"
+#include "core/script/DocumentWriteIntervention.h"
 
 #include "core/frame/LocalFrame.h"
 #include "core/frame/LocalFrameClient.h"
diff --git a/third_party/WebKit/Source/core/dom/DocumentWriteIntervention.h b/third_party/WebKit/Source/core/script/DocumentWriteIntervention.h
similarity index 100%
rename from third_party/WebKit/Source/core/dom/DocumentWriteIntervention.h
rename to third_party/WebKit/Source/core/script/DocumentWriteIntervention.h
diff --git a/third_party/WebKit/Source/core/dom/DynamicModuleResolver.cpp b/third_party/WebKit/Source/core/script/DynamicModuleResolver.cpp
similarity index 98%
rename from third_party/WebKit/Source/core/dom/DynamicModuleResolver.cpp
rename to third_party/WebKit/Source/core/script/DynamicModuleResolver.cpp
index d7a8d899..f77299e6 100644
--- a/third_party/WebKit/Source/core/dom/DynamicModuleResolver.cpp
+++ b/third_party/WebKit/Source/core/script/DynamicModuleResolver.cpp
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/DynamicModuleResolver.h"
+#include "core/script/DynamicModuleResolver.h"
 
 #include "bindings/core/v8/ExceptionState.h"
 #include "bindings/core/v8/ReferrerScriptInfo.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
-#include "core/dom/Modulator.h"
-#include "core/dom/ModuleScript.h"
 #include "core/loader/modulescript/ModuleScriptFetchRequest.h"
+#include "core/script/Modulator.h"
+#include "core/script/ModuleScript.h"
 #include "platform/bindings/V8ThrowException.h"
 #include "v8/include/v8.h"
 
diff --git a/third_party/WebKit/Source/core/dom/DynamicModuleResolver.h b/third_party/WebKit/Source/core/script/DynamicModuleResolver.h
similarity index 100%
rename from third_party/WebKit/Source/core/dom/DynamicModuleResolver.h
rename to third_party/WebKit/Source/core/script/DynamicModuleResolver.h
diff --git a/third_party/WebKit/Source/core/dom/DynamicModuleResolverTest.cpp b/third_party/WebKit/Source/core/script/DynamicModuleResolverTest.cpp
similarity index 98%
rename from third_party/WebKit/Source/core/dom/DynamicModuleResolverTest.cpp
rename to third_party/WebKit/Source/core/script/DynamicModuleResolverTest.cpp
index bbedb8c..247bb15b 100644
--- a/third_party/WebKit/Source/core/dom/DynamicModuleResolverTest.cpp
+++ b/third_party/WebKit/Source/core/script/DynamicModuleResolverTest.cpp
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/DynamicModuleResolver.h"
+#include "core/script/DynamicModuleResolver.h"
 
 #include "bindings/core/v8/ReferrerScriptInfo.h"
 #include "bindings/core/v8/ScriptFunction.h"
@@ -11,8 +11,8 @@
 #include "bindings/core/v8/V8BindingForCore.h"
 #include "bindings/core/v8/V8BindingForTesting.h"
 #include "core/dom/Document.h"
-#include "core/dom/ModuleScript.h"
 #include "core/loader/modulescript/ModuleScriptFetchRequest.h"
+#include "core/script/ModuleScript.h"
 #include "core/testing/DummyModulator.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "v8/include/v8.h"
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.cpp b/third_party/WebKit/Source/core/script/HTMLParserScriptRunner.cpp
similarity index 98%
rename from third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.cpp
rename to third_party/WebKit/Source/core/script/HTMLParserScriptRunner.cpp
index bec7fe62..d0d7768 100644
--- a/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.cpp
+++ b/third_party/WebKit/Source/core/script/HTMLParserScriptRunner.cpp
@@ -23,18 +23,18 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "core/html/parser/HTMLParserScriptRunner.h"
+#include "core/script/HTMLParserScriptRunner.h"
 
 #include <inttypes.h>
 #include <memory>
 #include "core/dom/DocumentParserTiming.h"
 #include "core/dom/Element.h"
-#include "core/dom/IgnoreDestructiveWriteCountIncrementer.h"
-#include "core/dom/ScriptLoader.h"
 #include "core/frame/LocalFrame.h"
 #include "core/html/parser/HTMLInputStream.h"
-#include "core/html/parser/HTMLParserScriptRunnerHost.h"
 #include "core/html/parser/NestingLevelIncrementer.h"
+#include "core/script/HTMLParserScriptRunnerHost.h"
+#include "core/script/IgnoreDestructiveWriteCountIncrementer.h"
+#include "core/script/ScriptLoader.h"
 #include "platform/Histogram.h"
 #include "platform/WebFrameScheduler.h"
 #include "platform/bindings/Microtask.h"
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.h b/third_party/WebKit/Source/core/script/HTMLParserScriptRunner.h
similarity index 98%
rename from third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.h
rename to third_party/WebKit/Source/core/script/HTMLParserScriptRunner.h
index 5abe52e..40fc83a 100644
--- a/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.h
+++ b/third_party/WebKit/Source/core/script/HTMLParserScriptRunner.h
@@ -29,8 +29,8 @@
 #include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "bindings/core/v8/ScriptStreamer.h"
-#include "core/dom/PendingScript.h"
 #include "core/html/parser/HTMLParserReentryPermit.h"
+#include "core/script/PendingScript.h"
 #include "platform/bindings/ScriptWrappable.h"
 #include "platform/bindings/TraceWrapperMember.h"
 #include "platform/heap/Handle.h"
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunnerHost.h b/third_party/WebKit/Source/core/script/HTMLParserScriptRunnerHost.h
similarity index 100%
rename from third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunnerHost.h
rename to third_party/WebKit/Source/core/script/HTMLParserScriptRunnerHost.h
diff --git a/third_party/WebKit/Source/core/dom/IgnoreDestructiveWriteCountIncrementer.h b/third_party/WebKit/Source/core/script/IgnoreDestructiveWriteCountIncrementer.h
similarity index 100%
rename from third_party/WebKit/Source/core/dom/IgnoreDestructiveWriteCountIncrementer.h
rename to third_party/WebKit/Source/core/script/IgnoreDestructiveWriteCountIncrementer.h
diff --git a/third_party/WebKit/Source/core/dom/MockScriptElementBase.h b/third_party/WebKit/Source/core/script/MockScriptElementBase.h
similarity index 97%
rename from third_party/WebKit/Source/core/dom/MockScriptElementBase.h
rename to third_party/WebKit/Source/core/script/MockScriptElementBase.h
index e0bcbdb..876c89c 100644
--- a/third_party/WebKit/Source/core/dom/MockScriptElementBase.h
+++ b/third_party/WebKit/Source/core/script/MockScriptElementBase.h
@@ -7,7 +7,7 @@
 
 #include "bindings/core/v8/html_script_element_or_svg_script_element.h"
 #include "core/dom/Document.h"
-#include "core/dom/ScriptElementBase.h"
+#include "core/script/ScriptElementBase.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/core/dom/Modulator.cpp b/third_party/WebKit/Source/core/script/Modulator.cpp
similarity index 95%
rename from third_party/WebKit/Source/core/dom/Modulator.cpp
rename to third_party/WebKit/Source/core/script/Modulator.cpp
index 49749b5..8285beea 100644
--- a/third_party/WebKit/Source/core/dom/Modulator.cpp
+++ b/third_party/WebKit/Source/core/script/Modulator.cpp
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/Modulator.h"
+#include "core/script/Modulator.h"
 
 #include "bindings/core/v8/V8BindingForCore.h"
 #include "core/dom/Document.h"
-#include "core/dom/DocumentModulatorImpl.h"
-#include "core/dom/WorkerModulatorImpl.h"
-#include "core/dom/WorkletModulatorImpl.h"
 #include "core/frame/LocalDOMWindow.h"
 #include "core/frame/LocalFrame.h"
+#include "core/script/DocumentModulatorImpl.h"
+#include "core/script/WorkerModulatorImpl.h"
+#include "core/script/WorkletModulatorImpl.h"
 #include "core/workers/WorkletGlobalScope.h"
 #include "platform/bindings/ScriptState.h"
 #include "platform/bindings/V8PerContextData.h"
diff --git a/third_party/WebKit/Source/core/dom/Modulator.h b/third_party/WebKit/Source/core/script/Modulator.h
similarity index 99%
rename from third_party/WebKit/Source/core/dom/Modulator.h
rename to third_party/WebKit/Source/core/script/Modulator.h
index f0c6c95e..1f14e34 100644
--- a/third_party/WebKit/Source/core/dom/Modulator.h
+++ b/third_party/WebKit/Source/core/script/Modulator.h
@@ -7,7 +7,7 @@
 
 #include "bindings/core/v8/ScriptModule.h"
 #include "core/CoreExport.h"
-#include "core/dom/ModuleImportMeta.h"
+#include "core/script/ModuleImportMeta.h"
 #include "platform/bindings/ScriptWrappable.h"
 #include "platform/bindings/V8PerContextData.h"
 #include "platform/heap/Handle.h"
diff --git a/third_party/WebKit/Source/core/dom/ModulatorImplBase.cpp b/third_party/WebKit/Source/core/script/ModulatorImplBase.cpp
similarity index 97%
rename from third_party/WebKit/Source/core/dom/ModulatorImplBase.cpp
rename to third_party/WebKit/Source/core/script/ModulatorImplBase.cpp
index 0404b803..096090f 100644
--- a/third_party/WebKit/Source/core/dom/ModulatorImplBase.cpp
+++ b/third_party/WebKit/Source/core/script/ModulatorImplBase.cpp
@@ -2,16 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/ModulatorImplBase.h"
+#include "core/script/ModulatorImplBase.h"
 
-#include "core/dom/DynamicModuleResolver.h"
 #include "core/dom/ExecutionContext.h"
-#include "core/dom/ModuleMap.h"
-#include "core/dom/ModuleScript.h"
-#include "core/dom/ScriptModuleResolverImpl.h"
 #include "core/loader/modulescript/ModuleScriptFetchRequest.h"
 #include "core/loader/modulescript/ModuleScriptLoaderRegistry.h"
 #include "core/loader/modulescript/ModuleTreeLinkerRegistry.h"
+#include "core/script/DynamicModuleResolver.h"
+#include "core/script/ModuleMap.h"
+#include "core/script/ModuleScript.h"
+#include "core/script/ScriptModuleResolverImpl.h"
 #include "platform/WebTaskRunner.h"
 #include "public/platform/TaskType.h"
 
diff --git a/third_party/WebKit/Source/core/dom/ModulatorImplBase.h b/third_party/WebKit/Source/core/script/ModulatorImplBase.h
similarity index 98%
rename from third_party/WebKit/Source/core/dom/ModulatorImplBase.h
rename to third_party/WebKit/Source/core/script/ModulatorImplBase.h
index d286d5e..2fd6d03d 100644
--- a/third_party/WebKit/Source/core/dom/ModulatorImplBase.h
+++ b/third_party/WebKit/Source/core/script/ModulatorImplBase.h
@@ -6,7 +6,7 @@
 #define ModulatorImplBase_h
 
 #include "bindings/core/v8/ScriptModule.h"
-#include "core/dom/Modulator.h"
+#include "core/script/Modulator.h"
 #include "platform/bindings/ScriptWrappable.h"
 #include "platform/bindings/TraceWrapperMember.h"
 #include "platform/bindings/V8PerIsolateData.h"
diff --git a/third_party/WebKit/Source/core/dom/ModulatorTest.cpp b/third_party/WebKit/Source/core/script/ModulatorTest.cpp
similarity index 98%
rename from third_party/WebKit/Source/core/dom/ModulatorTest.cpp
rename to third_party/WebKit/Source/core/script/ModulatorTest.cpp
index 4ab6131..a70f82e 100644
--- a/third_party/WebKit/Source/core/dom/ModulatorTest.cpp
+++ b/third_party/WebKit/Source/core/script/ModulatorTest.cpp
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/Modulator.h"
+#include "core/script/Modulator.h"
 
 #include "platform/testing/TestingPlatformSupport.h"
 #include "public/platform/Platform.h"
diff --git a/third_party/WebKit/Source/core/dom/ModuleImportMeta.h b/third_party/WebKit/Source/core/script/ModuleImportMeta.h
similarity index 100%
rename from third_party/WebKit/Source/core/dom/ModuleImportMeta.h
rename to third_party/WebKit/Source/core/script/ModuleImportMeta.h
diff --git a/third_party/WebKit/Source/core/dom/ModuleMap.cpp b/third_party/WebKit/Source/core/script/ModuleMap.cpp
similarity index 97%
rename from third_party/WebKit/Source/core/dom/ModuleMap.cpp
rename to third_party/WebKit/Source/core/script/ModuleMap.cpp
index 19c8649b..10f4f17 100644
--- a/third_party/WebKit/Source/core/dom/ModuleMap.cpp
+++ b/third_party/WebKit/Source/core/script/ModuleMap.cpp
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/ModuleMap.h"
+#include "core/script/ModuleMap.h"
 
-#include "core/dom/Modulator.h"
-#include "core/dom/ModuleScript.h"
 #include "core/loader/modulescript/ModuleScriptFetchRequest.h"
 #include "core/loader/modulescript/ModuleScriptLoaderClient.h"
+#include "core/script/Modulator.h"
+#include "core/script/ModuleScript.h"
 #include "platform/WebTaskRunner.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/core/dom/ModuleMap.h b/third_party/WebKit/Source/core/script/ModuleMap.h
similarity index 100%
rename from third_party/WebKit/Source/core/dom/ModuleMap.h
rename to third_party/WebKit/Source/core/script/ModuleMap.h
diff --git a/third_party/WebKit/Source/core/dom/ModuleMapTest.cpp b/third_party/WebKit/Source/core/script/ModuleMapTest.cpp
similarity index 97%
rename from third_party/WebKit/Source/core/dom/ModuleMapTest.cpp
rename to third_party/WebKit/Source/core/script/ModuleMapTest.cpp
index 7c2ef165..129f80d6 100644
--- a/third_party/WebKit/Source/core/dom/ModuleMapTest.cpp
+++ b/third_party/WebKit/Source/core/script/ModuleMapTest.cpp
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/ModuleMap.h"
+#include "core/script/ModuleMap.h"
 
 #include "core/dom/Document.h"
-#include "core/dom/Modulator.h"
-#include "core/dom/ModuleScript.h"
-#include "core/dom/ScriptModuleResolver.h"
 #include "core/loader/modulescript/ModuleScriptFetchRequest.h"
 #include "core/loader/modulescript/ModuleScriptLoaderClient.h"
+#include "core/script/Modulator.h"
+#include "core/script/ModuleScript.h"
+#include "core/script/ScriptModuleResolver.h"
 #include "core/testing/DummyModulator.h"
 #include "core/testing/DummyPageHolder.h"
 #include "platform/heap/Handle.h"
diff --git a/third_party/WebKit/Source/core/dom/ModulePendingScript.cpp b/third_party/WebKit/Source/core/script/ModulePendingScript.cpp
similarity index 96%
rename from third_party/WebKit/Source/core/dom/ModulePendingScript.cpp
rename to third_party/WebKit/Source/core/script/ModulePendingScript.cpp
index 382f29f5..545d547 100644
--- a/third_party/WebKit/Source/core/dom/ModulePendingScript.cpp
+++ b/third_party/WebKit/Source/core/script/ModulePendingScript.cpp
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/ModulePendingScript.h"
+#include "core/script/ModulePendingScript.h"
 
-#include "core/dom/ScriptLoader.h"
 #include "core/frame/LocalFrame.h"
+#include "core/script/ScriptLoader.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/core/dom/ModulePendingScript.h b/third_party/WebKit/Source/core/script/ModulePendingScript.h
similarity index 96%
rename from third_party/WebKit/Source/core/dom/ModulePendingScript.h
rename to third_party/WebKit/Source/core/script/ModulePendingScript.h
index ed5870d..55d11b3 100644
--- a/third_party/WebKit/Source/core/dom/ModulePendingScript.h
+++ b/third_party/WebKit/Source/core/script/ModulePendingScript.h
@@ -5,9 +5,9 @@
 #ifndef ModulePendingScript_h
 #define ModulePendingScript_h
 
-#include "core/dom/Modulator.h"
-#include "core/dom/ModuleScript.h"
-#include "core/dom/PendingScript.h"
+#include "core/script/Modulator.h"
+#include "core/script/ModuleScript.h"
+#include "core/script/PendingScript.h"
 #include "platform/bindings/ScriptWrappable.h"
 #include "platform/bindings/TraceWrapperMember.h"
 
diff --git a/third_party/WebKit/Source/core/dom/ModuleScript.cpp b/third_party/WebKit/Source/core/script/ModuleScript.cpp
similarity index 98%
rename from third_party/WebKit/Source/core/dom/ModuleScript.cpp
rename to third_party/WebKit/Source/core/script/ModuleScript.cpp
index 47032f1..b5ff8eb 100644
--- a/third_party/WebKit/Source/core/dom/ModuleScript.cpp
+++ b/third_party/WebKit/Source/core/script/ModuleScript.cpp
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/ModuleScript.h"
+#include "core/script/ModuleScript.h"
 
 #include "bindings/core/v8/ScriptValue.h"
-#include "core/dom/ScriptModuleResolver.h"
+#include "core/script/ScriptModuleResolver.h"
 #include "platform/bindings/ScriptState.h"
 #include "v8/include/v8.h"
 
diff --git a/third_party/WebKit/Source/core/dom/ModuleScript.h b/third_party/WebKit/Source/core/script/ModuleScript.h
similarity index 98%
rename from third_party/WebKit/Source/core/dom/ModuleScript.h
rename to third_party/WebKit/Source/core/script/ModuleScript.h
index 46b711f..622cbe9 100644
--- a/third_party/WebKit/Source/core/dom/ModuleScript.h
+++ b/third_party/WebKit/Source/core/script/ModuleScript.h
@@ -8,8 +8,8 @@
 #include "bindings/core/v8/ScriptModule.h"
 #include "bindings/core/v8/ScriptValue.h"
 #include "core/CoreExport.h"
-#include "core/dom/Modulator.h"
-#include "core/dom/Script.h"
+#include "core/script/Modulator.h"
+#include "core/script/Script.h"
 #include "platform/bindings/ScriptWrappable.h"
 #include "platform/bindings/TraceWrapperV8Reference.h"
 #include "platform/heap/Handle.h"
diff --git a/third_party/WebKit/Source/core/dom/PendingScript.cpp b/third_party/WebKit/Source/core/script/PendingScript.cpp
similarity index 97%
rename from third_party/WebKit/Source/core/dom/PendingScript.cpp
rename to third_party/WebKit/Source/core/script/PendingScript.cpp
index 321bc6ec..5607f78 100644
--- a/third_party/WebKit/Source/core/dom/PendingScript.cpp
+++ b/third_party/WebKit/Source/core/script/PendingScript.cpp
@@ -23,9 +23,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "core/dom/PendingScript.h"
+#include "core/script/PendingScript.h"
 
-#include "core/dom/ScriptElementBase.h"
+#include "core/script/ScriptElementBase.h"
 #include "platform/wtf/Time.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/core/dom/PendingScript.h b/third_party/WebKit/Source/core/script/PendingScript.h
similarity index 98%
rename from third_party/WebKit/Source/core/dom/PendingScript.h
rename to third_party/WebKit/Source/core/script/PendingScript.h
index c49cc21..72b6ecb 100644
--- a/third_party/WebKit/Source/core/dom/PendingScript.h
+++ b/third_party/WebKit/Source/core/script/PendingScript.h
@@ -29,8 +29,8 @@
 #include "base/macros.h"
 #include "bindings/core/v8/ScriptStreamer.h"
 #include "core/CoreExport.h"
-#include "core/dom/Script.h"
-#include "core/dom/ScriptElementBase.h"
+#include "core/script/Script.h"
+#include "core/script/ScriptElementBase.h"
 #include "platform/bindings/ScriptWrappable.h"
 #include "platform/heap/Handle.h"
 #include "platform/weborigin/KURL.h"
diff --git a/third_party/WebKit/Source/core/dom/Script.h b/third_party/WebKit/Source/core/script/Script.h
similarity index 100%
rename from third_party/WebKit/Source/core/dom/Script.h
rename to third_party/WebKit/Source/core/script/Script.h
diff --git a/third_party/WebKit/Source/core/dom/ScriptElementBase.cpp b/third_party/WebKit/Source/core/script/ScriptElementBase.cpp
similarity index 94%
rename from third_party/WebKit/Source/core/dom/ScriptElementBase.cpp
rename to third_party/WebKit/Source/core/script/ScriptElementBase.cpp
index 0e896d3e..826db76 100644
--- a/third_party/WebKit/Source/core/dom/ScriptElementBase.cpp
+++ b/third_party/WebKit/Source/core/script/ScriptElementBase.cpp
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/ScriptElementBase.h"
+#include "core/script/ScriptElementBase.h"
 
 #include "core/html/HTMLScriptElement.h"
 #include "core/svg/SVGScriptElement.h"
diff --git a/third_party/WebKit/Source/core/dom/ScriptElementBase.h b/third_party/WebKit/Source/core/script/ScriptElementBase.h
similarity index 100%
rename from third_party/WebKit/Source/core/dom/ScriptElementBase.h
rename to third_party/WebKit/Source/core/script/ScriptElementBase.h
diff --git a/third_party/WebKit/Source/core/dom/ScriptLoader.cpp b/third_party/WebKit/Source/core/script/ScriptLoader.cpp
similarity index 98%
rename from third_party/WebKit/Source/core/dom/ScriptLoader.cpp
rename to third_party/WebKit/Source/core/script/ScriptLoader.cpp
index 3867908..54ecc84 100644
--- a/third_party/WebKit/Source/core/dom/ScriptLoader.cpp
+++ b/third_party/WebKit/Source/core/script/ScriptLoader.cpp
@@ -22,21 +22,13 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "core/dom/ScriptLoader.h"
+#include "core/script/ScriptLoader.h"
 
 #include "bindings/core/v8/ScriptController.h"
 #include "bindings/core/v8/ScriptSourceCode.h"
 #include "bindings/core/v8/V8BindingForCore.h"
-#include "core/dom/ClassicPendingScript.h"
-#include "core/dom/ClassicScript.h"
 #include "core/dom/Document.h"
 #include "core/dom/DocumentParserTiming.h"
-#include "core/dom/IgnoreDestructiveWriteCountIncrementer.h"
-#include "core/dom/Modulator.h"
-#include "core/dom/ModulePendingScript.h"
-#include "core/dom/Script.h"
-#include "core/dom/ScriptElementBase.h"
-#include "core/dom/ScriptRunner.h"
 #include "core/dom/ScriptableDocumentParser.h"
 #include "core/dom/Text.h"
 #include "core/dom/events/Event.h"
@@ -49,6 +41,14 @@
 #include "core/inspector/ConsoleMessage.h"
 #include "core/loader/SubresourceIntegrityHelper.h"
 #include "core/loader/modulescript/ModuleScriptFetchRequest.h"
+#include "core/script/ClassicPendingScript.h"
+#include "core/script/ClassicScript.h"
+#include "core/script/IgnoreDestructiveWriteCountIncrementer.h"
+#include "core/script/Modulator.h"
+#include "core/script/ModulePendingScript.h"
+#include "core/script/Script.h"
+#include "core/script/ScriptElementBase.h"
+#include "core/script/ScriptRunner.h"
 #include "core/svg_names.h"
 #include "platform/WebFrameScheduler.h"
 #include "platform/loader/SubresourceIntegrity.h"
diff --git a/third_party/WebKit/Source/core/dom/ScriptLoader.h b/third_party/WebKit/Source/core/script/ScriptLoader.h
similarity index 98%
rename from third_party/WebKit/Source/core/dom/ScriptLoader.h
rename to third_party/WebKit/Source/core/script/ScriptLoader.h
index 364c83b..e6ef80d1 100644
--- a/third_party/WebKit/Source/core/dom/ScriptLoader.h
+++ b/third_party/WebKit/Source/core/script/ScriptLoader.h
@@ -23,10 +23,10 @@
 
 #include "bindings/core/v8/ScriptSourceLocationType.h"
 #include "core/CoreExport.h"
-#include "core/dom/PendingScript.h"
-#include "core/dom/Script.h"
-#include "core/dom/ScriptRunner.h"
 #include "core/html/CrossOriginAttribute.h"
+#include "core/script/PendingScript.h"
+#include "core/script/Script.h"
+#include "core/script/ScriptRunner.h"
 #include "platform/bindings/ScriptWrappable.h"
 #include "platform/bindings/TraceWrapperMember.h"
 #include "platform/loader/fetch/IntegrityMetadata.h"
diff --git a/third_party/WebKit/Source/core/dom/ScriptModuleResolver.h b/third_party/WebKit/Source/core/script/ScriptModuleResolver.h
similarity index 100%
rename from third_party/WebKit/Source/core/dom/ScriptModuleResolver.h
rename to third_party/WebKit/Source/core/script/ScriptModuleResolver.h
diff --git a/third_party/WebKit/Source/core/dom/ScriptModuleResolverImpl.cpp b/third_party/WebKit/Source/core/script/ScriptModuleResolverImpl.cpp
similarity index 96%
rename from third_party/WebKit/Source/core/dom/ScriptModuleResolverImpl.cpp
rename to third_party/WebKit/Source/core/script/ScriptModuleResolverImpl.cpp
index 26d9bbe..74ff40a 100644
--- a/third_party/WebKit/Source/core/dom/ScriptModuleResolverImpl.cpp
+++ b/third_party/WebKit/Source/core/script/ScriptModuleResolverImpl.cpp
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/ScriptModuleResolverImpl.h"
+#include "core/script/ScriptModuleResolverImpl.h"
 
 #include "bindings/core/v8/ScriptModule.h"
-#include "core/dom/Modulator.h"
-#include "core/dom/ModuleScript.h"
+#include "core/script/Modulator.h"
+#include "core/script/ModuleScript.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/core/dom/ScriptModuleResolverImpl.h b/third_party/WebKit/Source/core/script/ScriptModuleResolverImpl.h
similarity index 97%
rename from third_party/WebKit/Source/core/dom/ScriptModuleResolverImpl.h
rename to third_party/WebKit/Source/core/script/ScriptModuleResolverImpl.h
index fa6ec6e..d879fd2 100644
--- a/third_party/WebKit/Source/core/dom/ScriptModuleResolverImpl.h
+++ b/third_party/WebKit/Source/core/script/ScriptModuleResolverImpl.h
@@ -8,7 +8,7 @@
 #include "bindings/core/v8/ScriptModule.h"
 #include "core/CoreExport.h"
 #include "core/dom/ContextLifecycleObserver.h"
-#include "core/dom/ScriptModuleResolver.h"
+#include "core/script/ScriptModuleResolver.h"
 #include "platform/heap/Handle.h"
 #include "platform/wtf/HashMap.h"
 #include "platform/wtf/text/WTFString.h"
diff --git a/third_party/WebKit/Source/core/dom/ScriptModuleResolverImplTest.cpp b/third_party/WebKit/Source/core/script/ScriptModuleResolverImplTest.cpp
similarity index 97%
rename from third_party/WebKit/Source/core/dom/ScriptModuleResolverImplTest.cpp
rename to third_party/WebKit/Source/core/script/ScriptModuleResolverImplTest.cpp
index 34b1675..1895132 100644
--- a/third_party/WebKit/Source/core/dom/ScriptModuleResolverImplTest.cpp
+++ b/third_party/WebKit/Source/core/script/ScriptModuleResolverImplTest.cpp
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/ScriptModuleResolverImpl.h"
+#include "core/script/ScriptModuleResolverImpl.h"
 
 #include "bindings/core/v8/V8BindingForTesting.h"
 #include "core/dom/ExceptionCode.h"
-#include "core/dom/Modulator.h"
-#include "core/dom/ModuleScript.h"
+#include "core/script/Modulator.h"
+#include "core/script/ModuleScript.h"
 #include "core/testing/DummyModulator.h"
 #include "platform/bindings/ScriptState.h"
 #include "platform/bindings/V8ThrowException.h"
diff --git a/third_party/WebKit/Source/core/dom/ScriptRunner.cpp b/third_party/WebKit/Source/core/script/ScriptRunner.cpp
similarity index 98%
rename from third_party/WebKit/Source/core/dom/ScriptRunner.cpp
rename to third_party/WebKit/Source/core/script/ScriptRunner.cpp
index 842db3c2..4ab4eb9 100644
--- a/third_party/WebKit/Source/core/dom/ScriptRunner.cpp
+++ b/third_party/WebKit/Source/core/script/ScriptRunner.cpp
@@ -23,12 +23,12 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "core/dom/ScriptRunner.h"
+#include "core/script/ScriptRunner.h"
 
 #include <algorithm>
 #include "bindings/core/v8/ScriptStreamer.h"
 #include "core/dom/Document.h"
-#include "core/dom/ScriptLoader.h"
+#include "core/script/ScriptLoader.h"
 #include "platform/heap/Handle.h"
 #include "platform/runtime_enabled_features.h"
 #include "platform/scheduler/child/web_scheduler.h"
diff --git a/third_party/WebKit/Source/core/dom/ScriptRunner.h b/third_party/WebKit/Source/core/script/ScriptRunner.h
similarity index 100%
rename from third_party/WebKit/Source/core/dom/ScriptRunner.h
rename to third_party/WebKit/Source/core/script/ScriptRunner.h
diff --git a/third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp b/third_party/WebKit/Source/core/script/ScriptRunnerTest.cpp
similarity index 99%
rename from third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp
rename to third_party/WebKit/Source/core/script/ScriptRunnerTest.cpp
index 853f7da4..6b50804 100644
--- a/third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp
+++ b/third_party/WebKit/Source/core/script/ScriptRunnerTest.cpp
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/ScriptRunner.h"
+#include "core/script/ScriptRunner.h"
 
-#include "core/dom/MockScriptElementBase.h"
-#include "core/dom/ScriptLoader.h"
+#include "core/script/MockScriptElementBase.h"
+#include "core/script/ScriptLoader.h"
 #include "platform/bindings/RuntimeCallStats.h"
 #include "platform/heap/Handle.h"
 #include "platform/scheduler/renderer/web_view_scheduler.h"
diff --git a/third_party/WebKit/Source/core/dom/WorkerModulatorImpl.cpp b/third_party/WebKit/Source/core/script/WorkerModulatorImpl.cpp
similarity index 96%
rename from third_party/WebKit/Source/core/dom/WorkerModulatorImpl.cpp
rename to third_party/WebKit/Source/core/script/WorkerModulatorImpl.cpp
index fb115c2..e4f448a8 100644
--- a/third_party/WebKit/Source/core/dom/WorkerModulatorImpl.cpp
+++ b/third_party/WebKit/Source/core/script/WorkerModulatorImpl.cpp
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/WorkerModulatorImpl.h"
+#include "core/script/WorkerModulatorImpl.h"
 
 #include "bindings/core/v8/ScriptPromiseResolver.h"
 #include "platform/bindings/V8ThrowException.h"
diff --git a/third_party/WebKit/Source/core/dom/WorkerModulatorImpl.h b/third_party/WebKit/Source/core/script/WorkerModulatorImpl.h
similarity index 96%
rename from third_party/WebKit/Source/core/dom/WorkerModulatorImpl.h
rename to third_party/WebKit/Source/core/script/WorkerModulatorImpl.h
index 8081133b..40bd3d0 100644
--- a/third_party/WebKit/Source/core/dom/WorkerModulatorImpl.h
+++ b/third_party/WebKit/Source/core/script/WorkerModulatorImpl.h
@@ -5,7 +5,7 @@
 #ifndef WorkerModulatorImpl_h
 #define WorkerModulatorImpl_h
 
-#include "core/dom/ModulatorImplBase.h"
+#include "core/script/ModulatorImplBase.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.cpp b/third_party/WebKit/Source/core/script/WorkletModulatorImpl.cpp
similarity index 96%
rename from third_party/WebKit/Source/core/dom/WorkletModulatorImpl.cpp
rename to third_party/WebKit/Source/core/script/WorkletModulatorImpl.cpp
index 28ce38d..11c23a697 100644
--- a/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.cpp
+++ b/third_party/WebKit/Source/core/script/WorkletModulatorImpl.cpp
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/WorkletModulatorImpl.h"
+#include "core/script/WorkletModulatorImpl.h"
 
 #include "bindings/core/v8/ScriptPromiseResolver.h"
 #include "core/loader/modulescript/WorkletModuleScriptFetcher.h"
diff --git a/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.h b/third_party/WebKit/Source/core/script/WorkletModulatorImpl.h
similarity index 96%
rename from third_party/WebKit/Source/core/dom/WorkletModulatorImpl.h
rename to third_party/WebKit/Source/core/script/WorkletModulatorImpl.h
index 721b3cf..3457c5f 100644
--- a/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.h
+++ b/third_party/WebKit/Source/core/script/WorkletModulatorImpl.h
@@ -5,7 +5,7 @@
 #ifndef WorkletModulatorImpl_h
 #define WorkletModulatorImpl_h
 
-#include "core/dom/ModulatorImplBase.h"
+#include "core/script/ModulatorImplBase.h"
 
 #include "platform/heap/Handle.h"
 
diff --git a/third_party/WebKit/Source/core/xml/parser/XMLParserScriptRunner.cpp b/third_party/WebKit/Source/core/script/XMLParserScriptRunner.cpp
similarity index 95%
rename from third_party/WebKit/Source/core/xml/parser/XMLParserScriptRunner.cpp
rename to third_party/WebKit/Source/core/script/XMLParserScriptRunner.cpp
index b08c96e..065516ed 100644
--- a/third_party/WebKit/Source/core/xml/parser/XMLParserScriptRunner.cpp
+++ b/third_party/WebKit/Source/core/script/XMLParserScriptRunner.cpp
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/xml/parser/XMLParserScriptRunner.h"
+#include "core/script/XMLParserScriptRunner.h"
 
-#include "core/dom/ClassicPendingScript.h"
 #include "core/dom/Document.h"
-#include "core/dom/ScriptLoader.h"
 #include "core/inspector/ConsoleMessage.h"
-#include "core/xml/parser/XMLParserScriptRunnerHost.h"
+#include "core/script/ClassicPendingScript.h"
+#include "core/script/ScriptLoader.h"
+#include "core/script/XMLParserScriptRunnerHost.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/core/xml/parser/XMLParserScriptRunner.h b/third_party/WebKit/Source/core/script/XMLParserScriptRunner.h
similarity index 97%
rename from third_party/WebKit/Source/core/xml/parser/XMLParserScriptRunner.h
rename to third_party/WebKit/Source/core/script/XMLParserScriptRunner.h
index 5d9254a5..0f4f6fcc 100644
--- a/third_party/WebKit/Source/core/xml/parser/XMLParserScriptRunner.h
+++ b/third_party/WebKit/Source/core/script/XMLParserScriptRunner.h
@@ -6,7 +6,7 @@
 #define XMLParserScriptRunner_h
 
 #include "base/macros.h"
-#include "core/dom/PendingScript.h"
+#include "core/script/PendingScript.h"
 #include "platform/wtf/text/TextPosition.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/core/xml/parser/XMLParserScriptRunnerHost.h b/third_party/WebKit/Source/core/script/XMLParserScriptRunnerHost.h
similarity index 100%
rename from third_party/WebKit/Source/core/xml/parser/XMLParserScriptRunnerHost.h
rename to third_party/WebKit/Source/core/script/XMLParserScriptRunnerHost.h
diff --git a/third_party/WebKit/Source/core/svg/SVGScriptElement.cpp b/third_party/WebKit/Source/core/svg/SVGScriptElement.cpp
index f6fb3507..edf32155ee 100644
--- a/third_party/WebKit/Source/core/svg/SVGScriptElement.cpp
+++ b/third_party/WebKit/Source/core/svg/SVGScriptElement.cpp
@@ -23,11 +23,11 @@
 #include "bindings/core/v8/ScriptEventListener.h"
 #include "bindings/core/v8/html_script_element_or_svg_script_element.h"
 #include "core/dom/Attribute.h"
-#include "core/dom/ScriptLoader.h"
-#include "core/dom/ScriptRunner.h"
 #include "core/dom/events/Event.h"
 #include "core/frame/csp/ContentSecurityPolicy.h"
 #include "core/html_names.h"
+#include "core/script/ScriptLoader.h"
+#include "core/script/ScriptRunner.h"
 #include "core/xlink_names.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/core/svg/SVGScriptElement.h b/third_party/WebKit/Source/core/svg/SVGScriptElement.h
index a1c420a..660a7b4 100644
--- a/third_party/WebKit/Source/core/svg/SVGScriptElement.h
+++ b/third_party/WebKit/Source/core/svg/SVGScriptElement.h
@@ -21,7 +21,7 @@
 #ifndef SVGScriptElement_h
 #define SVGScriptElement_h
 
-#include "core/dom/ScriptElementBase.h"
+#include "core/script/ScriptElementBase.h"
 #include "core/svg/SVGElement.h"
 #include "core/svg/SVGURIReference.h"
 #include "core/svg_names.h"
diff --git a/third_party/WebKit/Source/core/testing/DummyModulator.cpp b/third_party/WebKit/Source/core/testing/DummyModulator.cpp
index eac9e3b..1cebd79 100644
--- a/third_party/WebKit/Source/core/testing/DummyModulator.cpp
+++ b/third_party/WebKit/Source/core/testing/DummyModulator.cpp
@@ -5,7 +5,7 @@
 #include "core/testing/DummyModulator.h"
 
 #include "bindings/core/v8/ScriptValue.h"
-#include "core/dom/ScriptModuleResolver.h"
+#include "core/script/ScriptModuleResolver.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/core/testing/DummyModulator.h b/third_party/WebKit/Source/core/testing/DummyModulator.h
index c1e04ba..b942bb8 100644
--- a/third_party/WebKit/Source/core/testing/DummyModulator.h
+++ b/third_party/WebKit/Source/core/testing/DummyModulator.h
@@ -6,7 +6,7 @@
 #define DummyModulator_h
 
 #include "bindings/core/v8/ScriptModule.h"
-#include "core/dom/Modulator.h"
+#include "core/script/Modulator.h"
 #include "platform/heap/Handle.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/core/workers/WorkerOrWorkletGlobalScope.cpp b/third_party/WebKit/Source/core/workers/WorkerOrWorkletGlobalScope.cpp
index 070aad70..f71963a 100644
--- a/third_party/WebKit/Source/core/workers/WorkerOrWorkletGlobalScope.cpp
+++ b/third_party/WebKit/Source/core/workers/WorkerOrWorkletGlobalScope.cpp
@@ -6,12 +6,12 @@
 
 #include "bindings/core/v8/V8AbstractEventListener.h"
 #include "bindings/core/v8/WorkerOrWorkletScriptController.h"
-#include "core/dom/Modulator.h"
 #include "core/frame/Deprecation.h"
 #include "core/inspector/ConsoleMessage.h"
 #include "core/loader/WorkerFetchContext.h"
 #include "core/loader/modulescript/ModuleScriptFetchRequest.h"
 #include "core/probe/CoreProbes.h"
+#include "core/script/Modulator.h"
 #include "core/workers/MainThreadWorkletGlobalScope.h"
 #include "core/workers/WorkerReportingProxy.h"
 #include "core/workers/WorkerThread.h"
diff --git a/third_party/WebKit/Source/core/workers/WorkletGlobalScope.cpp b/third_party/WebKit/Source/core/workers/WorkletGlobalScope.cpp
index 02f10b4..41e04fa 100644
--- a/third_party/WebKit/Source/core/workers/WorkletGlobalScope.cpp
+++ b/third_party/WebKit/Source/core/workers/WorkletGlobalScope.cpp
@@ -8,9 +8,9 @@
 #include "bindings/core/v8/ScriptSourceCode.h"
 #include "bindings/core/v8/SourceLocation.h"
 #include "bindings/core/v8/WorkerOrWorkletScriptController.h"
-#include "core/dom/Modulator.h"
 #include "core/inspector/MainThreadDebugger.h"
 #include "core/probe/CoreProbes.h"
+#include "core/script/Modulator.h"
 #include "core/workers/GlobalScopeCreationParams.h"
 #include "core/workers/WorkerReportingProxy.h"
 #include "core/workers/WorkletModuleResponsesMap.h"
diff --git a/third_party/WebKit/Source/core/workers/WorkletModuleTreeClient.cpp b/third_party/WebKit/Source/core/workers/WorkletModuleTreeClient.cpp
index ee6c886..6adb287d 100644
--- a/third_party/WebKit/Source/core/workers/WorkletModuleTreeClient.cpp
+++ b/third_party/WebKit/Source/core/workers/WorkletModuleTreeClient.cpp
@@ -4,7 +4,7 @@
 
 #include "core/workers/WorkletModuleTreeClient.h"
 
-#include "core/dom/ModuleScript.h"
+#include "core/script/ModuleScript.h"
 #include "core/workers/WorkerReportingProxy.h"
 #include "core/workers/WorkletGlobalScope.h"
 #include "platform/CrossThreadFunctional.h"
diff --git a/third_party/WebKit/Source/core/workers/WorkletModuleTreeClient.h b/third_party/WebKit/Source/core/workers/WorkletModuleTreeClient.h
index d7ab7c8..08f4b1f 100644
--- a/third_party/WebKit/Source/core/workers/WorkletModuleTreeClient.h
+++ b/third_party/WebKit/Source/core/workers/WorkletModuleTreeClient.h
@@ -5,7 +5,7 @@
 #ifndef WorkletModuleTreeClient_h
 #define WorkletModuleTreeClient_h
 
-#include "core/dom/Modulator.h"
+#include "core/script/Modulator.h"
 #include "core/workers/WorkletPendingTasks.h"
 #include "platform/WebTaskRunner.h"
 #include "platform/heap/GarbageCollected.h"
diff --git a/third_party/WebKit/Source/core/xml/BUILD.gn b/third_party/WebKit/Source/core/xml/BUILD.gn
index 15bd670..cd7a9126 100644
--- a/third_party/WebKit/Source/core/xml/BUILD.gn
+++ b/third_party/WebKit/Source/core/xml/BUILD.gn
@@ -63,9 +63,6 @@
     "parser/XMLErrors.cpp",
     "parser/XMLErrors.h",
     "parser/XMLParserInput.h",
-    "parser/XMLParserScriptRunner.cpp",
-    "parser/XMLParserScriptRunner.h",
-    "parser/XMLParserScriptRunnerHost.h",
   ]
 
   configs += [
diff --git a/third_party/WebKit/Source/core/xml/parser/XMLDocumentParser.h b/third_party/WebKit/Source/core/xml/parser/XMLDocumentParser.h
index f73b7c55..6e338680 100644
--- a/third_party/WebKit/Source/core/xml/parser/XMLDocumentParser.h
+++ b/third_party/WebKit/Source/core/xml/parser/XMLDocumentParser.h
@@ -30,9 +30,9 @@
 #include <memory>
 #include "core/dom/ParserContentPolicy.h"
 #include "core/dom/ScriptableDocumentParser.h"
+#include "core/script/XMLParserScriptRunner.h"
+#include "core/script/XMLParserScriptRunnerHost.h"
 #include "core/xml/parser/XMLErrors.h"
-#include "core/xml/parser/XMLParserScriptRunner.h"
-#include "core/xml/parser/XMLParserScriptRunnerHost.h"
 #include "platform/heap/Handle.h"
 #include "platform/loader/fetch/ResourceClient.h"
 #include "platform/text/SegmentedString.h"
diff --git a/third_party/WebKit/Source/modules/EventModulesFactory.h b/third_party/WebKit/Source/modules/EventModulesFactory.h
index ab669b4..cc7473a 100644
--- a/third_party/WebKit/Source/modules/EventModulesFactory.h
+++ b/third_party/WebKit/Source/modules/EventModulesFactory.h
@@ -9,7 +9,6 @@
 #include "base/memory/scoped_refptr.h"
 #include "core/events/EventFactory.h"
 #include "platform/heap/Handle.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/AtomicString.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/ModulesInitializer.cpp b/third_party/WebKit/Source/modules/ModulesInitializer.cpp
index 5b1d4a3..46b412b 100644
--- a/third_party/WebKit/Source/modules/ModulesInitializer.cpp
+++ b/third_party/WebKit/Source/modules/ModulesInitializer.cpp
@@ -4,6 +4,9 @@
 
 #include "modules/ModulesInitializer.h"
 
+#include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/modules/v8/ModuleBindingsInitializer.h"
 #include "core/css/CSSPaintImageGenerator.h"
 #include "core/dom/ContextFeaturesClientImpl.h"
@@ -84,7 +87,6 @@
 #include "platform/CrossThreadFunctional.h"
 #include "platform/mojo/MojoHelper.h"
 #include "platform/wtf/Functional.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/InterfaceRegistry.h"
 #include "public/platform/WebSecurityOrigin.h"
 #include "public/web/WebViewClient.h"
@@ -240,7 +242,7 @@
       HTMLMediaElementEncryptedMedia::From(html_media_element);
   WebString sink_id(
       HTMLMediaElementAudioOutputDevice::sinkId(html_media_element));
-  return WTF::WrapUnique(web_frame_client->CreateMediaPlayer(
+  return base::WrapUnique(web_frame_client->CreateMediaPlayer(
       source, media_player_client, &encrypted_media,
       encrypted_media.ContentDecryptionModule(), sink_id, view));
 }
diff --git a/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp b/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp
index a4a7ce70..51589ce6 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp
+++ b/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp
@@ -85,7 +85,6 @@
 #include "modules/accessibility/AXTableRow.h"
 #include "modules/accessibility/AXVirtualObject.h"
 #include "modules/permissions/PermissionUtils.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/TaskType.h"
 #include "public/platform/modules/permissions/permission.mojom-blink.h"
 #include "public/platform/modules/permissions/permission_status.mojom-blink.h"
diff --git a/third_party/WebKit/Source/modules/accessibility/AXRelationCache.cpp b/third_party/WebKit/Source/modules/accessibility/AXRelationCache.cpp
index fb0ca8c..62a4b0d 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXRelationCache.cpp
+++ b/third_party/WebKit/Source/modules/accessibility/AXRelationCache.cpp
@@ -27,6 +27,8 @@
  */
 
 #include "modules/accessibility/AXRelationCache.h"
+
+#include "base/memory/ptr_util.h"
 #include "core/html/forms/HTMLLabelElement.h"
 #include "core/html/forms/LabelableElement.h"
 
@@ -56,7 +58,8 @@
     HashSet<AXID>* source_axids = id_attr_to_related_mapping_.at(target_id);
     if (!source_axids) {
       source_axids = new HashSet<AXID>();
-      id_attr_to_related_mapping_.Set(target_id, WTF::WrapUnique(source_axids));
+      id_attr_to_related_mapping_.Set(target_id,
+                                      base::WrapUnique(source_axids));
     }
     source_axids->insert(relation_source_axid);
   }
diff --git a/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThread.cpp b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThread.cpp
index c1c65da..762529ff 100644
--- a/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThread.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThread.cpp
@@ -5,6 +5,8 @@
 #include "modules/animationworklet/AnimationWorkletThread.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "core/loader/ThreadableLoadingContext.h"
 #include "core/workers/GlobalScopeCreationParams.h"
 #include "core/workers/WorkerBackingThread.h"
@@ -15,7 +17,6 @@
 #include "platform/instrumentation/tracing/TraceEvent.h"
 #include "platform/weborigin/SecurityOrigin.h"
 #include "platform/wtf/Assertions.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 
 namespace blink {
@@ -26,7 +27,7 @@
   TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("animation-worklet"),
                "AnimationWorkletThread::create");
   DCHECK(IsMainThread());
-  return WTF::WrapUnique(
+  return base::WrapUnique(
       new AnimationWorkletThread(loading_context, worker_reporting_proxy));
 }
 
diff --git a/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThreadTest.cpp b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThreadTest.cpp
index fd1493a..80344603 100644
--- a/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThreadTest.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThreadTest.cpp
@@ -28,7 +28,6 @@
 #include "platform/loader/fetch/ResourceLoaderOptions.h"
 #include "platform/testing/TestingPlatformSupport.h"
 #include "platform/testing/UnitTestHelpers.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/TextPosition.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebAddressSpace.h"
diff --git a/third_party/WebKit/Source/modules/app_banner/AppBannerController.cpp b/third_party/WebKit/Source/modules/app_banner/AppBannerController.cpp
index 047469c0..3dc3405e 100644
--- a/third_party/WebKit/Source/modules/app_banner/AppBannerController.cpp
+++ b/third_party/WebKit/Source/modules/app_banner/AppBannerController.cpp
@@ -15,7 +15,6 @@
 #include "platform/weborigin/KURL.h"
 #include "platform/weborigin/Referrer.h"
 #include "platform/weborigin/SecurityPolicy.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/AtomicString.h"
 
 namespace blink {
@@ -27,7 +26,7 @@
     mojom::blink::AppBannerControllerRequest request) {
   DCHECK(frame);
 
-  mojo::MakeStrongBinding(WTF::WrapUnique(new AppBannerController(*frame)),
+  mojo::MakeStrongBinding(std::make_unique<AppBannerController>(*frame),
                           std::move(request));
 }
 
diff --git a/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp b/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp
index b79b210..04de1a5 100644
--- a/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp
+++ b/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp
@@ -11,7 +11,6 @@
 #include "modules/audio_output_devices/AudioOutputDeviceClient.h"
 #include "modules/audio_output_devices/SetSinkIdCallbacks.h"
 #include "platform/bindings/ScriptState.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/TaskType.h"
 #include "public/platform/WebSecurityOrigin.h"
 
@@ -70,7 +69,7 @@
   DCHECK(context);
   DCHECK(context->IsDocument());
   std::unique_ptr<SetSinkIdCallbacks> callbacks =
-      WTF::WrapUnique(new SetSinkIdCallbacks(this, *element_, sink_id_));
+      std::make_unique<SetSinkIdCallbacks>(this, *element_, sink_id_);
   WebMediaPlayer* web_media_player = element_->GetWebMediaPlayer();
   if (web_media_player) {
     // Using release() to transfer ownership because |webMediaPlayer| is a
diff --git a/third_party/WebKit/Source/modules/background_sync/SyncManager.cpp b/third_party/WebKit/Source/modules/background_sync/SyncManager.cpp
index 6b5a333..eb9a07a 100644
--- a/third_party/WebKit/Source/modules/background_sync/SyncManager.cpp
+++ b/third_party/WebKit/Source/modules/background_sync/SyncManager.cpp
@@ -14,7 +14,6 @@
 #include "platform/bindings/ScriptState.h"
 #include "platform/heap/Persistent.h"
 #include "platform/wtf/Functional.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/InterfaceProvider.h"
 #include "public/platform/Platform.h"
 
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTService.cpp b/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTService.cpp
index 0c18b36..b4ed1be 100644
--- a/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTService.cpp
+++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTService.cpp
@@ -14,7 +14,6 @@
 #include "modules/bluetooth/BluetoothError.h"
 #include "modules/bluetooth/BluetoothRemoteGATTCharacteristic.h"
 #include "modules/bluetooth/BluetoothUUID.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/cachestorage/CacheStorage.cpp b/third_party/WebKit/Source/modules/cachestorage/CacheStorage.cpp
index f05adba..bfd496b 100644
--- a/third_party/WebKit/Source/modules/cachestorage/CacheStorage.cpp
+++ b/third_party/WebKit/Source/modules/cachestorage/CacheStorage.cpp
@@ -6,6 +6,8 @@
 
 #include <memory>
 #include <utility>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
 #include "core/dom/DOMException.h"
 #include "core/dom/ExceptionCode.h"
@@ -16,7 +18,6 @@
 #include "modules/fetch/Response.h"
 #include "platform/bindings/ScriptState.h"
 #include "platform/network/http_names.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/modules/cache_storage/cache_storage.mojom-blink.h"
 #include "public/platform/modules/serviceworker/WebServiceWorkerCacheStorage.h"
 
@@ -82,7 +83,7 @@
         resolver_->GetExecutionContext()->IsContextDestroyed())
       return;
     Cache* cache = Cache::Create(cache_storage_->scoped_fetcher_,
-                                 WTF::WrapUnique(web_cache.release()));
+                                 base::WrapUnique(web_cache.release()));
     resolver_->Resolve(cache);
     resolver_.Clear();
   }
diff --git a/third_party/WebKit/Source/modules/cachestorage/CacheTest.cpp b/third_party/WebKit/Source/modules/cachestorage/CacheTest.cpp
index bf9e07c..811600a 100644
--- a/third_party/WebKit/Source/modules/cachestorage/CacheTest.cpp
+++ b/third_party/WebKit/Source/modules/cachestorage/CacheTest.cpp
@@ -7,6 +7,8 @@
 #include <algorithm>
 #include <memory>
 #include <string>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "bindings/core/v8/IDLTypes.h"
 #include "bindings/core/v8/NativeValueTraitsImpl.h"
@@ -27,7 +29,6 @@
 #include "modules/fetch/Request.h"
 #include "modules/fetch/Response.h"
 #include "modules/fetch/ResponseInit.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebURLResponse.h"
 #include "public/platform/modules/cache_storage/cache_storage.mojom-blink.h"
 #include "public/platform/modules/serviceworker/WebServiceWorkerCache.h"
@@ -244,7 +245,7 @@
 
   Cache* CreateCache(ScopedFetcherForTests* fetcher,
                      WebServiceWorkerCache* web_cache) {
-    return Cache::Create(fetcher, WTF::WrapUnique(web_cache));
+    return Cache::Create(fetcher, base::WrapUnique(web_cache));
   }
 
   ScriptState* GetScriptState() {
diff --git a/third_party/WebKit/Source/modules/cachestorage/InspectorCacheStorageAgent.cpp b/third_party/WebKit/Source/modules/cachestorage/InspectorCacheStorageAgent.cpp
index 575fd55..e4d0b4f 100644
--- a/third_party/WebKit/Source/modules/cachestorage/InspectorCacheStorageAgent.cpp
+++ b/third_party/WebKit/Source/modules/cachestorage/InspectorCacheStorageAgent.cpp
@@ -23,7 +23,6 @@
 #include "platform/weborigin/SecurityOrigin.h"
 #include "platform/wtf/Functional.h"
 #include "platform/wtf/Noncopyable.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/RefCounted.h"
 #include "platform/wtf/Time.h"
 #include "platform/wtf/Vector.h"
diff --git a/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2DTest.cpp b/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2DTest.cpp
index b54d2af9..abeb2bbb 100644
--- a/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2DTest.cpp
+++ b/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2DTest.cpp
@@ -32,7 +32,6 @@
 #include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h"
 #include "platform/testing/TestingPlatformSupportWithMockScheduler.h"
 #include "platform/wtf/ByteSwap.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/scheduler/test/renderer_scheduler_test_support.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -252,8 +251,9 @@
 std::unique_ptr<Canvas2DLayerBridge> CanvasRenderingContext2DTest::MakeBridge(
     const IntSize& size,
     Canvas2DLayerBridge::AccelerationMode acceleration_mode) {
-  std::unique_ptr<Canvas2DLayerBridge> bridge = WTF::WrapUnique(
-      new Canvas2DLayerBridge(size, 0, acceleration_mode, CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      std::make_unique<Canvas2DLayerBridge>(size, 0, acceleration_mode,
+                                            CanvasColorParams());
   bridge->SetCanvasResourceHost(canvas_element_);
   return bridge;
 }
diff --git a/third_party/WebKit/Source/modules/clipboard/ClipboardPromise.cpp b/third_party/WebKit/Source/modules/clipboard/ClipboardPromise.cpp
index f1ea1d9..95c2412 100644
--- a/third_party/WebKit/Source/modules/clipboard/ClipboardPromise.cpp
+++ b/third_party/WebKit/Source/modules/clipboard/ClipboardPromise.cpp
@@ -9,33 +9,14 @@
 #include "core/clipboard/DataTransfer.h"
 #include "core/clipboard/DataTransferItem.h"
 #include "core/clipboard/DataTransferItemList.h"
-#include "core/dom/ExecutionContext.h"
-#include "core/frame/LocalFrame.h"
-#include "modules/permissions/PermissionUtils.h"
+#include "platform/CrossThreadFunctional.h"
 #include "platform/clipboard/ClipboardMimeTypes.h"
 #include "public/platform/Platform.h"
 #include "public/platform/TaskType.h"
-#include "public/platform/modules/permissions/permission.mojom-blink.h"
 #include "third_party/WebKit/public/platform/WebClipboard.h"
 
-// And now, a brief note about clipboard permissions.
-//
-// There are 2 clipboard permissions defined in the spec:
-// * clipboard-read
-// * clipboard-write
-// See https://w3c.github.io/clipboard-apis/#clipboard-permissions
-//
-// In Chromium we automatically grant clipboard-write access and clipboard-read
-// access is gated behind a permission prompt. Both clipboard read and write
-// require the tab to be focused (and Chromium must be the foreground app) for
-// the operation to be allowed.
-
 namespace blink {
 
-using mojom::blink::PermissionStatus;
-using mojom::blink::PermissionService;
-using mojom::PageVisibilityState;
-
 ScriptPromise ClipboardPromise::CreateForRead(ScriptState* script_state) {
   ClipboardPromise* clipboard_promise = new ClipboardPromise(script_state);
   clipboard_promise->GetTaskRunner()->PostTask(
@@ -73,84 +54,17 @@
 
 ClipboardPromise::ClipboardPromise(ScriptState* script_state)
     : ContextLifecycleObserver(blink::ExecutionContext::From(script_state)),
-      script_state_(script_state),
       script_promise_resolver_(ScriptPromiseResolver::Create(script_state)),
-      buffer_(mojom::ClipboardBuffer::kStandard),
-      write_data_() {}
+      buffer_(mojom::ClipboardBuffer::kStandard) {}
 
 scoped_refptr<WebTaskRunner> ClipboardPromise::GetTaskRunner() {
   // TODO(garykac): Replace MiscPlatformAPI with TaskType specific to clipboard.
   return GetExecutionContext()->GetTaskRunner(TaskType::kMiscPlatformAPI);
 }
 
-PermissionService* ClipboardPromise::GetPermissionService() {
-  if (!permission_service_) {
-    ConnectToPermissionService(ExecutionContext::From(script_state_),
-                               mojo::MakeRequest(&permission_service_));
-  }
-  return permission_service_.get();
-}
-
-bool ClipboardPromise::IsFocusedDocument(ExecutionContext* context) {
-  DCHECK(context->IsDocument());
-  Document* doc = ToDocumentOrNull(context);
-  return doc && doc->hasFocus();
-}
-
-void ClipboardPromise::RequestReadPermission(
-    PermissionService::RequestPermissionCallback callback) {
-  DCHECK(script_promise_resolver_);
-
-  ExecutionContext* context = ExecutionContext::From(script_state_);
-  DCHECK(context->IsSecureContext());  // [SecureContext] in IDL
-
-  // Document must be focused.
-  if (!IsFocusedDocument(context) || !GetPermissionService()) {
-    script_promise_resolver_->Reject();
-    return;
-  }
-
-  // Query for permission if necessary.
-  // See crbug.com/795929 for moving this check into the Browser process.
-  permission_service_->RequestPermission(
-      CreateClipboardPermissionDescriptor(
-          mojom::blink::PermissionName::CLIPBOARD_READ, false),
-      false, std::move(callback));
-}
-
-void ClipboardPromise::CheckWritePermission(
-    PermissionService::HasPermissionCallback callback) {
-  DCHECK(script_promise_resolver_);
-
-  ExecutionContext* context = ExecutionContext::From(script_state_);
-  DCHECK(context->IsSecureContext());  // [SecureContext] in IDL
-
-  // Document must be focused.
-  if (!IsFocusedDocument(context) || !GetPermissionService()) {
-    script_promise_resolver_->Reject();
-    return;
-  }
-
-  // Check current permission (but do not query the user).
-  // See crbug.com/795929 for moving this check into the Browser process.
-  permission_service_->HasPermission(
-      CreateClipboardPermissionDescriptor(
-          mojom::blink::PermissionName::CLIPBOARD_WRITE, false),
-      std::move(callback));
-}
-
-void ClipboardPromise::HandleRead() {
-  RequestReadPermission(WTF::Bind(&ClipboardPromise::HandleReadWithPermission,
-                                  WrapPersistent(this)));
-}
-
 // TODO(garykac): This currently only handles plain text.
-void ClipboardPromise::HandleReadWithPermission(PermissionStatus status) {
-  if (status != PermissionStatus::GRANTED) {
-    script_promise_resolver_->Reject();
-    return;
-  }
-
+void ClipboardPromise::HandleRead() {
+  DCHECK(script_promise_resolver_);
   String plain_text = Platform::Current()->Clipboard()->ReadPlainText(buffer_);
 
   const DataTransfer::DataTransferType type =
@@ -163,61 +77,32 @@
 }
 
 void ClipboardPromise::HandleReadText() {
-  RequestReadPermission(WTF::Bind(
-      &ClipboardPromise::HandleReadTextWithPermission, WrapPersistent(this)));
-}
-
-void ClipboardPromise::HandleReadTextWithPermission(PermissionStatus status) {
-  if (status != PermissionStatus::GRANTED) {
-    script_promise_resolver_->Reject();
-    return;
-  }
-
+  DCHECK(script_promise_resolver_);
   String text = Platform::Current()->Clipboard()->ReadPlainText(buffer_);
   script_promise_resolver_->Resolve(text);
 }
 
 // TODO(garykac): This currently only handles plain text.
 void ClipboardPromise::HandleWrite(DataTransfer* data) {
-  // Scan DataTransfer and extract data types that we support.
+  DCHECK(script_promise_resolver_);
   size_t num_items = data->items()->length();
   for (unsigned long i = 0; i < num_items; i++) {
     DataTransferItem* item = data->items()->item(i);
     DataObjectItem* objectItem = item->GetDataObjectItem();
     if (objectItem->Kind() == DataObjectItem::kStringKind &&
         objectItem->GetType() == kMimeTypeTextPlain) {
-      write_data_ = objectItem->GetAsString();
-      break;
+      String text = objectItem->GetAsString();
+      Platform::Current()->Clipboard()->WritePlainText(text);
+      script_promise_resolver_->Resolve();
+      return;
     }
   }
-  CheckWritePermission(WTF::Bind(&ClipboardPromise::HandleWriteWithPermission,
-                                 WrapPersistent(this)));
-}
-
-void ClipboardPromise::HandleWriteWithPermission(PermissionStatus status) {
-  if (status != PermissionStatus::GRANTED) {
-    script_promise_resolver_->Reject();
-    return;
-  }
-
-  Platform::Current()->Clipboard()->WritePlainText(write_data_);
-  script_promise_resolver_->Resolve();
+  script_promise_resolver_->Reject();
 }
 
 void ClipboardPromise::HandleWriteText(const String& data) {
-  write_data_ = data;
-  CheckWritePermission(WTF::Bind(
-      &ClipboardPromise::HandleWriteTextWithPermission, WrapPersistent(this)));
-}
-
-void ClipboardPromise::HandleWriteTextWithPermission(PermissionStatus status) {
-  if (status != PermissionStatus::GRANTED) {
-    script_promise_resolver_->Reject();
-    return;
-  }
-
   DCHECK(script_promise_resolver_);
-  Platform::Current()->Clipboard()->WritePlainText(write_data_);
+  Platform::Current()->Clipboard()->WritePlainText(data);
   script_promise_resolver_->Resolve();
 }
 
diff --git a/third_party/WebKit/Source/modules/clipboard/ClipboardPromise.h b/third_party/WebKit/Source/modules/clipboard/ClipboardPromise.h
index b4aa20e..8b0c254 100644
--- a/third_party/WebKit/Source/modules/clipboard/ClipboardPromise.h
+++ b/third_party/WebKit/Source/modules/clipboard/ClipboardPromise.h
@@ -8,7 +8,6 @@
 #include "bindings/core/v8/ScriptPromise.h"
 #include "core/CoreExport.h"
 #include "core/dom/ContextLifecycleObserver.h"
-#include "public/platform/modules/permissions/permission.mojom-blink.h"
 #include "third_party/WebKit/common/clipboard/clipboard.mojom-blink.h"
 
 namespace blink {
@@ -36,36 +35,16 @@
   ClipboardPromise(ScriptState*);
 
   scoped_refptr<WebTaskRunner> GetTaskRunner();
-  mojom::blink::PermissionService* GetPermissionService();
-
-  bool IsFocusedDocument(ExecutionContext*);
-
-  void RequestReadPermission(
-      mojom::blink::PermissionService::RequestPermissionCallback);
-  void CheckWritePermission(
-      mojom::blink::PermissionService::HasPermissionCallback);
 
   void HandleRead();
-  void HandleReadWithPermission(mojom::blink::PermissionStatus);
-
   void HandleReadText();
-  void HandleReadTextWithPermission(mojom::blink::PermissionStatus);
 
   void HandleWrite(DataTransfer*);
-  void HandleWriteWithPermission(mojom::blink::PermissionStatus);
-
   void HandleWriteText(const String&);
-  void HandleWriteTextWithPermission(mojom::blink::PermissionStatus);
-
-  ScriptState* script_state_;
 
   Member<ScriptPromiseResolver> script_promise_resolver_;
 
-  mojom::blink::PermissionServicePtr permission_service_;
-
   mojom::ClipboardBuffer buffer_;
-
-  WebString write_data_;
 };
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/modules/credentialmanager/CredentialsContainer.cpp b/third_party/WebKit/Source/modules/credentialmanager/CredentialsContainer.cpp
index 09a7185..78c9117 100644
--- a/third_party/WebKit/Source/modules/credentialmanager/CredentialsContainer.cpp
+++ b/third_party/WebKit/Source/modules/credentialmanager/CredentialsContainer.cpp
@@ -32,7 +32,6 @@
 #include "platform/credentialmanager/PlatformFederatedCredential.h"
 #include "platform/credentialmanager/PlatformPasswordCredential.h"
 #include "platform/weborigin/SecurityOrigin.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebCredential.h"
 #include "public/platform/WebCredentialManagerClient.h"
diff --git a/third_party/WebKit/Source/modules/crypto/NormalizeAlgorithm.cpp b/third_party/WebKit/Source/modules/crypto/NormalizeAlgorithm.cpp
index 5187ec1..e97a0de 100644
--- a/third_party/WebKit/Source/modules/crypto/NormalizeAlgorithm.cpp
+++ b/third_party/WebKit/Source/modules/crypto/NormalizeAlgorithm.cpp
@@ -41,7 +41,6 @@
 #include "core/typed_arrays/DOMTypedArray.h"
 #include "modules/crypto/CryptoUtilities.h"
 #include "platform/wtf/MathExtras.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Vector.h"
 #include "platform/wtf/text/StringBuilder.h"
 #include "public/platform/WebCryptoAlgorithmParams.h"
@@ -514,7 +513,7 @@
   if (!GetBufferSource(raw, "iv", iv, context, error))
     return false;
 
-  params = WTF::WrapUnique(new WebCryptoAesCbcParams(std::move(iv)));
+  params = std::make_unique<WebCryptoAesCbcParams>(std::move(iv));
   return true;
 }
 
@@ -647,8 +646,8 @@
   if (!ParseHash(raw, hash, context, error))
     return false;
 
-  params = WTF::WrapUnique(new WebCryptoRsaHashedKeyGenParams(
-      hash, modulus_length, std::move(public_exponent)));
+  params = std::make_unique<WebCryptoRsaHashedKeyGenParams>(
+      hash, modulus_length, std::move(public_exponent));
   return true;
 }
 
@@ -670,8 +669,7 @@
   if (!GetUint8(raw, "length", length, context, error))
     return false;
 
-  params =
-      WTF::WrapUnique(new WebCryptoAesCtrParams(length, std::move(counter)));
+  params = std::make_unique<WebCryptoAesCtrParams>(length, std::move(counter));
   return true;
 }
 
@@ -702,9 +700,9 @@
                         error))
     return false;
 
-  params = WTF::WrapUnique(new WebCryptoAesGcmParams(
+  params = std::make_unique<WebCryptoAesGcmParams>(
       std::move(iv), has_additional_data, std::move(additional_data),
-      has_tag_length, tag_length));
+      has_tag_length, tag_length);
   return true;
 }
 
@@ -723,7 +721,7 @@
     return false;
 
   params =
-      WTF::WrapUnique(new WebCryptoRsaOaepParams(has_label, std::move(label)));
+      std::make_unique<WebCryptoRsaOaepParams>(has_label, std::move(label));
   return true;
 }
 
@@ -855,7 +853,7 @@
     return false;
   }
 
-  params = WTF::WrapUnique(new WebCryptoEcdhKeyDeriveParams(crypto_key->Key()));
+  params = std::make_unique<WebCryptoEcdhKeyDeriveParams>(crypto_key->Key());
   return true;
 }
 
@@ -881,8 +879,8 @@
   WebCryptoAlgorithm hash;
   if (!ParseHash(raw, hash, context, error))
     return false;
-  params = WTF::WrapUnique(
-      new WebCryptoPbkdf2Params(hash, std::move(salt), iterations));
+  params = std::make_unique<WebCryptoPbkdf2Params>(hash, std::move(salt),
+                                                   iterations);
   return true;
 }
 
@@ -924,8 +922,8 @@
   if (!GetBufferSource(raw, "info", info, context, error))
     return false;
 
-  params = WTF::WrapUnique(
-      new WebCryptoHkdfParams(hash, std::move(salt), std::move(info)));
+  params = std::make_unique<WebCryptoHkdfParams>(hash, std::move(salt),
+                                                 std::move(info));
   return true;
 }
 
diff --git a/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp b/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp
index 8b46a04..f3503615 100644
--- a/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp
+++ b/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp
@@ -4,6 +4,7 @@
 
 #include "modules/csspaint/CSSPaintDefinition.h"
 
+#include <memory>
 #include "bindings/core/v8/V8BindingForCore.h"
 #include "core/css/CSSComputedStyleDeclaration.h"
 #include "core/css/cssom/FilteredComputedStylePropertyMap.h"
@@ -15,7 +16,6 @@
 #include "platform/bindings/V8BindingMacros.h"
 #include "platform/bindings/V8ObjectConstructor.h"
 #include "platform/graphics/PaintGeneratedImage.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySession.cpp b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySession.cpp
index 0594649..ba16c6f 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySession.cpp
+++ b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySession.cpp
@@ -47,7 +47,6 @@
 #include "platform/bindings/V8ThrowException.h"
 #include "platform/network/mime/ContentType.h"
 #include "platform/wtf/ASCIICType.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/TaskType.h"
 #include "public/platform/WebContentDecryptionModule.h"
 #include "public/platform/WebContentDecryptionModuleException.h"
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySystemAccess.cpp b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySystemAccess.cpp
index 3bc8a813..e7d2ae5 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySystemAccess.cpp
+++ b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySystemAccess.cpp
@@ -5,6 +5,8 @@
 #include "modules/encryptedmedia/MediaKeySystemAccess.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
 #include "core/dom/DOMException.h"
 #include "modules/encryptedmedia/ContentDecryptionModuleResultPromise.h"
@@ -14,7 +16,6 @@
 #include "modules/encryptedmedia/MediaKeysController.h"
 #include "platform/Timer.h"
 #include "platform/bindings/ScriptState.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebContentDecryptionModule.h"
 #include "public/platform/WebEncryptedMediaTypes.h"
 #include "public/platform/WebMediaKeySystemConfiguration.h"
@@ -51,7 +52,7 @@
 
     // 2.9. Let media keys be a new MediaKeys object.
     MediaKeys* media_keys = MediaKeys::Create(
-        GetExecutionContext(), supported_session_types_, WTF::WrapUnique(cdm));
+        GetExecutionContext(), supported_session_types_, base::WrapUnique(cdm));
 
     // 2.10. Resolve promise with media keys.
     Resolve(media_keys);
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.cpp b/third_party/WebKit/Source/modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.cpp
index 452b219..0737558a 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.cpp
+++ b/third_party/WebKit/Source/modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.cpp
@@ -6,6 +6,7 @@
 
 #include <algorithm>
 
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ScriptPromise.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
 #include "core/dom/DOMException.h"
@@ -24,7 +25,6 @@
 #include "platform/network/ParsedContentType.h"
 #include "platform/network/mime/ContentType.h"
 #include "platform/runtime_enabled_features.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Vector.h"
 #include "platform/wtf/text/WTFString.h"
 #include "public/platform/WebEncryptedMediaClient.h"
@@ -205,7 +205,7 @@
     return;
 
   resolver_->Resolve(
-      new MediaKeySystemAccess(key_system_, WTF::WrapUnique(access)));
+      new MediaKeySystemAccess(key_system_, base::WrapUnique(access)));
   resolver_.Clear();
 }
 
diff --git a/third_party/WebKit/Source/modules/exported/WebEmbeddedWorkerImpl.cpp b/third_party/WebKit/Source/modules/exported/WebEmbeddedWorkerImpl.cpp
index 65a51827..4e7ee19 100644
--- a/third_party/WebKit/Source/modules/exported/WebEmbeddedWorkerImpl.cpp
+++ b/third_party/WebKit/Source/modules/exported/WebEmbeddedWorkerImpl.cpp
@@ -59,7 +59,6 @@
 #include "platform/runtime_enabled_features.h"
 #include "platform/weborigin/SecurityOrigin.h"
 #include "platform/wtf/Functional.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 #include "public/platform/TaskType.h"
 #include "public/platform/WebURLRequest.h"
diff --git a/third_party/WebKit/Source/modules/fetch/BodyStreamBufferTest.cpp b/third_party/WebKit/Source/modules/fetch/BodyStreamBufferTest.cpp
index 6520474..20ea432d 100644
--- a/third_party/WebKit/Source/modules/fetch/BodyStreamBufferTest.cpp
+++ b/third_party/WebKit/Source/modules/fetch/BodyStreamBufferTest.cpp
@@ -15,7 +15,6 @@
 #include "platform/blob/BlobURL.h"
 #include "platform/network/EncodedFormData.h"
 #include "platform/testing/UnitTestHelpers.h"
-#include "platform/wtf/PtrUtil.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/third_party/WebKit/Source/modules/fetch/BytesConsumerForDataConsumerHandleTest.cpp b/third_party/WebKit/Source/modules/fetch/BytesConsumerForDataConsumerHandleTest.cpp
index b1f75e6a..a0e1a470 100644
--- a/third_party/WebKit/Source/modules/fetch/BytesConsumerForDataConsumerHandleTest.cpp
+++ b/third_party/WebKit/Source/modules/fetch/BytesConsumerForDataConsumerHandleTest.cpp
@@ -260,7 +260,7 @@
   // WebDataConsumerHandle::Reader::drainAsBlobDataHandle should return
   // nullptr from the second time, but we don't care that here.
   std::unique_ptr<MockDataConsumerHandle> handle =
-      WTF::WrapUnique(new MockDataConsumerHandle);
+      std::make_unique<MockDataConsumerHandle>();
   Persistent<MockDataConsumerHandle::MockReaderProxy> proxy = handle->Proxy();
   Persistent<BytesConsumer> consumer =
       new BytesConsumerForDataConsumerHandle(&GetDocument(), std::move(handle));
@@ -279,7 +279,7 @@
 
 TEST_F(BytesConsumerForDataConsumerHandleTest, drainAsFormData) {
   std::unique_ptr<MockDataConsumerHandle> handle =
-      WTF::WrapUnique(new MockDataConsumerHandle);
+      std::make_unique<MockDataConsumerHandle>();
   Persistent<MockDataConsumerHandle::MockReaderProxy> proxy = handle->Proxy();
   Persistent<BytesConsumer> consumer =
       new BytesConsumerForDataConsumerHandle(&GetDocument(), std::move(handle));
diff --git a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp
index 2b24688..63685a0 100644
--- a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp
+++ b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp
@@ -7,7 +7,6 @@
 #include <memory>
 #include "platform/bindings/DOMWrapperWorld.h"
 #include "platform/scheduler/child/web_scheduler.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
@@ -29,7 +28,7 @@
     }
   };
   std::unique_ptr<Reader> ObtainReader(Client*) override {
-    return WTF::WrapUnique(new ReaderImpl);
+    return std::make_unique<ReaderImpl>();
   }
 
   const char* DebugName() const override { return "WaitingHandle"; }
@@ -260,7 +259,7 @@
 
 std::unique_ptr<WebDataConsumerHandle>
 DataConsumerHandleTestUtil::CreateWaitingDataConsumerHandle() {
-  return WTF::WrapUnique(new WaitingHandle);
+  return std::make_unique<WaitingHandle>();
 }
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
index 4659e37..9dd8d45 100644
--- a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
+++ b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
@@ -8,6 +8,7 @@
 #include <memory>
 
 #include "base/location.h"
+#include "base/memory/ptr_util.h"
 #include "core/testing/NullExecutionContext.h"
 #include "gin/public/isolate_holder.h"
 #include "platform/WaitableEvent.h"
@@ -16,7 +17,6 @@
 #include "platform/heap/Handle.h"
 #include "platform/wtf/Deque.h"
 #include "platform/wtf/Locker.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/ThreadSafeRefCounted.h"
 #include "platform/wtf/ThreadingPrimitives.h"
 #include "platform/wtf/Vector.h"
@@ -164,8 +164,8 @@
      public:
       ThreadHolder(ThreadingTestBase* test)
           : context_(test->context_),
-            reading_thread_(WTF::WrapUnique(new Thread("reading thread"))),
-            updating_thread_(WTF::WrapUnique(new Thread("updating thread"))) {
+            reading_thread_(std::make_unique<Thread>("reading thread")),
+            updating_thread_(std::make_unique<Thread>("updating thread")) {
         context_->RegisterThreadHolder(this);
       }
       ~ThreadHolder() { context_->UnregisterThreadHolder(); }
@@ -213,7 +213,7 @@
       static std::unique_ptr<WebDataConsumerHandle> Create(
           const String& name,
           scoped_refptr<Context> context) {
-        return WTF::WrapUnique(
+        return base::WrapUnique(
             new DataConsumerHandle(name, std::move(context)));
       }
 
@@ -354,7 +354,7 @@
 
    public:
     static std::unique_ptr<ReplayingHandle> Create() {
-      return WTF::WrapUnique(new ReplayingHandle());
+      return base::WrapUnique(new ReplayingHandle());
     }
     ~ReplayingHandle() override;
 
diff --git a/third_party/WebKit/Source/modules/fetch/FetchDataLoader.cpp b/third_party/WebKit/Source/modules/fetch/FetchDataLoader.cpp
index 8949768..7daac9c9 100644
--- a/third_party/WebKit/Source/modules/fetch/FetchDataLoader.cpp
+++ b/third_party/WebKit/Source/modules/fetch/FetchDataLoader.cpp
@@ -15,7 +15,6 @@
 #include "platform/network/ParsedContentDisposition.h"
 #include "platform/network/http_names.h"
 #include "platform/wtf/Functional.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/StringBuilder.h"
 #include "platform/wtf/text/WTFString.h"
 #include "platform/wtf/typed_arrays/ArrayBufferBuilder.h"
diff --git a/third_party/WebKit/Source/modules/fetch/FetchResponseData.cpp b/third_party/WebKit/Source/modules/fetch/FetchResponseData.cpp
index 9606127..de26234 100644
--- a/third_party/WebKit/Source/modules/fetch/FetchResponseData.cpp
+++ b/third_party/WebKit/Source/modules/fetch/FetchResponseData.cpp
@@ -10,7 +10,6 @@
 #include "platform/bindings/ScriptState.h"
 #include "platform/loader/fetch/FetchUtils.h"
 #include "platform/network/http_names.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/modules/serviceworker/WebServiceWorkerResponse.h"
 
 using Type = network::mojom::FetchResponseType;
@@ -167,7 +166,7 @@
   FetchResponseData* new_response = Create();
   new_response->type_ = type_;
   if (termination_reason_) {
-    new_response->termination_reason_ = WTF::WrapUnique(new TerminationReason);
+    new_response->termination_reason_ = std::make_unique<TerminationReason>();
     *new_response->termination_reason_ = *termination_reason_;
   }
   new_response->SetURLList(url_list_);
diff --git a/third_party/WebKit/Source/modules/fetch/ResponseTest.cpp b/third_party/WebKit/Source/modules/fetch/ResponseTest.cpp
index acb362d..725690b 100644
--- a/third_party/WebKit/Source/modules/fetch/ResponseTest.cpp
+++ b/third_party/WebKit/Source/modules/fetch/ResponseTest.cpp
@@ -18,7 +18,6 @@
 #include "platform/bindings/ScriptState.h"
 #include "platform/blob/BlobData.h"
 #include "platform/testing/UnitTestHelpers.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Vector.h"
 #include "public/platform/modules/fetch/fetch_api_request.mojom-blink.h"
 #include "public/platform/modules/serviceworker/WebServiceWorkerResponse.h"
diff --git a/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.cpp b/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.cpp
index bf6a17c2..5182c15a 100644
--- a/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.cpp
+++ b/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.cpp
@@ -44,7 +44,6 @@
 #include "platform/FileMetadata.h"
 #include "platform/WebTaskRunner.h"
 #include "platform/weborigin/SecurityOrigin.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/StringBuilder.h"
 #include "platform/wtf/text/WTFString.h"
 #include "public/platform/Platform.h"
diff --git a/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.h b/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.h
index 45862e6..2dca524c 100644
--- a/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.h
+++ b/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.h
@@ -39,7 +39,6 @@
 #include "modules/filesystem/DOMFileSystemBase.h"
 #include "modules/filesystem/EntriesCallback.h"
 #include "platform/heap/Handle.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/TaskType.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/filesystem/DOMFileSystemSync.cpp b/third_party/WebKit/Source/modules/filesystem/DOMFileSystemSync.cpp
index 64129ab3..b46d114 100644
--- a/third_party/WebKit/Source/modules/filesystem/DOMFileSystemSync.cpp
+++ b/third_party/WebKit/Source/modules/filesystem/DOMFileSystemSync.cpp
@@ -31,6 +31,8 @@
 #include "modules/filesystem/DOMFileSystemSync.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "core/fileapi/File.h"
 #include "core/fileapi/FileError.h"
@@ -42,7 +44,6 @@
 #include "modules/filesystem/FileWriterBaseCallback.h"
 #include "modules/filesystem/FileWriterSync.h"
 #include "platform/FileMetadata.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebFileSystem.h"
 #include "public/platform/WebFileSystemCallbacks.h"
 
@@ -96,7 +97,7 @@
       const String& name,
       const KURL& url,
       FileSystemType type) {
-    return WTF::WrapUnique(static_cast<AsyncFileSystemCallbacks*>(
+    return base::WrapUnique(static_cast<AsyncFileSystemCallbacks*>(
         new CreateFileHelper(result, name, url, type)));
   }
 
diff --git a/third_party/WebKit/Source/modules/filesystem/FileSystemCallbacks.cpp b/third_party/WebKit/Source/modules/filesystem/FileSystemCallbacks.cpp
index 6076073..2246cd40 100644
--- a/third_party/WebKit/Source/modules/filesystem/FileSystemCallbacks.cpp
+++ b/third_party/WebKit/Source/modules/filesystem/FileSystemCallbacks.cpp
@@ -32,6 +32,7 @@
 
 #include <memory>
 
+#include "base/memory/ptr_util.h"
 #include "core/dom/ExecutionContext.h"
 #include "core/fileapi/File.h"
 #include "core/fileapi/FileError.h"
@@ -52,7 +53,6 @@
 #include "modules/filesystem/Metadata.h"
 #include "modules/filesystem/MetadataCallback.h"
 #include "platform/FileMetadata.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebFileWriter.h"
 
 namespace blink {
@@ -165,9 +165,9 @@
     DOMFileSystemBase* file_system,
     const String& expected_path,
     bool is_directory) {
-  return WTF::WrapUnique(new EntryCallbacks(success_callback, error_callback,
-                                            context, file_system, expected_path,
-                                            is_directory));
+  return base::WrapUnique(new EntryCallbacks(success_callback, error_callback,
+                                             context, file_system,
+                                             expected_path, is_directory));
 }
 
 EntryCallbacks::EntryCallbacks(EntryCallback* success_callback,
@@ -202,7 +202,7 @@
     ExecutionContext* context,
     DirectoryReaderBase* directory_reader,
     const String& base_path) {
-  return WTF::WrapUnique(new EntriesCallbacks(
+  return base::WrapUnique(new EntriesCallbacks(
       success_callback, error_callback, context, directory_reader, base_path));
 }
 
@@ -248,7 +248,7 @@
     ErrorCallbackBase* error_callback,
     ExecutionContext* context,
     FileSystemType type) {
-  return WTF::WrapUnique(
+  return base::WrapUnique(
       new FileSystemCallbacks(success_callback, error_callback, context, type));
 }
 
@@ -274,7 +274,7 @@
     EntryCallback* success_callback,
     ErrorCallbackBase* error_callback,
     ExecutionContext* context) {
-  return WTF::WrapUnique(
+  return base::WrapUnique(
       new ResolveURICallbacks(success_callback, error_callback, context));
 }
 
@@ -317,8 +317,8 @@
     ErrorCallbackBase* error_callback,
     ExecutionContext* context,
     DOMFileSystemBase* file_system) {
-  return WTF::WrapUnique(new MetadataCallbacks(success_callback, error_callback,
-                                               context, file_system));
+  return base::WrapUnique(new MetadataCallbacks(
+      success_callback, error_callback, context, file_system));
 }
 
 MetadataCallbacks::MetadataCallbacks(MetadataCallback* success_callback,
@@ -341,7 +341,7 @@
     FileWriterBaseCallback* success_callback,
     ErrorCallbackBase* error_callback,
     ExecutionContext* context) {
-  return WTF::WrapUnique(new FileWriterBaseCallbacks(
+  return base::WrapUnique(new FileWriterBaseCallbacks(
       file_writer, success_callback, error_callback, context));
 }
 
@@ -372,7 +372,7 @@
     FileCallback* success_callback,
     ErrorCallbackBase* error_callback,
     ExecutionContext* context) {
-  return WTF::WrapUnique(new SnapshotFileCallback(
+  return base::WrapUnique(new SnapshotFileCallback(
       filesystem, name, url, success_callback, error_callback, context));
 }
 
@@ -413,8 +413,8 @@
     ErrorCallbackBase* error_callback,
     ExecutionContext* context,
     DOMFileSystemBase* file_system) {
-  return WTF::WrapUnique(new VoidCallbacks(success_callback, error_callback,
-                                           context, file_system));
+  return base::WrapUnique(new VoidCallbacks(success_callback, error_callback,
+                                            context, file_system));
 }
 
 VoidCallbacks::VoidCallbacks(VoidCallback* success_callback,
diff --git a/third_party/WebKit/Source/modules/filesystem/LocalFileSystemClient.cpp b/third_party/WebKit/Source/modules/filesystem/LocalFileSystemClient.cpp
index 6b34d16..0ed6c19d 100644
--- a/third_party/WebKit/Source/modules/filesystem/LocalFileSystemClient.cpp
+++ b/third_party/WebKit/Source/modules/filesystem/LocalFileSystemClient.cpp
@@ -31,6 +31,8 @@
 #include "modules/filesystem/LocalFileSystemClient.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "core/dom/Document.h"
 #include "core/frame/ContentSettingsClient.h"
 #include "core/frame/LocalFrame.h"
@@ -38,13 +40,12 @@
 #include "core/workers/WorkerGlobalScope.h"
 #include "platform/ContentSettingCallbacks.h"
 #include "platform/weborigin/SecurityOrigin.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/WTFString.h"
 
 namespace blink {
 
 std::unique_ptr<FileSystemClient> LocalFileSystemClient::Create() {
-  return WTF::WrapUnique(
+  return base::WrapUnique(
       static_cast<FileSystemClient*>(new LocalFileSystemClient()));
 }
 
diff --git a/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp b/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
index 7e422ca..742e0b8 100644
--- a/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
+++ b/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
@@ -21,7 +21,6 @@
 #include "modules/mediastream/MediaTrackConstraints.h"
 #include "platform/WaitableEvent.h"
 #include "platform/mojo/MojoHelper.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/InterfaceProvider.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebImageCaptureFrameGrabber.h"
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBObjectStore.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBObjectStore.cpp
index e86000b..66f978eb 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBObjectStore.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBObjectStore.cpp
@@ -45,7 +45,6 @@
 #include "platform/Histogram.h"
 #include "platform/SharedBuffer.h"
 #include "platform/bindings/ScriptState.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebBlobInfo.h"
 #include "public/platform/WebData.h"
 #include "public/platform/modules/indexeddb/WebIDBKey.h"
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBRequest.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBRequest.cpp
index 9bbd418..eb5f100e 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBRequest.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBRequest.cpp
@@ -52,7 +52,6 @@
 #include "platform/Histogram.h"
 #include "platform/SharedBuffer.h"
 #include "platform/heap/Handle.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebBlobInfo.h"
 
 using blink::WebIDBCursor;
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBRequestQueueItem.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBRequestQueueItem.cpp
index c7e5180..283ccf5 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBRequestQueueItem.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBRequestQueueItem.cpp
@@ -12,7 +12,6 @@
 #include "modules/indexeddb/IDBRequest.h"
 #include "modules/indexeddb/IDBRequestLoader.h"
 #include "modules/indexeddb/IDBValue.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/modules/indexeddb/WebIDBCursor.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBTransaction.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBTransaction.cpp
index 4e3a0cf..534f583f 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBTransaction.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBTransaction.cpp
@@ -40,7 +40,6 @@
 #include "modules/indexeddb/IDBTracing.h"
 #include "platform/bindings/ScriptState.h"
 #include "platform/bindings/V8PerIsolateData.h"
-#include "platform/wtf/PtrUtil.h"
 
 #include <memory>
 
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBTransactionTest.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBTransactionTest.cpp
index e2f9c69c..8430709 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBTransactionTest.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBTransactionTest.cpp
@@ -50,7 +50,6 @@
 #include "modules/indexeddb/MockWebIDBDatabase.h"
 #include "platform/SharedBuffer.h"
 #include "platform/testing/TestingPlatformSupport.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebURLLoaderMockFactory.h"
 #include "public/platform/WebURLResponse.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBValue.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBValue.cpp
index 67ee72bd..79237a1 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBValue.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBValue.cpp
@@ -7,9 +7,10 @@
 #include <memory>
 #include <utility>
 
+#include "base/memory/ptr_util.h"
+#include "base/memory/scoped_refptr.h"
 #include "bindings/core/v8/serialization/SerializedScriptValue.h"
 #include "platform/blob/BlobData.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebBlobInfo.h"
 #include "public/platform/modules/indexeddb/WebIDBValue.h"
 #include "v8/include/v8.h"
@@ -72,13 +73,14 @@
 
 std::unique_ptr<IDBValue> IDBValue::Create(const WebIDBValue& value,
                                            v8::Isolate* isolate) {
-  return WTF::WrapUnique(new IDBValue(value, isolate));
+  return base::WrapUnique(new IDBValue(value, isolate));
 }
 
 std::unique_ptr<IDBValue> IDBValue::Create(std::unique_ptr<IDBValue> value,
                                            IDBKey* primary_key,
                                            const IDBKeyPath& key_path) {
-  return WTF::WrapUnique(new IDBValue(std::move(value), primary_key, key_path));
+  return base::WrapUnique(
+      new IDBValue(std::move(value), primary_key, key_path));
 }
 
 std::unique_ptr<IDBValue> IDBValue::Create(
@@ -87,7 +89,7 @@
     Vector<WebBlobInfo> blob_info,
     const IDBKey* primary_key,
     const IDBKeyPath& key_path) {
-  return WTF::WrapUnique(
+  return base::WrapUnique(
       new IDBValue(std::move(unwrapped_data), std::move(blob_data),
                    std::move(blob_info), primary_key, key_path));
 }
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBValueWrappingTest.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBValueWrappingTest.cpp
index 046578c..be3628d 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBValueWrappingTest.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBValueWrappingTest.cpp
@@ -14,7 +14,6 @@
 #include "modules/indexeddb/IDBKey.h"
 #include "modules/indexeddb/IDBKeyPath.h"
 #include "modules/indexeddb/IDBValue.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Vector.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "v8/include/v8.h"
diff --git a/third_party/WebKit/Source/modules/indexeddb/MockWebIDBDatabase.cpp b/third_party/WebKit/Source/modules/indexeddb/MockWebIDBDatabase.cpp
index 75044854..f3dd626b 100644
--- a/third_party/WebKit/Source/modules/indexeddb/MockWebIDBDatabase.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/MockWebIDBDatabase.cpp
@@ -5,7 +5,8 @@
 #include "modules/indexeddb/MockWebIDBDatabase.h"
 
 #include <memory>
-#include "platform/wtf/PtrUtil.h"
+
+#include "base/memory/ptr_util.h"
 
 namespace blink {
 
@@ -14,7 +15,7 @@
 MockWebIDBDatabase::~MockWebIDBDatabase() {}
 
 std::unique_ptr<MockWebIDBDatabase> MockWebIDBDatabase::Create() {
-  return WTF::WrapUnique(new MockWebIDBDatabase());
+  return base::WrapUnique(new MockWebIDBDatabase());
 }
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/modules/indexeddb/WebIDBCallbacksImpl.cpp b/third_party/WebKit/Source/modules/indexeddb/WebIDBCallbacksImpl.cpp
index 222ea79d7..e6a47c7 100644
--- a/third_party/WebKit/Source/modules/indexeddb/WebIDBCallbacksImpl.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/WebIDBCallbacksImpl.cpp
@@ -29,6 +29,8 @@
 #include "modules/indexeddb/WebIDBCallbacksImpl.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "core/dom/DOMException.h"
 #include "core/probe/CoreProbes.h"
 #include "modules/indexed_db_names.h"
@@ -36,7 +38,6 @@
 #include "modules/indexeddb/IDBRequest.h"
 #include "modules/indexeddb/IDBValue.h"
 #include "platform/SharedBuffer.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/modules/indexeddb/WebIDBCursor.h"
 #include "public/platform/modules/indexeddb/WebIDBDatabase.h"
 #include "public/platform/modules/indexeddb/WebIDBDatabaseError.h"
@@ -57,7 +58,7 @@
 // static
 std::unique_ptr<WebIDBCallbacksImpl> WebIDBCallbacksImpl::Create(
     IDBRequest* request) {
-  return WTF::WrapUnique(new WebIDBCallbacksImpl(request));
+  return base::WrapUnique(new WebIDBCallbacksImpl(request));
 }
 
 WebIDBCallbacksImpl::WebIDBCallbacksImpl(IDBRequest* request)
@@ -107,13 +108,13 @@
     return;
 
   probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success");
-  request_->HandleResponse(WTF::WrapUnique(cursor), key, primary_key,
+  request_->HandleResponse(base::WrapUnique(cursor), key, primary_key,
                            IDBValue::Create(value, request_->GetIsolate()));
 }
 
 void WebIDBCallbacksImpl::OnSuccess(WebIDBDatabase* backend,
                                     const WebIDBMetadata& metadata) {
-  std::unique_ptr<WebIDBDatabase> db = WTF::WrapUnique(backend);
+  std::unique_ptr<WebIDBDatabase> db = base::WrapUnique(backend);
   if (request_) {
     probe::AsyncTask async_task(request_->GetExecutionContext(), this,
                                 "success");
@@ -196,7 +197,7 @@
                                           const WebIDBMetadata& metadata,
                                           unsigned short data_loss,
                                           WebString data_loss_message) {
-  std::unique_ptr<WebIDBDatabase> db = WTF::WrapUnique(database);
+  std::unique_ptr<WebIDBDatabase> db = base::WrapUnique(database);
   if (request_) {
     probe::AsyncTask async_task(request_->GetExecutionContext(), this,
                                 "upgradeNeeded");
diff --git a/third_party/WebKit/Source/modules/indexeddb/WebIDBDatabaseCallbacksImpl.cpp b/third_party/WebKit/Source/modules/indexeddb/WebIDBDatabaseCallbacksImpl.cpp
index 5757266b..aa0f941b 100644
--- a/third_party/WebKit/Source/modules/indexeddb/WebIDBDatabaseCallbacksImpl.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/WebIDBDatabaseCallbacksImpl.cpp
@@ -25,17 +25,19 @@
 
 #include "modules/indexeddb/WebIDBDatabaseCallbacksImpl.h"
 
-#include "core/dom/DOMException.h"
-#include "platform/wtf/PtrUtil.h"
-
 #include <memory>
+#include <unordered_map>
+#include <vector>
+
+#include "base/memory/ptr_util.h"
+#include "core/dom/DOMException.h"
 
 namespace blink {
 
 // static
 std::unique_ptr<WebIDBDatabaseCallbacksImpl>
 WebIDBDatabaseCallbacksImpl::Create(IDBDatabaseCallbacks* callbacks) {
-  return WTF::WrapUnique(new WebIDBDatabaseCallbacksImpl(callbacks));
+  return base::WrapUnique(new WebIDBDatabaseCallbacksImpl(callbacks));
 }
 
 WebIDBDatabaseCallbacksImpl::WebIDBDatabaseCallbacksImpl(
diff --git a/third_party/WebKit/Source/modules/installation/InstallationServiceImpl.cpp b/third_party/WebKit/Source/modules/installation/InstallationServiceImpl.cpp
index a8db75a3..f159651 100644
--- a/third_party/WebKit/Source/modules/installation/InstallationServiceImpl.cpp
+++ b/third_party/WebKit/Source/modules/installation/InstallationServiceImpl.cpp
@@ -11,7 +11,6 @@
 #include "core/frame/LocalDOMWindow.h"
 #include "core/frame/LocalFrame.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.cpp b/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.cpp
index d3055bc..926cfb9 100644
--- a/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.cpp
+++ b/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.cpp
@@ -4,6 +4,8 @@
 
 #include "modules/installedapp/NavigatorInstalledApp.h"
 
+#include <memory>
+
 #include "bindings/core/v8/CallbackPromiseAdapter.h"
 #include "bindings/core/v8/ScriptPromise.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
@@ -17,7 +19,6 @@
 #include "modules/installedapp/InstalledAppController.h"
 #include "modules/installedapp/RelatedApplication.h"
 #include "platform/bindings/ScriptState.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/modules/installedapp/WebRelatedApplication.h"
 
 namespace blink {
@@ -91,8 +92,9 @@
     return promise;
   }
 
-  app_controller->GetInstalledRelatedApps(WTF::WrapUnique(
-      new CallbackPromiseAdapter<RelatedAppArray, void>(resolver)));
+  app_controller->GetInstalledRelatedApps(
+      std::make_unique<CallbackPromiseAdapter<RelatedAppArray, void>>(
+          resolver));
   return promise;
 }
 
diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsImplTest.cpp b/third_party/WebKit/Source/modules/media_controls/MediaControlsImplTest.cpp
index 4876a83e2..289e02f6 100644
--- a/third_party/WebKit/Source/modules/media_controls/MediaControlsImplTest.cpp
+++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsImplTest.cpp
@@ -109,7 +109,7 @@
       const WebMediaPlayerSource&,
       WebMediaPlayerClient*,
       WebLayerTreeView*) override {
-    return WTF::WrapUnique(new MockWebMediaPlayerForImpl);
+    return std::make_unique<MockWebMediaPlayerForImpl>();
   }
 
   WebRemotePlaybackClient* CreateWebRemotePlaybackClient(
diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsOrientationLockDelegate.cpp b/third_party/WebKit/Source/modules/media_controls/MediaControlsOrientationLockDelegate.cpp
index e491f5c..a3cdb2e3 100644
--- a/third_party/WebKit/Source/modules/media_controls/MediaControlsOrientationLockDelegate.cpp
+++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsOrientationLockDelegate.cpp
@@ -4,6 +4,8 @@
 
 #include "modules/media_controls/MediaControlsOrientationLockDelegate.h"
 
+#include <memory>
+
 #include "build/build_config.h"
 #include "core/dom/events/Event.h"
 #include "core/frame/LocalDOMWindow.h"
@@ -153,7 +155,7 @@
   locked_orientation_ = ComputeOrientationLock();
   DCHECK_NE(locked_orientation_, kWebScreenOrientationLockDefault);
   controller->lock(locked_orientation_,
-                   WTF::WrapUnique(new DummyScreenOrientationCallback));
+                   std::make_unique<DummyScreenOrientationCallback>());
 
   if (locked_orientation_ == kWebScreenOrientationLockLandscape)
     RecordLockResult(LockResultMetrics::kLandscape);
@@ -171,7 +173,7 @@
   locked_orientation_ = kWebScreenOrientationLockAny;
   ScreenOrientationController::From(*GetDocument().GetFrame())
       ->lock(locked_orientation_,
-             WTF::WrapUnique(new DummyScreenOrientationCallback));
+             std::make_unique<DummyScreenOrientationCallback>());
 }
 
 void MediaControlsOrientationLockDelegate::MaybeUnlockOrientation() {
diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsOrientationLockDelegateTest.cpp b/third_party/WebKit/Source/modules/media_controls/MediaControlsOrientationLockDelegateTest.cpp
index ad1ebf1a..3d4b041 100644
--- a/third_party/WebKit/Source/modules/media_controls/MediaControlsOrientationLockDelegateTest.cpp
+++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsOrientationLockDelegateTest.cpp
@@ -4,6 +4,8 @@
 
 #include "modules/media_controls/MediaControlsOrientationLockDelegate.h"
 
+#include <memory>
+
 #include "core/dom/Document.h"
 #include "core/dom/UserGestureIndicator.h"
 #include "core/frame/FrameView.h"
@@ -190,7 +192,7 @@
     ScreenOrientationController* controller =
         ScreenOrientationController::From(*GetDocument().GetFrame());
     controller->lock(kWebScreenOrientationLockLandscape,
-                     WTF::WrapUnique(new DummyScreenOrientationCallback));
+                     std::make_unique<DummyScreenOrientationCallback>());
     EXPECT_TRUE(controller->MaybeHasActiveLock());
   }
 
diff --git a/third_party/WebKit/Source/modules/mediacapturefromelement/HTMLCanvasElementCapture.cpp b/third_party/WebKit/Source/modules/mediacapturefromelement/HTMLCanvasElementCapture.cpp
index c1d7bcaa..2e71340 100644
--- a/third_party/WebKit/Source/modules/mediacapturefromelement/HTMLCanvasElementCapture.cpp
+++ b/third_party/WebKit/Source/modules/mediacapturefromelement/HTMLCanvasElementCapture.cpp
@@ -9,7 +9,6 @@
 #include "core/html/HTMLCanvasElement.h"
 #include "modules/mediacapturefromelement/CanvasCaptureMediaStreamTrack.h"
 #include "modules/mediastream/MediaStream.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebCanvasCaptureHandler.h"
 #include "public/platform/WebMediaStream.h"
diff --git a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
index 1e4ef4de..587660a 100644
--- a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
+++ b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
@@ -14,7 +14,6 @@
 #include "modules/mediarecorder/BlobEvent.h"
 #include "platform/blob/BlobData.h"
 #include "platform/network/mime/ContentType.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Time.h"
 #include "public/platform/Platform.h"
 #include "public/platform/TaskType.h"
diff --git a/third_party/WebKit/Source/modules/mediasource/MediaSource.cpp b/third_party/WebKit/Source/modules/mediasource/MediaSource.cpp
index ed58b6b..39c57d6 100644
--- a/third_party/WebKit/Source/modules/mediasource/MediaSource.cpp
+++ b/third_party/WebKit/Source/modules/mediasource/MediaSource.cpp
@@ -31,6 +31,8 @@
 #include "modules/mediasource/MediaSource.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ExceptionMessages.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "core/dom/ExceptionCode.h"
@@ -47,7 +49,6 @@
 #include "platform/network/mime/ContentType.h"
 #include "platform/network/mime/MIMETypeRegistry.h"
 #include "platform/runtime_enabled_features.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/CString.h"
 #include "public/platform/WebMediaSource.h"
 #include "public/platform/WebSourceBuffer.h"
@@ -797,7 +798,7 @@
   switch (
       web_media_source_->AddSourceBuffer(type, codecs, &web_source_buffer)) {
     case WebMediaSource::kAddStatusOk:
-      return WTF::WrapUnique(web_source_buffer);
+      return base::WrapUnique(web_source_buffer);
     case WebMediaSource::kAddStatusNotSupported:
       DCHECK(!web_source_buffer);
       // 2.2
diff --git a/third_party/WebKit/Source/modules/mediastream/UserMediaClient.h b/third_party/WebKit/Source/modules/mediastream/UserMediaClient.h
index dfa43ae..be78d46 100644
--- a/third_party/WebKit/Source/modules/mediastream/UserMediaClient.h
+++ b/third_party/WebKit/Source/modules/mediastream/UserMediaClient.h
@@ -33,10 +33,10 @@
 
 #include <memory>
 
+#include "base/memory/ptr_util.h"
 #include "base/memory/scoped_refptr.h"
 #include "modules/ModulesExport.h"
 #include "modules/mediastream/UserMediaClient.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
@@ -50,7 +50,7 @@
 class MODULES_EXPORT UserMediaClient {
  public:
   static std::unique_ptr<UserMediaClient> Create(WebUserMediaClient* client) {
-    return WTF::WrapUnique(new UserMediaClient(client));
+    return base::WrapUnique(new UserMediaClient(client));
   }
 
   void RequestUserMedia(UserMediaRequest*);
diff --git a/third_party/WebKit/Source/modules/notifications/ServiceWorkerRegistrationNotifications.cpp b/third_party/WebKit/Source/modules/notifications/ServiceWorkerRegistrationNotifications.cpp
index 4e134c5..0e6bc67 100644
--- a/third_party/WebKit/Source/modules/notifications/ServiceWorkerRegistrationNotifications.cpp
+++ b/third_party/WebKit/Source/modules/notifications/ServiceWorkerRegistrationNotifications.cpp
@@ -21,7 +21,6 @@
 #include "platform/Histogram.h"
 #include "platform/heap/Handle.h"
 #include "platform/wtf/Assertions.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebSecurityOrigin.h"
 #include "public/platform/modules/notifications/WebNotificationData.h"
@@ -106,7 +105,7 @@
   ScriptPromise promise = resolver->Promise();
 
   std::unique_ptr<WebNotificationShowCallbacks> callbacks =
-      WTF::WrapUnique(new CallbackPromiseAdapter<void, void>(resolver));
+      std::make_unique<CallbackPromiseAdapter<void, void>>(resolver);
   ServiceWorkerRegistrationNotifications::From(execution_context, registration)
       .PrepareShow(data, std::move(callbacks));
 
diff --git a/third_party/WebKit/Source/modules/payments/CanMakePaymentEvent.cpp b/third_party/WebKit/Source/modules/payments/CanMakePaymentEvent.cpp
index b7f4f9c..27cabe52 100644
--- a/third_party/WebKit/Source/modules/payments/CanMakePaymentEvent.cpp
+++ b/third_party/WebKit/Source/modules/payments/CanMakePaymentEvent.cpp
@@ -12,7 +12,6 @@
 #include "modules/serviceworkers/ServiceWorkerGlobalScopeClient.h"
 #include "modules/serviceworkers/ServiceWorkerWindowClientCallback.h"
 #include "platform/bindings/ScriptState.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/AtomicString.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/payments/PaymentRequestEvent.cpp b/third_party/WebKit/Source/modules/payments/PaymentRequestEvent.cpp
index c70f49e..b2f0eb4 100644
--- a/third_party/WebKit/Source/modules/payments/PaymentRequestEvent.cpp
+++ b/third_party/WebKit/Source/modules/payments/PaymentRequestEvent.cpp
@@ -15,7 +15,6 @@
 #include "modules/serviceworkers/ServiceWorkerGlobalScopeClient.h"
 #include "modules/serviceworkers/ServiceWorkerWindowClientCallback.h"
 #include "platform/bindings/ScriptState.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/AtomicString.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCCertificate.cpp b/third_party/WebKit/Source/modules/peerconnection/RTCCertificate.cpp
index 3b7b392..526b688 100644
--- a/third_party/WebKit/Source/modules/peerconnection/RTCCertificate.cpp
+++ b/third_party/WebKit/Source/modules/peerconnection/RTCCertificate.cpp
@@ -30,14 +30,14 @@
 
 #include "modules/peerconnection/RTCCertificate.h"
 
+#include "base/memory/ptr_util.h"
 #include "platform/bindings/ToV8.h"
 #include "platform/bindings/V8Binding.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
 RTCCertificate::RTCCertificate(std::unique_ptr<WebRTCCertificate> certificate)
-    : certificate_(WTF::WrapUnique(certificate.release())) {}
+    : certificate_(base::WrapUnique(certificate.release())) {}
 
 std::unique_ptr<WebRTCCertificate> RTCCertificate::CertificateShallowCopy()
     const {
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCDTMFSender.cpp b/third_party/WebKit/Source/modules/peerconnection/RTCDTMFSender.cpp
index 84c1ac99..f7698c1 100644
--- a/third_party/WebKit/Source/modules/peerconnection/RTCDTMFSender.cpp
+++ b/third_party/WebKit/Source/modules/peerconnection/RTCDTMFSender.cpp
@@ -26,13 +26,14 @@
 #include "modules/peerconnection/RTCDTMFSender.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ExceptionMessages.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/ExecutionContext.h"
 #include "modules/mediastream/MediaStreamTrack.h"
 #include "modules/peerconnection/RTCDTMFToneChangeEvent.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/TaskType.h"
 #include "public/platform/WebMediaStreamTrack.h"
 #include "public/platform/WebRTCDTMFSenderHandler.h"
@@ -51,7 +52,7 @@
     WebRTCPeerConnectionHandler* peer_connection_handler,
     MediaStreamTrack* track,
     ExceptionState& exception_state) {
-  std::unique_ptr<WebRTCDTMFSenderHandler> handler = WTF::WrapUnique(
+  std::unique_ptr<WebRTCDTMFSenderHandler> handler = base::WrapUnique(
       peer_connection_handler->CreateDTMFSender(track->Component()));
   if (!handler) {
     exception_state.ThrowDOMException(kNotSupportedError,
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCDataChannel.cpp b/third_party/WebKit/Source/modules/peerconnection/RTCDataChannel.cpp
index 5363481..89922918 100644
--- a/third_party/WebKit/Source/modules/peerconnection/RTCDataChannel.cpp
+++ b/third_party/WebKit/Source/modules/peerconnection/RTCDataChannel.cpp
@@ -26,6 +26,8 @@
 
 #include <memory>
 #include <utility>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/ExecutionContext.h"
@@ -34,7 +36,6 @@
 #include "core/typed_arrays/DOMArrayBuffer.h"
 #include "core/typed_arrays/DOMArrayBufferView.h"
 #include "modules/peerconnection/RTCPeerConnection.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/TaskType.h"
 #include "public/platform/WebRTCPeerConnectionHandler.h"
 
@@ -71,7 +72,7 @@
     const WebRTCDataChannelInit& init,
     ExceptionState& exception_state) {
   std::unique_ptr<WebRTCDataChannelHandler> handler =
-      WTF::WrapUnique(peer_connection_handler->CreateDataChannel(label, init));
+      base::WrapUnique(peer_connection_handler->CreateDataChannel(label, init));
   if (!handler) {
     exception_state.ThrowDOMException(kNotSupportedError,
                                       "RTCDataChannel is not supported");
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCDataChannelTest.cpp b/third_party/WebKit/Source/modules/peerconnection/RTCDataChannelTest.cpp
index d10f871..32afbffc 100644
--- a/third_party/WebKit/Source/modules/peerconnection/RTCDataChannelTest.cpp
+++ b/third_party/WebKit/Source/modules/peerconnection/RTCDataChannelTest.cpp
@@ -4,7 +4,10 @@
 
 #include "modules/peerconnection/RTCDataChannel.h"
 
+#include <memory>
 #include <string>
+
+#include "base/memory/ptr_util.h"
 #include "base/memory/scoped_refptr.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "core/dom/DOMException.h"
@@ -12,7 +15,6 @@
 #include "core/testing/NullExecutionContext.h"
 #include "core/typed_arrays/DOMArrayBuffer.h"
 #include "platform/heap/Heap.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/WTFString.h"
 #include "public/platform/WebRTCDataChannelHandler.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -77,7 +79,7 @@
 TEST(RTCDataChannelTest, BufferedAmount) {
   MockHandler* handler = new MockHandler();
   RTCDataChannel* channel = RTCDataChannel::Create(new NullExecutionContext,
-                                                   WTF::WrapUnique(handler));
+                                                   base::WrapUnique(handler));
 
   handler->ChangeState(WebRTCDataChannelHandlerClient::kReadyStateOpen);
   String message(std::string(100, 'A').c_str());
@@ -88,7 +90,7 @@
 TEST(RTCDataChannelTest, BufferedAmountLow) {
   MockHandler* handler = new MockHandler();
   RTCDataChannel* channel = RTCDataChannel::Create(new NullExecutionContext,
-                                                   WTF::WrapUnique(handler));
+                                                   base::WrapUnique(handler));
 
   // Add and drain 100 bytes
   handler->ChangeState(WebRTCDataChannelHandlerClient::kReadyStateOpen);
@@ -152,7 +154,7 @@
 TEST(RTCDataChannelTest, SendAfterContextDestroyed) {
   MockHandler* handler = new MockHandler();
   RTCDataChannel* channel = RTCDataChannel::Create(new NullExecutionContext,
-                                                   WTF::WrapUnique(handler));
+                                                   base::WrapUnique(handler));
   handler->ChangeState(WebRTCDataChannelHandlerClient::kReadyStateOpen);
   channel->ContextDestroyed(nullptr);
 
@@ -166,7 +168,7 @@
 TEST(RTCDataChannelTest, CloseAfterContextDestroyed) {
   MockHandler* handler = new MockHandler();
   RTCDataChannel* channel = RTCDataChannel::Create(new NullExecutionContext,
-                                                   WTF::WrapUnique(handler));
+                                                   base::WrapUnique(handler));
   handler->ChangeState(WebRTCDataChannelHandlerClient::kReadyStateOpen);
   channel->ContextDestroyed(nullptr);
   channel->close();
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
index 584d735b..dca61cf7 100644
--- a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
+++ b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
@@ -35,6 +35,7 @@
 #include <set>
 #include <utility>
 
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ExceptionMessages.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "bindings/core/v8/Nullable.h"
@@ -88,7 +89,6 @@
 #include "platform/peerconnection/RTCAnswerOptionsPlatform.h"
 #include "platform/peerconnection/RTCOfferOptionsPlatform.h"
 #include "platform/runtime_enabled_features.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Time.h"
 #include "public/platform/Platform.h"
 #include "public/platform/TaskType.h"
@@ -1606,7 +1606,7 @@
     return;
 
   RTCDataChannel* channel =
-      RTCDataChannel::Create(GetExecutionContext(), WTF::WrapUnique(handler));
+      RTCDataChannel::Create(GetExecutionContext(), base::WrapUnique(handler));
   ScheduleDispatchEvent(RTCDataChannelEvent::Create(EventTypeNames::datachannel,
                                                     false, false, channel));
   has_data_channels_ = true;
diff --git a/third_party/WebKit/Source/modules/permissions/Permissions.cpp b/third_party/WebKit/Source/modules/permissions/Permissions.cpp
index ceb0e41a..4038726 100644
--- a/third_party/WebKit/Source/modules/permissions/Permissions.cpp
+++ b/third_party/WebKit/Source/modules/permissions/Permissions.cpp
@@ -28,7 +28,6 @@
 #include "platform/runtime_enabled_features.h"
 #include "platform/wtf/Functional.h"
 #include "platform/wtf/NotFound.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Vector.h"
 #include "public/platform/Platform.h"
 
diff --git a/third_party/WebKit/Source/modules/presentation/PresentationConnectionCallbacks.cpp b/third_party/WebKit/Source/modules/presentation/PresentationConnectionCallbacks.cpp
index 39cb5e89..0509ef8 100644
--- a/third_party/WebKit/Source/modules/presentation/PresentationConnectionCallbacks.cpp
+++ b/third_party/WebKit/Source/modules/presentation/PresentationConnectionCallbacks.cpp
@@ -10,7 +10,6 @@
 #include "modules/presentation/PresentationConnection.h"
 #include "modules/presentation/PresentationError.h"
 #include "modules/presentation/PresentationRequest.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/modules/presentation/WebPresentationError.h"
 #include "public/platform/modules/presentation/presentation.mojom-blink.h"
 
diff --git a/third_party/WebKit/Source/modules/presentation/PresentationController.cpp b/third_party/WebKit/Source/modules/presentation/PresentationController.cpp
index 9d05b200..51c7af5 100644
--- a/third_party/WebKit/Source/modules/presentation/PresentationController.cpp
+++ b/third_party/WebKit/Source/modules/presentation/PresentationController.cpp
@@ -13,7 +13,6 @@
 #include "modules/presentation/PresentationAvailabilityObserver.h"
 #include "modules/presentation/PresentationAvailabilityState.h"
 #include "modules/presentation/PresentationConnection.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebString.h"
 #include "public/platform/WebVector.h"
 #include "public/platform/modules/presentation/WebPresentationClient.h"
diff --git a/third_party/WebKit/Source/modules/push_messaging/PushSubscriptionCallbacks.cpp b/third_party/WebKit/Source/modules/push_messaging/PushSubscriptionCallbacks.cpp
index 2e7d691c..2b39baf 100644
--- a/third_party/WebKit/Source/modules/push_messaging/PushSubscriptionCallbacks.cpp
+++ b/third_party/WebKit/Source/modules/push_messaging/PushSubscriptionCallbacks.cpp
@@ -4,12 +4,14 @@
 
 #include "modules/push_messaging/PushSubscriptionCallbacks.h"
 
+#include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
 #include "modules/push_messaging/PushError.h"
 #include "modules/push_messaging/PushSubscription.h"
 #include "modules/serviceworkers/ServiceWorkerRegistration.h"
 #include "platform/wtf/Assertions.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/modules/push_messaging/WebPushSubscription.h"
 
 namespace blink {
@@ -32,7 +34,7 @@
     return;
 
   resolver_->Resolve(PushSubscription::Take(
-      resolver_.Get(), WTF::WrapUnique(web_push_subscription.release()),
+      resolver_.Get(), base::WrapUnique(web_push_subscription.release()),
       service_worker_registration_));
 }
 
diff --git a/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp b/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp
index 7296e585..4bd2858 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp
@@ -19,7 +19,6 @@
 #include "platform/bindings/V8PrivateProperty.h"
 #include "platform/loader/fetch/ResourceTimingInfo.h"
 #include "platform/network/NetworkUtils.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebURLResponse.h"
 #include "public/platform/modules/serviceworker/WebServiceWorkerError.h"
 
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerClients.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerClients.cpp
index 67ea649..fdbd637 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerClients.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerClients.cpp
@@ -6,6 +6,8 @@
 
 #include <memory>
 #include <utility>
+
+#include "base/memory/ptr_util.h"
 #include "base/memory/scoped_refptr.h"
 #include "bindings/core/v8/CallbackPromiseAdapter.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
@@ -19,7 +21,6 @@
 #include "modules/serviceworkers/ServiceWorkerWindowClient.h"
 #include "modules/serviceworkers/ServiceWorkerWindowClientCallback.h"
 #include "platform/bindings/V8ThrowException.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Vector.h"
 #include "public/platform/modules/serviceworker/WebServiceWorkerClientQueryOptions.h"
 #include "public/platform/modules/serviceworker/WebServiceWorkerClientsInfo.h"
@@ -70,7 +71,7 @@
   void OnSuccess(
       std::unique_ptr<WebServiceWorkerClientInfo> web_client) override {
     std::unique_ptr<WebServiceWorkerClientInfo> client =
-        WTF::WrapUnique(web_client.release());
+        base::WrapUnique(web_client.release());
     if (!resolver_->GetExecutionContext() ||
         resolver_->GetExecutionContext()->IsContextDestroyed())
       return;
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerTest.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerTest.cpp
index 6a6024de7..92fcc29 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerTest.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerTest.cpp
@@ -24,7 +24,6 @@
 #include "platform/bindings/ScriptState.h"
 #include "platform/weborigin/KURL.h"
 #include "platform/weborigin/SecurityOrigin.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/WTFString.h"
 #include "public/platform/WebURL.h"
 #include "public/platform/modules/serviceworker/WebServiceWorkerClientsInfo.h"
@@ -283,7 +282,7 @@
   // other methods must not be called after the
   // StubWebServiceWorkerProvider dies.
   std::unique_ptr<WebServiceWorkerProvider> Provider() {
-    return WTF::WrapUnique(new WebServiceWorkerProviderImpl(*this));
+    return std::make_unique<WebServiceWorkerProviderImpl>(*this);
   }
 
   size_t RegisterCallCount() { return register_call_count_; }
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.cpp
index 3f665e82c..e5db7e3 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.cpp
@@ -32,6 +32,8 @@
 
 #include <memory>
 #include <utility>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/CallbackPromiseAdapter.h"
 #include "bindings/core/v8/ScriptPromise.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
@@ -65,7 +67,6 @@
 #include "platform/loader/fetch/ResourceRequest.h"
 #include "platform/network/ContentSecurityPolicyResponseHeaders.h"
 #include "platform/weborigin/KURL.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Time.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebURL.h"
@@ -236,7 +237,7 @@
   if (!GetExecutionContext())
     return;
   registration_ = ServiceWorkerRegistration::GetOrCreate(
-      GetExecutionContext(), WTF::WrapUnique(handle.release()));
+      GetExecutionContext(), base::WrapUnique(handle.release()));
 }
 
 bool ServiceWorkerGlobalScope::AddEventListenerInternal(
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeProxy.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeProxy.cpp
index 6cf05e5f..6405d05 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeProxy.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeProxy.cpp
@@ -32,6 +32,8 @@
 
 #include <memory>
 #include <utility>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/SourceLocation.h"
 #include "bindings/core/v8/WorkerOrWorkletScriptController.h"
 #include "core/dom/ExecutionContext.h"
@@ -81,7 +83,6 @@
 #include "platform/network/ContentSecurityPolicyResponseHeaders.h"
 #include "platform/wtf/Assertions.h"
 #include "platform/wtf/Functional.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/modules/notifications/WebNotificationData.h"
 #include "public/platform/modules/serviceworker/WebServiceWorkerRequest.h"
 #include "public/web/WebSerializedScriptValue.h"
@@ -273,7 +274,7 @@
     origin = source_origin.ToString();
   ServiceWorker* source =
       ServiceWorker::From(worker_global_scope_->GetExecutionContext(),
-                          WTF::WrapUnique(handle.release()));
+                          base::WrapUnique(handle.release()));
   WaitUntilObserver* observer = WaitUntilObserver::Create(
       WorkerGlobalScope(), WaitUntilObserver::kMessage, event_id);
 
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerRegistration.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerRegistration.cpp
index 7667126..8e78b47d 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerRegistration.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerRegistration.cpp
@@ -6,6 +6,8 @@
 
 #include <memory>
 #include <utility>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/CallbackPromiseAdapter.h"
 #include "bindings/core/v8/ScriptPromise.h"
 #include "core/dom/DOMException.h"
@@ -16,7 +18,6 @@
 #include "modules/serviceworkers/ServiceWorkerContainerClient.h"
 #include "modules/serviceworkers/ServiceWorkerError.h"
 #include "platform/bindings/ScriptState.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/modules/serviceworker/WebServiceWorkerProvider.h"
 #include "third_party/WebKit/common/service_worker/service_worker_registration.mojom-blink.h"
 
@@ -45,7 +46,7 @@
   if (!GetExecutionContext())
     return;
   installing_ = ServiceWorker::From(GetExecutionContext(),
-                                    WTF::WrapUnique(handle.release()));
+                                    base::WrapUnique(handle.release()));
 }
 
 void ServiceWorkerRegistration::SetWaiting(
@@ -53,7 +54,7 @@
   if (!GetExecutionContext())
     return;
   waiting_ = ServiceWorker::From(GetExecutionContext(),
-                                 WTF::WrapUnique(handle.release()));
+                                 base::WrapUnique(handle.release()));
 }
 
 void ServiceWorkerRegistration::SetActive(
@@ -61,7 +62,7 @@
   if (!GetExecutionContext())
     return;
   active_ = ServiceWorker::From(GetExecutionContext(),
-                                WTF::WrapUnique(handle.release()));
+                                base::WrapUnique(handle.release()));
 }
 
 ServiceWorkerRegistration* ServiceWorkerRegistration::GetOrCreate(
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerThread.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerThread.cpp
index ead0bb4..128ee9d 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerThread.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerThread.cpp
@@ -36,7 +36,6 @@
 #include "modules/serviceworkers/ServiceWorkerGlobalScope.h"
 #include "modules/serviceworkers/ServiceWorkerGlobalScopeProxy.h"
 #include "modules/serviceworkers/ServiceWorkerInstalledScriptsManager.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerWindowClientCallback.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerWindowClientCallback.cpp
index 77c64ac5..366f7e73 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerWindowClientCallback.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerWindowClientCallback.cpp
@@ -4,12 +4,14 @@
 
 #include "modules/serviceworkers/ServiceWorkerWindowClientCallback.h"
 
+#include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
 #include "core/dom/DOMException.h"
 #include "modules/serviceworkers/ServiceWorkerError.h"
 #include "modules/serviceworkers/ServiceWorkerWindowClient.h"
 #include "platform/bindings/V8ThrowException.h"
-#include "platform/wtf/PtrUtil.h"
 #include "third_party/WebKit/common/service_worker/service_worker_error_type.mojom-blink.h"
 
 namespace blink {
@@ -20,7 +22,7 @@
       resolver_->GetExecutionContext()->IsContextDestroyed())
     return;
   resolver_->Resolve(ServiceWorkerWindowClient::Take(
-      resolver_.Get(), WTF::WrapUnique(client_info.release())));
+      resolver_.Get(), base::WrapUnique(client_info.release())));
 }
 
 void NavigateClientCallback::OnError(const WebServiceWorkerError& error) {
diff --git a/third_party/WebKit/Source/modules/serviceworkers/WebEmbeddedWorkerImplTest.cpp b/third_party/WebKit/Source/modules/serviceworkers/WebEmbeddedWorkerImplTest.cpp
index f1bb619..dcfcbd0 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/WebEmbeddedWorkerImplTest.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/WebEmbeddedWorkerImplTest.cpp
@@ -14,7 +14,6 @@
 #include "platform/runtime_enabled_features.h"
 #include "platform/testing/URLTestHelpers.h"
 #include "platform/testing/UnitTestHelpers.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebContentSettingsClient.h"
 #include "public/platform/WebURLLoaderMockFactory.h"
diff --git a/third_party/WebKit/Source/modules/speech/SpeechRecognitionClientProxy.cpp b/third_party/WebKit/Source/modules/speech/SpeechRecognitionClientProxy.cpp
index ee1b181..0c665b7 100644
--- a/third_party/WebKit/Source/modules/speech/SpeechRecognitionClientProxy.cpp
+++ b/third_party/WebKit/Source/modules/speech/SpeechRecognitionClientProxy.cpp
@@ -26,6 +26,8 @@
 #include "modules/speech/SpeechRecognitionClientProxy.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "base/memory/scoped_refptr.h"
 #include "core/dom/ExecutionContext.h"
 #include "modules/speech/SpeechGrammarList.h"
@@ -34,7 +36,6 @@
 #include "modules/speech/SpeechRecognitionResult.h"
 #include "modules/speech/SpeechRecognitionResultList.h"
 #include "platform/weborigin/SecurityOrigin.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebSecurityOrigin.h"
 #include "public/web/WebSpeechGrammar.h"
 #include "public/web/WebSpeechRecognitionHandle.h"
@@ -48,7 +49,7 @@
 
 std::unique_ptr<SpeechRecognitionClientProxy>
 SpeechRecognitionClientProxy::Create(WebSpeechRecognizer* recognizer) {
-  return WTF::WrapUnique(new SpeechRecognitionClientProxy(recognizer));
+  return base::WrapUnique(new SpeechRecognitionClientProxy(recognizer));
 }
 
 void SpeechRecognitionClientProxy::Start(SpeechRecognition* recognition,
diff --git a/third_party/WebKit/Source/modules/storage/StorageNamespace.cpp b/third_party/WebKit/Source/modules/storage/StorageNamespace.cpp
index aa8be7ba..82559ba 100644
--- a/third_party/WebKit/Source/modules/storage/StorageNamespace.cpp
+++ b/third_party/WebKit/Source/modules/storage/StorageNamespace.cpp
@@ -26,9 +26,10 @@
 #include "modules/storage/StorageNamespace.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "modules/storage/StorageArea.h"
 #include "platform/weborigin/SecurityOrigin.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebSecurityOrigin.h"
 #include "public/platform/WebStorageArea.h"
@@ -49,14 +50,14 @@
     local_storage_namespace =
         Platform::Current()->CreateLocalStorageNamespace();
   return StorageArea::Create(
-      WTF::WrapUnique(local_storage_namespace->CreateStorageArea(
+      base::WrapUnique(local_storage_namespace->CreateStorageArea(
           WebSecurityOrigin(origin))),
       kLocalStorage);
 }
 
 StorageArea* StorageNamespace::GetStorageArea(const SecurityOrigin* origin) {
   return StorageArea::Create(
-      WTF::WrapUnique(
+      base::WrapUnique(
           web_storage_namespace_->CreateStorageArea(WebSecurityOrigin(origin))),
       kSessionStorage);
 }
diff --git a/third_party/WebKit/Source/modules/storage/StorageNamespaceController.cpp b/third_party/WebKit/Source/modules/storage/StorageNamespaceController.cpp
index d659efc..6127b5f 100644
--- a/third_party/WebKit/Source/modules/storage/StorageNamespaceController.cpp
+++ b/third_party/WebKit/Source/modules/storage/StorageNamespaceController.cpp
@@ -9,7 +9,6 @@
 #include "core/frame/ContentSettingsClient.h"
 #include "modules/storage/InspectorDOMStorageAgent.h"
 #include "modules/storage/StorageNamespace.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebStorageNamespace.h"
 #include "public/web/WebViewClient.h"
diff --git a/third_party/WebKit/Source/modules/vr/NavigatorVR.cpp b/third_party/WebKit/Source/modules/vr/NavigatorVR.cpp
index 4283e05..6ae15379 100644
--- a/third_party/WebKit/Source/modules/vr/NavigatorVR.cpp
+++ b/third_party/WebKit/Source/modules/vr/NavigatorVR.cpp
@@ -21,7 +21,6 @@
 #include "modules/vr/VRPose.h"
 #include "modules/xr/XR.h"
 #include "platform/feature_policy/FeaturePolicy.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp b/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp
index c0e0c8e..ecacb81 100644
--- a/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp
@@ -35,7 +35,6 @@
 #include "platform/audio/AudioBus.h"
 #include "platform/audio/AudioFileReader.h"
 #include "platform/threading/BackgroundTaskRunner.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioBasicProcessorHandlerTest.cpp b/third_party/WebKit/Source/modules/webaudio/AudioBasicProcessorHandlerTest.cpp
index 4001b6c2..e2c2253 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioBasicProcessorHandlerTest.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioBasicProcessorHandlerTest.cpp
@@ -7,7 +7,6 @@
 #include "modules/webaudio/AudioBasicProcessorHandler.h"
 #include "modules/webaudio/OfflineAudioContext.h"
 #include "platform/audio/AudioProcessor.h"
-#include "platform/wtf/PtrUtil.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioBufferSourceNode.cpp b/third_party/WebKit/Source/modules/webaudio/AudioBufferSourceNode.cpp
index 5e963bbe..111ded9 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioBufferSourceNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioBufferSourceNode.cpp
@@ -34,7 +34,6 @@
 #include "modules/webaudio/BaseAudioContext.h"
 #include "platform/audio/AudioUtilities.h"
 #include "platform/wtf/MathExtras.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp b/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp
index 5fd1ce4..ef2fbc3 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp
@@ -9,7 +9,6 @@
 #include "core/dom/Document.h"
 #include "core/testing/PageTestBase.h"
 #include "platform/testing/TestingPlatformSupport.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/WebAudioDevice.h"
 #include "public/platform/WebAudioLatencyHint.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioNodeInput.cpp b/third_party/WebKit/Source/modules/webaudio/AudioNodeInput.cpp
index 446a617..cb1e028 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioNodeInput.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioNodeInput.cpp
@@ -24,10 +24,12 @@
  */
 
 #include "modules/webaudio/AudioNodeInput.h"
+
 #include <algorithm>
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "modules/webaudio/AudioNodeOutput.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
@@ -40,7 +42,7 @@
 }
 
 std::unique_ptr<AudioNodeInput> AudioNodeInput::Create(AudioHandler& handler) {
-  return WTF::WrapUnique(new AudioNodeInput(handler));
+  return base::WrapUnique(new AudioNodeInput(handler));
 }
 
 void AudioNodeInput::Connect(AudioNodeOutput& output) {
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioNodeOutput.cpp b/third_party/WebKit/Source/modules/webaudio/AudioNodeOutput.cpp
index ff26989..9773d26 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioNodeOutput.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioNodeOutput.cpp
@@ -24,10 +24,12 @@
  */
 
 #include "modules/webaudio/AudioNodeOutput.h"
+
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "modules/webaudio/AudioNodeInput.h"
 #include "modules/webaudio/BaseAudioContext.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Threading.h"
 
 namespace blink {
@@ -51,7 +53,7 @@
 std::unique_ptr<AudioNodeOutput> AudioNodeOutput::Create(
     AudioHandler* handler,
     unsigned number_of_channels) {
-  return WTF::WrapUnique(new AudioNodeOutput(handler, number_of_channels));
+  return base::WrapUnique(new AudioNodeOutput(handler, number_of_channels));
 }
 
 void AudioNodeOutput::Dispose() {
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp b/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
index 48fc731..e7daca8 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
@@ -26,6 +26,9 @@
 #include "modules/webaudio/AudioParamTimeline.h"
 
 #include <algorithm>
+#include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "bindings/core/v8/ExceptionMessages.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "build/build_config.h"
@@ -35,7 +38,6 @@
 #include "platform/audio/AudioUtilities.h"
 #include "platform/wtf/CPU.h"
 #include "platform/wtf/MathExtras.h"
-#include "platform/wtf/PtrUtil.h"
 
 #if defined(ARCH_CPU_X86_FAMILY)
 #include <emmintrin.h>
@@ -171,7 +173,7 @@
 
 std::unique_ptr<AudioParamTimeline::ParamEvent>
 AudioParamTimeline::ParamEvent::CreateSetValueEvent(float value, double time) {
-  return WTF::WrapUnique(new ParamEvent(ParamEvent::kSetValue, value, time));
+  return base::WrapUnique(new ParamEvent(ParamEvent::kSetValue, value, time));
 }
 
 std::unique_ptr<AudioParamTimeline::ParamEvent>
@@ -179,8 +181,8 @@
                                                       double time,
                                                       float initial_value,
                                                       double call_time) {
-  return WTF::WrapUnique(new ParamEvent(ParamEvent::kLinearRampToValue, value,
-                                        time, initial_value, call_time));
+  return base::WrapUnique(new ParamEvent(ParamEvent::kLinearRampToValue, value,
+                                         time, initial_value, call_time));
 }
 
 std::unique_ptr<AudioParamTimeline::ParamEvent>
@@ -188,8 +190,9 @@
                                                            double time,
                                                            float initial_value,
                                                            double call_time) {
-  return WTF::WrapUnique(new ParamEvent(ParamEvent::kExponentialRampToValue,
-                                        value, time, initial_value, call_time));
+  return base::WrapUnique(new ParamEvent(ParamEvent::kExponentialRampToValue,
+                                         value, time, initial_value,
+                                         call_time));
 }
 
 std::unique_ptr<AudioParamTimeline::ParamEvent>
@@ -200,7 +203,7 @@
   // returns NaN or Infinity due to division by zero.  The caller
   // should have converted this to a SetValueEvent.
   DCHECK_NE(time_constant, 0);
-  return WTF::WrapUnique(
+  return base::WrapUnique(
       new ParamEvent(ParamEvent::kSetTarget, value, time, time_constant));
 }
 
@@ -212,9 +215,9 @@
   double curve_points = (curve.size() - 1) / duration;
   float end_value = curve.data()[curve.size() - 1];
 
-  return WTF::WrapUnique(new ParamEvent(ParamEvent::kSetValueCurve, time,
-                                        duration, curve, curve_points,
-                                        end_value));
+  return base::WrapUnique(new ParamEvent(ParamEvent::kSetValueCurve, time,
+                                         duration, curve, curve_points,
+                                         end_value));
 }
 
 std::unique_ptr<AudioParamTimeline::ParamEvent>
@@ -231,7 +234,7 @@
            saved_type == ParamEvent::kSetValueCurve);
   }
 
-  return WTF::WrapUnique(
+  return base::WrapUnique(
       new ParamEvent(ParamEvent::kCancelValues, time, std::move(saved_event)));
 }
 
@@ -248,7 +251,7 @@
     double curve_points_per_second,
     float curve_end_value,
     std::unique_ptr<ParamEvent> saved_event) {
-  return WTF::WrapUnique(new ParamEvent(
+  return base::WrapUnique(new ParamEvent(
       type, value, time, initial_value, call_time, time_constant, duration,
       curve, curve_points_per_second, curve_end_value, std::move(saved_event)));
 }
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioWorkletThread.cpp b/third_party/WebKit/Source/modules/webaudio/AudioWorkletThread.cpp
index 8fcf38fb..8963da8 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioWorkletThread.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioWorkletThread.cpp
@@ -5,6 +5,8 @@
 #include "modules/webaudio/AudioWorkletThread.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "core/workers/GlobalScopeCreationParams.h"
 #include "core/workers/WorkerBackingThread.h"
 #include "modules/webaudio/AudioWorklet.h"
@@ -15,7 +17,6 @@
 #include "platform/instrumentation/tracing/TraceEvent.h"
 #include "platform/weborigin/SecurityOrigin.h"
 #include "platform/wtf/Assertions.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 
 namespace blink {
@@ -31,7 +32,7 @@
     WorkerReportingProxy& worker_reporting_proxy) {
   TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("audio-worklet"),
                "AudioWorkletThread::create");
-  return WTF::WrapUnique(
+  return base::WrapUnique(
       new AudioWorkletThread(loading_context, worker_reporting_proxy));
 }
 
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioWorkletThreadTest.cpp b/third_party/WebKit/Source/modules/webaudio/AudioWorkletThreadTest.cpp
index 3d322a42..2314a76 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioWorkletThreadTest.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioWorkletThreadTest.cpp
@@ -27,7 +27,6 @@
 #include "platform/loader/fetch/ResourceLoaderOptions.h"
 #include "platform/testing/TestingPlatformSupport.h"
 #include "platform/testing/UnitTestHelpers.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/TextPosition.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebAddressSpace.h"
diff --git a/third_party/WebKit/Source/modules/webaudio/BaseAudioContextTest.cpp b/third_party/WebKit/Source/modules/webaudio/BaseAudioContextTest.cpp
index 8ccb5d98..ca36e23 100644
--- a/third_party/WebKit/Source/modules/webaudio/BaseAudioContextTest.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/BaseAudioContextTest.cpp
@@ -23,7 +23,6 @@
 #include "modules/webaudio/AudioWorkletThread.h"
 #include "platform/testing/HistogramTester.h"
 #include "platform/testing/TestingPlatformSupport.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 #include "public/platform/WebAudioDevice.h"
 #include "public/platform/WebAudioLatencyHint.h"
@@ -87,7 +86,7 @@
   }
 
   std::unique_ptr<WebThread> CreateThread(const char* name) override {
-    // return WTF::WrapUnique(old_platform_->CurrentThread());
+    // return base::WrapUnique(old_platform_->CurrentThread());
     return old_platform_->CreateThread(name);
   }
 
diff --git a/third_party/WebKit/Source/modules/webaudio/BiquadFilterNode.cpp b/third_party/WebKit/Source/modules/webaudio/BiquadFilterNode.cpp
index ca78aa0..84f8a24 100644
--- a/third_party/WebKit/Source/modules/webaudio/BiquadFilterNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/BiquadFilterNode.cpp
@@ -25,10 +25,11 @@
 
 #include "modules/webaudio/BiquadFilterNode.h"
 
+#include <memory>
+
 #include "modules/webaudio/AudioBasicProcessorHandler.h"
 #include "modules/webaudio/BiquadFilterOptions.h"
 #include "platform/Histogram.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
@@ -54,9 +55,9 @@
                                  0.0)) {
   SetHandler(AudioBasicProcessorHandler::Create(
       AudioHandler::kNodeTypeBiquadFilter, *this, context.sampleRate(),
-      WTF::WrapUnique(new BiquadProcessor(
-          context.sampleRate(), 1, frequency_->Handler(), q_->Handler(),
-          gain_->Handler(), detune_->Handler()))));
+      std::make_unique<BiquadProcessor>(context.sampleRate(), 1,
+                                        frequency_->Handler(), q_->Handler(),
+                                        gain_->Handler(), detune_->Handler())));
 
   setType("lowpass");
 
diff --git a/third_party/WebKit/Source/modules/webaudio/BiquadProcessor.cpp b/third_party/WebKit/Source/modules/webaudio/BiquadProcessor.cpp
index ee824b9..f15ca57 100644
--- a/third_party/WebKit/Source/modules/webaudio/BiquadProcessor.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/BiquadProcessor.cpp
@@ -27,7 +27,6 @@
 #include <memory>
 #include "modules/webaudio/BiquadDSPKernel.h"
 #include "platform/audio/AudioUtilities.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp b/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp
index 0dfd2376..ac2934f 100644
--- a/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp
@@ -32,7 +32,6 @@
 #include "modules/webaudio/AudioNodeOutput.h"
 #include "modules/webaudio/ConvolverOptions.h"
 #include "platform/audio/Reverb.h"
-#include "platform/wtf/PtrUtil.h"
 
 // Note about empirical tuning:
 // The maximum FFT size affects reverb performance and accuracy.
@@ -137,9 +136,9 @@
   buffer_bus->SetSampleRate(buffer->sampleRate());
 
   // Create the reverb with the given impulse response.
-  std::unique_ptr<Reverb> reverb = WTF::WrapUnique(new Reverb(
+  std::unique_ptr<Reverb> reverb = std::make_unique<Reverb>(
       buffer_bus.get(), AudioUtilities::kRenderQuantumFrames, MaxFFTSize,
-      Context() && Context()->HasRealtimeConstraint(), normalize_));
+      Context() && Context()->HasRealtimeConstraint(), normalize_);
 
   {
     // The context must be locked since changing the buffer can
diff --git a/third_party/WebKit/Source/modules/webaudio/DelayNode.cpp b/third_party/WebKit/Source/modules/webaudio/DelayNode.cpp
index c903480..ff1c97bd 100644
--- a/third_party/WebKit/Source/modules/webaudio/DelayNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/DelayNode.cpp
@@ -24,6 +24,9 @@
  */
 
 #include "modules/webaudio/DelayNode.h"
+
+#include <memory>
+
 #include "bindings/core/v8/ExceptionMessages.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "core/dom/ExceptionCode.h"
@@ -31,7 +34,6 @@
 #include "modules/webaudio/DelayOptions.h"
 #include "modules/webaudio/DelayProcessor.h"
 #include "platform/wtf/MathExtras.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
@@ -47,8 +49,8 @@
                                      max_delay_time)) {
   SetHandler(AudioBasicProcessorHandler::Create(
       AudioHandler::kNodeTypeDelay, *this, context.sampleRate(),
-      WTF::WrapUnique(new DelayProcessor(
-          context.sampleRate(), 1, delay_time_->Handler(), max_delay_time))));
+      std::make_unique<DelayProcessor>(
+          context.sampleRate(), 1, delay_time_->Handler(), max_delay_time)));
 
   // Initialize the handler so that AudioParams can be processed.
   Handler().Initialize();
diff --git a/third_party/WebKit/Source/modules/webaudio/DelayProcessor.cpp b/third_party/WebKit/Source/modules/webaudio/DelayProcessor.cpp
index e8a00c7..393a4c72 100644
--- a/third_party/WebKit/Source/modules/webaudio/DelayProcessor.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/DelayProcessor.cpp
@@ -27,7 +27,6 @@
 #include <memory>
 #include "modules/webaudio/DelayDSPKernel.h"
 #include "platform/audio/AudioUtilities.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/webaudio/DynamicsCompressorNode.cpp b/third_party/WebKit/Source/modules/webaudio/DynamicsCompressorNode.cpp
index 3efdc6728..1c053ae 100644
--- a/third_party/WebKit/Source/modules/webaudio/DynamicsCompressorNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/DynamicsCompressorNode.cpp
@@ -31,7 +31,6 @@
 #include "modules/webaudio/DynamicsCompressorOptions.h"
 #include "platform/audio/AudioUtilities.h"
 #include "platform/audio/DynamicsCompressor.h"
-#include "platform/wtf/PtrUtil.h"
 
 // Set output to stereo by default.
 static const unsigned defaultNumberOfOutputChannels = 2;
@@ -119,8 +118,8 @@
     return;
 
   AudioHandler::Initialize();
-  dynamics_compressor_ = WTF::WrapUnique(new DynamicsCompressor(
-      Context()->sampleRate(), defaultNumberOfOutputChannels));
+  dynamics_compressor_ = std::make_unique<DynamicsCompressor>(
+      Context()->sampleRate(), defaultNumberOfOutputChannels);
 }
 
 void DynamicsCompressorHandler::ClearInternalStateWhenDisabled() {
diff --git a/third_party/WebKit/Source/modules/webaudio/IIRFilterNode.cpp b/third_party/WebKit/Source/modules/webaudio/IIRFilterNode.cpp
index 37665f4..7385b87 100644
--- a/third_party/WebKit/Source/modules/webaudio/IIRFilterNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/IIRFilterNode.cpp
@@ -4,6 +4,8 @@
 
 #include "modules/webaudio/IIRFilterNode.h"
 
+#include <memory>
+
 #include "bindings/core/v8/ExceptionMessages.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "core/dom/ExceptionCode.h"
@@ -12,7 +14,6 @@
 #include "modules/webaudio/BaseAudioContext.h"
 #include "modules/webaudio/IIRFilterOptions.h"
 #include "platform/Histogram.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
@@ -67,8 +68,8 @@
     : AudioNode(context) {
   SetHandler(AudioBasicProcessorHandler::Create(
       AudioHandler::kNodeTypeIIRFilter, *this, context.sampleRate(),
-      WTF::WrapUnique(new IIRProcessor(context.sampleRate(), 1,
-                                       feedforward_coef, feedback_coef))));
+      std::make_unique<IIRProcessor>(context.sampleRate(), 1, feedforward_coef,
+                                     feedback_coef)));
 
   // Histogram of the IIRFilter order.  createIIRFilter ensures that the length
   // of |feedbackCoef| is in the range [1, IIRFilter::kMaxOrder + 1].  The order
diff --git a/third_party/WebKit/Source/modules/webaudio/IIRProcessor.cpp b/third_party/WebKit/Source/modules/webaudio/IIRProcessor.cpp
index dca29493..0ca9bc0 100644
--- a/third_party/WebKit/Source/modules/webaudio/IIRProcessor.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/IIRProcessor.cpp
@@ -6,7 +6,6 @@
 
 #include <memory>
 #include "modules/webaudio/IIRDSPKernel.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/webaudio/MediaElementAudioSourceNode.cpp b/third_party/WebKit/Source/modules/webaudio/MediaElementAudioSourceNode.cpp
index a9572a6..7aa1ea7 100644
--- a/third_party/WebKit/Source/modules/webaudio/MediaElementAudioSourceNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/MediaElementAudioSourceNode.cpp
@@ -35,7 +35,6 @@
 #include "platform/audio/AudioUtilities.h"
 #include "platform/weborigin/SecurityOrigin.h"
 #include "platform/wtf/Locker.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/TaskType.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp b/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
index 33ddda6..2e24fb78 100644
--- a/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
@@ -36,7 +36,6 @@
 #include "platform/audio/AudioUtilities.h"
 #include "platform/audio/DenormalDisabler.h"
 #include "platform/audio/HRTFDatabaseLoader.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/webaudio/PeriodicWave.cpp b/third_party/WebKit/Source/modules/webaudio/PeriodicWave.cpp
index 11bf73e..1024960 100644
--- a/third_party/WebKit/Source/modules/webaudio/PeriodicWave.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/PeriodicWave.cpp
@@ -37,7 +37,6 @@
 #include "modules/webaudio/PeriodicWaveOptions.h"
 #include "platform/audio/FFTFrame.h"
 #include "platform/audio/VectorMath.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/webaudio/RealtimeAnalyser.cpp b/third_party/WebKit/Source/modules/webaudio/RealtimeAnalyser.cpp
index fd103d90..2698788 100644
--- a/third_party/WebKit/Source/modules/webaudio/RealtimeAnalyser.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/RealtimeAnalyser.cpp
@@ -31,7 +31,6 @@
 #include "platform/audio/AudioUtilities.h"
 #include "platform/audio/VectorMath.h"
 #include "platform/wtf/MathExtras.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/webaudio/WaveShaperDSPKernel.cpp b/third_party/WebKit/Source/modules/webaudio/WaveShaperDSPKernel.cpp
index f9e2cef..c21fdc30 100644
--- a/third_party/WebKit/Source/modules/webaudio/WaveShaperDSPKernel.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/WaveShaperDSPKernel.cpp
@@ -26,8 +26,9 @@
 #include "modules/webaudio/WaveShaperDSPKernel.h"
 
 #include <algorithm>
+#include <memory>
+
 #include "platform/audio/AudioUtilities.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Threading.h"
 
 namespace blink {
@@ -40,18 +41,18 @@
 
 void WaveShaperDSPKernel::LazyInitializeOversampling() {
   if (!temp_buffer_) {
-    temp_buffer_ = WTF::WrapUnique(
-        new AudioFloatArray(AudioUtilities::kRenderQuantumFrames * 2));
-    temp_buffer2_ = WTF::WrapUnique(
-        new AudioFloatArray(AudioUtilities::kRenderQuantumFrames * 4));
+    temp_buffer_ = std::make_unique<AudioFloatArray>(
+        AudioUtilities::kRenderQuantumFrames * 2);
+    temp_buffer2_ = std::make_unique<AudioFloatArray>(
+        AudioUtilities::kRenderQuantumFrames * 4);
     up_sampler_ =
-        WTF::WrapUnique(new UpSampler(AudioUtilities::kRenderQuantumFrames));
-    down_sampler_ = WTF::WrapUnique(
-        new DownSampler(AudioUtilities::kRenderQuantumFrames * 2));
-    up_sampler2_ = WTF::WrapUnique(
-        new UpSampler(AudioUtilities::kRenderQuantumFrames * 2));
-    down_sampler2_ = WTF::WrapUnique(
-        new DownSampler(AudioUtilities::kRenderQuantumFrames * 4));
+        std::make_unique<UpSampler>(AudioUtilities::kRenderQuantumFrames);
+    down_sampler_ =
+        std::make_unique<DownSampler>(AudioUtilities::kRenderQuantumFrames * 2);
+    up_sampler2_ =
+        std::make_unique<UpSampler>(AudioUtilities::kRenderQuantumFrames * 2);
+    down_sampler2_ =
+        std::make_unique<DownSampler>(AudioUtilities::kRenderQuantumFrames * 4);
   }
 }
 
diff --git a/third_party/WebKit/Source/modules/webaudio/WaveShaperNode.cpp b/third_party/WebKit/Source/modules/webaudio/WaveShaperNode.cpp
index 7920aed0..b3b4a082 100644
--- a/third_party/WebKit/Source/modules/webaudio/WaveShaperNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/WaveShaperNode.cpp
@@ -24,20 +24,22 @@
  */
 
 #include "modules/webaudio/WaveShaperNode.h"
+
+#include <memory>
+
 #include "bindings/core/v8/ExceptionMessages.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "core/dom/ExceptionCode.h"
 #include "modules/webaudio/AudioBasicProcessorHandler.h"
 #include "modules/webaudio/BaseAudioContext.h"
 #include "modules/webaudio/WaveShaperOptions.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
 WaveShaperNode::WaveShaperNode(BaseAudioContext& context) : AudioNode(context) {
   SetHandler(AudioBasicProcessorHandler::Create(
       AudioHandler::kNodeTypeWaveShaper, *this, context.sampleRate(),
-      WTF::WrapUnique(new WaveShaperProcessor(context.sampleRate(), 1))));
+      std::make_unique<WaveShaperProcessor>(context.sampleRate(), 1)));
 
   Handler().Initialize();
 }
diff --git a/third_party/WebKit/Source/modules/webaudio/WaveShaperProcessor.cpp b/third_party/WebKit/Source/modules/webaudio/WaveShaperProcessor.cpp
index 7563c75f..f2464b1 100644
--- a/third_party/WebKit/Source/modules/webaudio/WaveShaperProcessor.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/WaveShaperProcessor.cpp
@@ -26,7 +26,6 @@
 #include "modules/webaudio/WaveShaperProcessor.h"
 #include <memory>
 #include "modules/webaudio/WaveShaperDSPKernel.h"
-#include "platform/wtf/PtrUtil.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/webdatabase/DatabaseManager.cpp b/third_party/WebKit/Source/modules/webdatabase/DatabaseManager.cpp
index 20434a6a..7bf1d5a 100644
--- a/third_party/WebKit/Source/modules/webdatabase/DatabaseManager.cpp
+++ b/third_party/WebKit/Source/modules/webdatabase/DatabaseManager.cpp
@@ -38,7 +38,6 @@
 #include "modules/webdatabase/DatabaseTracker.h"
 #include "modules/webdatabase/StorageLog.h"
 #include "platform/weborigin/SecurityOrigin.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/TaskType.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/webdatabase/DatabaseTask.h b/third_party/WebKit/Source/modules/webdatabase/DatabaseTask.h
index 953d989..8ec3d67 100644
--- a/third_party/WebKit/Source/modules/webdatabase/DatabaseTask.h
+++ b/third_party/WebKit/Source/modules/webdatabase/DatabaseTask.h
@@ -30,13 +30,14 @@
 #define DatabaseTask_h
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "modules/webdatabase/Database.h"
 #include "modules/webdatabase/DatabaseBasicTypes.h"
 #include "modules/webdatabase/DatabaseError.h"
 #include "modules/webdatabase/SQLTransactionBackend.h"
 #include "platform/WaitableEvent.h"
 #include "platform/heap/Handle.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Threading.h"
 #include "platform/wtf/Vector.h"
 #include "platform/wtf/text/WTFString.h"
@@ -79,9 +80,9 @@
       DatabaseError& error,
       String& error_message,
       bool& success) {
-    return WTF::WrapUnique(new DatabaseOpenTask(db, set_version_in_new_database,
-                                                complete_event, error,
-                                                error_message, success));
+    return base::WrapUnique(
+        new DatabaseOpenTask(db, set_version_in_new_database, complete_event,
+                             error, error_message, success));
   }
 
  private:
@@ -108,7 +109,7 @@
   static std::unique_ptr<DatabaseCloseTask> Create(
       Database* db,
       WaitableEvent* synchronizer) {
-    return WTF::WrapUnique(new DatabaseCloseTask(db, synchronizer));
+    return base::WrapUnique(new DatabaseCloseTask(db, synchronizer));
   }
 
  private:
@@ -127,7 +128,7 @@
   // Transaction task is never synchronous, so no 'synchronizer' parameter.
   static std::unique_ptr<DatabaseTransactionTask> Create(
       SQLTransactionBackend* transaction) {
-    return WTF::WrapUnique(new DatabaseTransactionTask(transaction));
+    return base::WrapUnique(new DatabaseTransactionTask(transaction));
   }
 
   SQLTransactionBackend* Transaction() const { return transaction_.Get(); }
@@ -148,7 +149,8 @@
  public:
   static std::unique_ptr<DatabaseTableNamesTask>
   Create(Database* db, WaitableEvent* synchronizer, Vector<String>& names) {
-    return WTF::WrapUnique(new DatabaseTableNamesTask(db, synchronizer, names));
+    return base::WrapUnique(
+        new DatabaseTableNamesTask(db, synchronizer, names));
   }
 
  private:
diff --git a/third_party/WebKit/Source/modules/webdatabase/DatabaseThread.cpp b/third_party/WebKit/Source/modules/webdatabase/DatabaseThread.cpp
index 58158a38..fb7a066 100644
--- a/third_party/WebKit/Source/modules/webdatabase/DatabaseThread.cpp
+++ b/third_party/WebKit/Source/modules/webdatabase/DatabaseThread.cpp
@@ -37,7 +37,6 @@
 #include "platform/CrossThreadFunctional.h"
 #include "platform/WaitableEvent.h"
 #include "platform/WebThreadSupportingGC.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp b/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp
index 3725b0a1..d08f36b5 100644
--- a/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp
+++ b/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp
@@ -30,6 +30,8 @@
 
 #include "modules/webdatabase/DatabaseTracker.h"
 
+#include <memory>
+
 #include "base/location.h"
 #include "core/dom/Document.h"
 #include "core/dom/ExecutionContext.h"
@@ -43,7 +45,6 @@
 #include "platform/weborigin/SecurityOriginHash.h"
 #include "platform/wtf/Assertions.h"
 #include "platform/wtf/Functional.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/StdLibExtras.h"
 #include "public/platform/Platform.h"
 #include "public/platform/TaskType.h"
@@ -94,7 +95,7 @@
 void DatabaseTracker::AddOpenDatabase(Database* database) {
   MutexLocker open_database_map_lock(open_database_map_guard_);
   if (!open_database_map_)
-    open_database_map_ = WTF::WrapUnique(new DatabaseOriginMap);
+    open_database_map_ = std::make_unique<DatabaseOriginMap>();
 
   String origin_string = database->GetSecurityOrigin()->ToRawString();
   DatabaseNameMap* name_map = open_database_map_->at(origin_string);
diff --git a/third_party/WebKit/Source/modules/webdatabase/SQLError.h b/third_party/WebKit/Source/modules/webdatabase/SQLError.h
index a19d2fe5..83c23e4 100644
--- a/third_party/WebKit/Source/modules/webdatabase/SQLError.h
+++ b/third_party/WebKit/Source/modules/webdatabase/SQLError.h
@@ -30,8 +30,9 @@
 #define SQLError_h
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "platform/bindings/ScriptWrappable.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/WTFString.h"
 
 namespace blink {
@@ -42,7 +43,7 @@
  public:
   static std::unique_ptr<SQLErrorData> Create(unsigned code,
                                               const String& message) {
-    return WTF::WrapUnique(new SQLErrorData(code, message));
+    return base::WrapUnique(new SQLErrorData(code, message));
   }
 
   static std::unique_ptr<SQLErrorData> Create(unsigned code,
diff --git a/third_party/WebKit/Source/modules/webdatabase/SQLTransactionBackend.cpp b/third_party/WebKit/Source/modules/webdatabase/SQLTransactionBackend.cpp
index c165e5b..a6d8a97 100644
--- a/third_party/WebKit/Source/modules/webdatabase/SQLTransactionBackend.cpp
+++ b/third_party/WebKit/Source/modules/webdatabase/SQLTransactionBackend.cpp
@@ -42,7 +42,6 @@
 #include "modules/webdatabase/StorageLog.h"
 #include "modules/webdatabase/sqlite/SQLValue.h"
 #include "modules/webdatabase/sqlite/SQLiteTransaction.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/StdLibExtras.h"
 
 // How does a SQLTransaction work?
@@ -606,8 +605,8 @@
     database_->SqliteDatabase().SetMaximumSize(database_->MaximumSize());
 
   DCHECK(!sqlite_transaction_);
-  sqlite_transaction_ = WTF::WrapUnique(
-      new SQLiteTransaction(database_->SqliteDatabase(), read_only_));
+  sqlite_transaction_ = std::make_unique<SQLiteTransaction>(
+      database_->SqliteDatabase(), read_only_);
 
   database_->ResetDeletes();
   database_->DisableAuthorizer();
diff --git a/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteStatement.cpp b/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteStatement.cpp
index f2375d8b..3105d31 100644
--- a/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteStatement.cpp
+++ b/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteStatement.cpp
@@ -30,7 +30,6 @@
 #include "modules/webdatabase/sqlite/SQLValue.h"
 #include "platform/heap/SafePoint.h"
 #include "platform/wtf/Assertions.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/CString.h"
 #include "third_party/sqlite/sqlite3.h"
 
@@ -94,8 +93,8 @@
 
   // Need to pass non-stack |const char*| and |sqlite3_stmt*| to avoid race
   // with Oilpan stack scanning.
-  std::unique_ptr<const char*> tail = WTF::WrapUnique(new const char*);
-  std::unique_ptr<sqlite3_stmt*> statement = WTF::WrapUnique(new sqlite3_stmt*);
+  std::unique_ptr<const char*> tail = std::make_unique<const char*>();
+  std::unique_ptr<sqlite3_stmt*> statement = std::make_unique<sqlite3_stmt*>();
   *tail = nullptr;
   *statement = nullptr;
   int error;
diff --git a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
index 6e6b53d..719f1d3 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
+++ b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
@@ -27,7 +27,6 @@
 #include "modules/webgl/WebGLUniformLocation.h"
 #include "modules/webgl/WebGLVertexArrayObject.h"
 #include "platform/wtf/CheckedNumeric.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/WTFString.h"
 #include "public/platform/WebGraphicsContext3DProvider.h"
 
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
index 195b419..73f0af1 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
+++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
@@ -101,7 +101,6 @@
 #include "platform/runtime_enabled_features.h"
 #include "platform/wtf/CheckedNumeric.h"
 #include "platform/wtf/Functional.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/StringBuilder.h"
 #include "platform/wtf/text/StringUTF8Adaptor.h"
 #include "platform/wtf/typed_arrays/ArrayBufferContents.h"
@@ -5328,8 +5327,8 @@
     // Try using an accelerated image buffer, this allows YUV conversion to be
     // done on the GPU.
     std::unique_ptr<AcceleratedImageBufferSurface> surface =
-        WTF::WrapUnique(new AcceleratedImageBufferSurface(
-            IntSize(video->videoWidth(), video->videoHeight())));
+        std::make_unique<AcceleratedImageBufferSurface>(
+            IntSize(video->videoWidth(), video->videoHeight()));
     if (surface->IsValid()) {
       // The video element paints an RGBA frame into our surface here. By
       // using an AcceleratedImageBufferSurface, we enable the WebMediaPlayer
diff --git a/third_party/WebKit/Source/modules/webmidi/MIDIAccessor.cpp b/third_party/WebKit/Source/modules/webmidi/MIDIAccessor.cpp
index cdb2d1b1..95ab9c6 100644
--- a/third_party/WebKit/Source/modules/webmidi/MIDIAccessor.cpp
+++ b/third_party/WebKit/Source/modules/webmidi/MIDIAccessor.cpp
@@ -31,8 +31,9 @@
 #include "modules/webmidi/MIDIAccessor.h"
 
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "modules/webmidi/MIDIAccessorClient.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/WTFString.h"
 #include "public/platform/Platform.h"
 #include "public/platform/modules/webmidi/WebMIDIAccessor.h"
@@ -45,7 +46,7 @@
 
 // Factory method
 std::unique_ptr<MIDIAccessor> MIDIAccessor::Create(MIDIAccessorClient* client) {
-  return WTF::WrapUnique(new MIDIAccessor(client));
+  return base::WrapUnique(new MIDIAccessor(client));
 }
 
 MIDIAccessor::MIDIAccessor(MIDIAccessorClient* client) : client_(client) {
diff --git a/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp b/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp
index 8a80d44..c8d55061 100644
--- a/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp
+++ b/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp
@@ -30,7 +30,10 @@
 
 #include "modules/websockets/DocumentWebSocketChannel.h"
 
+#include <memory>
+
 #include "base/location.h"
+#include "base/memory/ptr_util.h"
 #include "core/dom/ExecutionContext.h"
 #include "core/fileapi/FileReaderLoader.h"
 #include "core/fileapi/FileReaderLoaderClient.h"
@@ -59,7 +62,6 @@
 #include "platform/network/WebSocketHandshakeRequest.h"
 #include "platform/weborigin/SecurityOrigin.h"
 #include "platform/wtf/Functional.h"
-#include "platform/wtf/PtrUtil.h"
 #include "public/platform/Platform.h"
 #include "public/platform/TaskType.h"
 #include "public/platform/WebSocketHandshakeThrottle.h"
@@ -157,7 +159,7 @@
     std::unique_ptr<WebSocketHandshakeThrottle> handshake_throttle) {
   return new DocumentWebSocketChannel(
       ThreadableLoadingContext::Create(*document), client, std::move(location),
-      WTF::WrapUnique(handle), std::move(handshake_throttle));
+      base::WrapUnique(handle), std::move(handshake_throttle));
 }
 
 // static
@@ -690,7 +692,7 @@
     }
   } else {
     std::unique_ptr<Vector<char>> binary_data =
-        WTF::WrapUnique(new Vector<char>);
+        std::make_unique<Vector<char>>();
     binary_data->swap(receiving_message_data_);
     client_->DidReceiveBinaryMessage(std::move(binary_data));
   }
diff --git a/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannelTest.cpp b/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannelTest.cpp
index 76c875b..dec4cbc 100644
--- a/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannelTest.cpp
+++ b/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannelTest.cpp
@@ -6,6 +6,8 @@
 
 #include <stdint.h>
 #include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "core/dom/Document.h"
 #include "core/fileapi/Blob.h"
 #include "core/testing/DummyPageHolder.h"
@@ -16,7 +18,6 @@
 #include "modules/websockets/WebSocketHandleClient.h"
 #include "platform/heap/Handle.h"
 #include "platform/weborigin/KURL.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/Vector.h"
 #include "platform/wtf/text/WTFString.h"
 #include "public/platform/WebCallbacks.h"
@@ -137,7 +138,7 @@
     channel_ = DocumentWebSocketChannel::CreateForTesting(
         &page_holder_->GetDocument(), channel_client_.Get(),
         SourceLocation::Capture(), Handle(),
-        WTF::WrapUnique(handshake_throttle_));
+        base::WrapUnique(handshake_throttle_));
   }
 
   MockWebSocketChannelClient* ChannelClient() { return channel_client_.Get(); }
diff --git a/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.cpp b/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.cpp
index f224de88..cc7a8a03 100644
--- a/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.cpp
+++ b/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.cpp
@@ -38,7 +38,6 @@
 #include "modules/websockets/DocumentWebSocketChannel.h"
 #include "modules/websockets/WebPepperSocketChannelClientProxy.h"
 #include "modules/websockets/WebSocketChannel.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/CString.h"
 #include "platform/wtf/text/WTFString.h"
 #include "public/platform/WebURL.h"
diff --git a/third_party/WebKit/Source/modules/websockets/WorkerWebSocketChannel.cpp b/third_party/WebKit/Source/modules/websockets/WorkerWebSocketChannel.cpp
index 5cf9ad5..572a1c9 100644
--- a/third_party/WebKit/Source/modules/websockets/WorkerWebSocketChannel.cpp
+++ b/third_party/WebKit/Source/modules/websockets/WorkerWebSocketChannel.cpp
@@ -43,7 +43,6 @@
 #include "platform/heap/SafePoint.h"
 #include "platform/wtf/Assertions.h"
 #include "platform/wtf/Functional.h"
-#include "platform/wtf/PtrUtil.h"
 #include "platform/wtf/text/CString.h"
 #include "platform/wtf/text/WTFString.h"
 #include "public/platform/TaskType.h"
@@ -434,7 +433,7 @@
 void Bridge::Send(const CString& message) {
   DCHECK(main_channel_client_);
   std::unique_ptr<Vector<char>> data =
-      WTF::WrapUnique(new Vector<char>(message.length()));
+      std::make_unique<Vector<char>>(message.length());
   if (message.length())
     memcpy(data->data(), static_cast<const char*>(message.data()),
            message.length());
diff --git a/third_party/WebKit/Source/modules/xr/XRDevice.h b/third_party/WebKit/Source/modules/xr/XRDevice.h
index 385d1aa..1a856e8 100644
--- a/third_party/WebKit/Source/modules/xr/XRDevice.h
+++ b/third_party/WebKit/Source/modules/xr/XRDevice.h
@@ -32,7 +32,7 @@
   XR* xr() const { return xr_; }
 
   const String& deviceName() const { return device_name_; }
-  bool isExternal() const { return is_external_; }
+  bool external() const { return is_external_; }
 
   ScriptPromise supportsSession(ScriptState*,
                                 const XRSessionCreationOptions&) const;
diff --git a/third_party/WebKit/Source/modules/xr/XRDevice.idl b/third_party/WebKit/Source/modules/xr/XRDevice.idl
index 72830f9..d96ffb698 100644
--- a/third_party/WebKit/Source/modules/xr/XRDevice.idl
+++ b/third_party/WebKit/Source/modules/xr/XRDevice.idl
@@ -8,7 +8,7 @@
     RuntimeEnabled=WebXR
 ] interface XRDevice : EventTarget {
   readonly attribute DOMString deviceName;
-  readonly attribute boolean isExternal;
+  readonly attribute boolean external;
 
   [CallWith=ScriptState] Promise supportsSession([PermissiveDictionaryConversion] optional XRSessionCreationOptions options);
   [CallWith=ScriptState] Promise requestSession([PermissiveDictionaryConversion] optional XRSessionCreationOptions options);
diff --git a/third_party/WebKit/Source/modules/xr/XRFrameRequestCallback.idl b/third_party/WebKit/Source/modules/xr/XRFrameRequestCallback.idl
index 66dc93f..fc182d9b 100644
--- a/third_party/WebKit/Source/modules/xr/XRFrameRequestCallback.idl
+++ b/third_party/WebKit/Source/modules/xr/XRFrameRequestCallback.idl
@@ -3,4 +3,4 @@
 // found in the LICENSE file.
 
 // https://immersive-web.github.io/webxr/spec/latest/#callbackdef-xrframerequestcallback
-callback XRFrameRequestCallback = void (XRPresentationFrame frame);
+callback XRFrameRequestCallback = void (DOMHighResTimeStamp time, XRPresentationFrame frame);
diff --git a/third_party/WebKit/Source/modules/xr/XRFrameRequestCallbackCollection.cpp b/third_party/WebKit/Source/modules/xr/XRFrameRequestCallbackCollection.cpp
index 63fe34a..7e8ca76 100644
--- a/third_party/WebKit/Source/modules/xr/XRFrameRequestCallbackCollection.cpp
+++ b/third_party/WebKit/Source/modules/xr/XRFrameRequestCallbackCollection.cpp
@@ -50,7 +50,7 @@
 
     probe::AsyncTask async_task(context_, callback);
     probe::UserCallback probe(context_, "XRRequestFrame", AtomicString(), true);
-    callback->InvokeAndReportException(session, frame);
+    callback->InvokeAndReportException(session, 0, frame);
   }
 
   callbacks_to_invoke_.clear();
diff --git a/third_party/WebKit/Source/modules/xr/XRSession.cpp b/third_party/WebKit/Source/modules/xr/XRSession.cpp
index e4b3961..3e47e3d 100644
--- a/third_party/WebKit/Source/modules/xr/XRSession.cpp
+++ b/third_party/WebKit/Source/modules/xr/XRSession.cpp
@@ -122,7 +122,7 @@
   return promise;
 }
 
-int XRSession::requestFrame(V8XRFrameRequestCallback* callback) {
+int XRSession::requestAnimationFrame(V8XRFrameRequestCallback* callback) {
   // Don't allow any new frame requests once the session is ended.
   if (detached_)
     return 0;
@@ -141,7 +141,7 @@
   return id;
 }
 
-void XRSession::cancelFrame(int id) {
+void XRSession::cancelAnimationFrame(int id) {
   callback_collection_.CancelCallback(id);
 }
 
@@ -223,9 +223,9 @@
     XRLayer* frame_base_layer = base_layer_;
     frame_base_layer->OnFrameStart();
 
-    // Resolve the queued requestFrame callbacks. All XR rendering will happen
-    // within these calls. resolving_frame_ will be true for the duration of the
-    // callbacks.
+    // Resolve the queued requestAnimationFrame callbacks. All XR rendering will
+    // happen within these calls. resolving_frame_ will be true for the duration
+    // of the callbacks.
     AutoReset<bool> resolving(&resolving_frame_, true);
     callback_collection_.ExecuteCallbacks(this, presentation_frame);
 
diff --git a/third_party/WebKit/Source/modules/xr/XRSession.h b/third_party/WebKit/Source/modules/xr/XRSession.h
index ad61822..9262a50 100644
--- a/third_party/WebKit/Source/modules/xr/XRSession.h
+++ b/third_party/WebKit/Source/modules/xr/XRSession.h
@@ -51,8 +51,8 @@
                                         const String& type,
                                         const XRFrameOfReferenceOptions&);
 
-  int requestFrame(V8XRFrameRequestCallback*);
-  void cancelFrame(int id);
+  int requestAnimationFrame(V8XRFrameRequestCallback*);
+  void cancelAnimationFrame(int id);
 
   // Called by JavaScript to manually end the session.
   ScriptPromise end(ScriptState*);
diff --git a/third_party/WebKit/Source/modules/xr/XRSession.idl b/third_party/WebKit/Source/modules/xr/XRSession.idl
index 5918c8f29..eb8623a3 100644
--- a/third_party/WebKit/Source/modules/xr/XRSession.idl
+++ b/third_party/WebKit/Source/modules/xr/XRSession.idl
@@ -22,8 +22,8 @@
 
   [CallWith=ScriptState] Promise<XRFrameOfReference> requestFrameOfReference(XRFrameOfReferenceType type, [PermissiveDictionaryConversion] optional XRFrameOfReferenceOptions options);
 
-  long requestFrame(XRFrameRequestCallback callback);
-  void cancelFrame(long handle);
+  long requestAnimationFrame(XRFrameRequestCallback callback);
+  void cancelAnimationFrame(long handle);
 
   [CallWith=ScriptState] Promise<void> end();
 };
diff --git a/third_party/WebKit/Tools/Scripts/audit-non-blink-usage.py b/third_party/WebKit/Tools/Scripts/audit-non-blink-usage.py
index 3e4ce46..0797088 100755
--- a/third_party/WebKit/Tools/Scripts/audit-non-blink-usage.py
+++ b/third_party/WebKit/Tools/Scripts/audit-non-blink-usage.py
@@ -53,6 +53,9 @@
             'base::RepeatingCallback',
             'base::RepeatingClosure',
 
+            # //base/memory/ptr_util.h.
+            'base::WrapUnique',
+
             # Debugging helpers from //base/debug are allowed everywhere.
             'base::debug::.+',
 
diff --git a/third_party/custom_tabs_client/BUILD.gn b/third_party/custom_tabs_client/BUILD.gn
index e4fd0f0..86b76fe 100644
--- a/third_party/custom_tabs_client/BUILD.gn
+++ b/third_party/custom_tabs_client/BUILD.gn
@@ -8,6 +8,14 @@
   resource_dirs = [ "src/Application/src/main/res" ]
   android_manifest = "src/Application/src/main/AndroidManifest.xml"
   custom_package = "org.chromium.customtabsclient"
+  deps = [
+    "//third_party/android_tools:android_support_v7_appcompat_java",
+  ]
+}
+
+android_resources("custom_tabs_support_resources") {
+  resource_dirs = [ "src/customtabs/res" ]
+  custom_package = "android.support.customtabs.browseractions"
 }
 
 android_apk("custom_tabs_client_example_apk") {
@@ -23,7 +31,9 @@
     ":chrome_tabs_client_example_apk_resources",
     ":custom_tabs_client_shared_java",
     ":custom_tabs_support_java",
+    "//third_party/android_tools:android_arch_lifecycle_common_java",
     "//third_party/android_tools:android_support_annotations_java",
+    "//third_party/android_tools:android_support_v7_appcompat_java",
   ]
   chromium_code = false
 }
@@ -44,8 +54,12 @@
 
 android_library("custom_tabs_support_java") {
   java_files = [
-    "src/customtabs/src/android/support/customtabs/browseractions/BrowserActionsIntent.java",
     "src/customtabs/src/android/support/customtabs/browseractions/BrowserActionItem.java",
+    "src/customtabs/src/android/support/customtabs/browseractions/BrowserActionsFallbackMenuAdapter.java",
+    "src/customtabs/src/android/support/customtabs/browseractions/BrowserActionsFallbackMenuDialog.java",
+    "src/customtabs/src/android/support/customtabs/browseractions/BrowserActionsFallbackMenuUi.java",
+    "src/customtabs/src/android/support/customtabs/browseractions/BrowserActionsFallbackMenuView.java",
+    "src/customtabs/src/android/support/customtabs/browseractions/BrowserActionsIntent.java",
     "src/customtabs/src/android/support/customtabs/CustomTabsCallback.java",
     "src/customtabs/src/android/support/customtabs/CustomTabsClient.java",
     "src/customtabs/src/android/support/customtabs/CustomTabsIntent.java",
@@ -58,8 +72,10 @@
     "src/customtabs/src/android/support/customtabs/TrustedWebUtils.java",
   ]
   deps = [
+    ":custom_tabs_support_resources",
     "//third_party/android_tools:android_support_annotations_java",
     "//third_party/android_tools:android_support_compat_java",
+    "//third_party/android_tools:android_support_v7_appcompat_java",
   ]
   srcjar_deps = [ ":chrome_custom_tabs_service_aidl" ]
   chromium_code = true
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 463e7a1..2de9a72 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -25273,6 +25273,7 @@
   <int value="-474322576" label="disable-quick-unlock-pin"/>
   <int value="-472013317" label="WebRTC-H264WithOpenH264FFmpeg:disabled"/>
   <int value="-471405972" label="ViewsProfileChooser:disabled"/>
+  <int value="-470948890" label="OfflinePagesDescriptivePendingStatus:enabled"/>
   <int value="-462205750" label="enable-service-worker-sync"/>
   <int value="-461292699" label="ContentSuggestionsCategoryOrder:enabled"/>
   <int value="-460313418" label="ProgressBarThrottle:enabled"/>
@@ -25417,6 +25418,7 @@
   <int value="-69427025" label="OfflinePagesPrefetchingUI:enabled"/>
   <int value="-68877684" label="BackgroundVideoTrackOptimization:enabled"/>
   <int value="-68225452" label="enable-translate-new-ux"/>
+  <int value="-67297229" label="OfflinePagesDescriptivePendingStatus:disabled"/>
   <int value="-59401847" label="ContentSuggestionsLargeThumbnail:disabled"/>
   <int value="-58242474" label="ash-disable-swipe-to-close-in-overview-mode"/>
   <int value="-57986995" label="DisablePostScriptPrinting:enabled"/>
@@ -44494,6 +44496,14 @@
   <int value="1" label="Supports DMS"/>
 </enum>
 
+<enum name="WiFiApChannelSwitch">
+  <int value="0" label="Unknown frequency range"/>
+  <int value="1" label="2.4GHz -&gt; 2.4GHz"/>
+  <int value="2" label="2.4GHz -&gt; 5GHz"/>
+  <int value="3" label="5GHz -&gt; 2.4GHz"/>
+  <int value="4" label="5GHz -&gt; 5GHz"/>
+</enum>
+
 <enum name="WiFiApMode">
   <int value="0" label="Unknown"/>
   <int value="1" label="Managed"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 9b65986..7e6279ea 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -49860,6 +49860,14 @@
   </summary>
 </histogram>
 
+<histogram name="Network.Shill.WiFi.ApChannelSwitch" enum="WiFiApChannelSwitch">
+  <owner>matthewmwang@chromium.org</owner>
+  <summary>
+    Chrome OS network usage metric sampled when an AP switches channels. Shows
+    the old frequency band and the new frequency band.
+  </summary>
+</histogram>
+
 <histogram name="Network.Shill.WiFi.ApDisconnectReason" enum="WiFiReasonCode">
   <owner>kirtika@chromium.org</owner>
   <summary>
diff --git a/ui/gfx/color_space.cc b/ui/gfx/color_space.cc
index 77674d1..f070b88 100644
--- a/ui/gfx/color_space.cc
+++ b/ui/gfx/color_space.cc
@@ -30,10 +30,9 @@
  public:
   SkColorSpaceCache() : SkColorSpaceCacheBase(kMaxCachedSkColorSpaces) {}
 };
-base::LazyInstance<SkColorSpaceCache>::DestructorAtExit g_sk_color_space_cache =
+base::LazyInstance<SkColorSpaceCache>::Leaky g_sk_color_space_cache =
     LAZY_INSTANCE_INITIALIZER;
-base::LazyInstance<base::Lock>::DestructorAtExit g_lock =
-    LAZY_INSTANCE_INITIALIZER;
+base::LazyInstance<base::Lock>::Leaky g_lock = LAZY_INSTANCE_INITIALIZER;
 
 }  // namespace
 
diff --git a/ui/gfx/icc_profile.cc b/ui/gfx/icc_profile.cc
index 26673b82..5c73ce5 100644
--- a/ui/gfx/icc_profile.cc
+++ b/ui/gfx/icc_profile.cc
@@ -35,8 +35,8 @@
  public:
   SpaceToProfileCache() : SpaceToProfileCacheBase(kMaxCachedICCProfiles) {}
 };
-base::LazyInstance<SpaceToProfileCache>::DestructorAtExit
-    g_space_to_profile_cache_mac = LAZY_INSTANCE_INITIALIZER;
+base::LazyInstance<SpaceToProfileCache>::Leaky g_space_to_profile_cache_mac =
+    LAZY_INSTANCE_INITIALIZER;
 
 // An MRU cache mapping data to ICCProfile objects, to avoid re-parsing
 // profiles every time they are read.
@@ -45,8 +45,8 @@
  public:
   DataToProfileCache() : DataToProfileCacheBase(kMaxCachedICCProfiles) {}
 };
-base::LazyInstance<DataToProfileCache>::DestructorAtExit
-    g_data_to_profile_cache = LAZY_INSTANCE_INITIALIZER;
+base::LazyInstance<DataToProfileCache>::Leaky g_data_to_profile_cache =
+    LAZY_INSTANCE_INITIALIZER;
 
 // An MRU cache mapping IDs to ICCProfile objects. This is necessary for
 // constructing LUT-based color transforms. In particular, it is used to look
@@ -57,7 +57,7 @@
  public:
   IdToProfileCache() : IdToProfileCacheBase(kMaxCachedICCProfiles) {}
 };
-base::LazyInstance<IdToProfileCache>::DestructorAtExit g_id_to_profile_cache =
+base::LazyInstance<IdToProfileCache>::Leaky g_id_to_profile_cache =
     LAZY_INSTANCE_INITIALIZER;
 
 // The next id to assign to a color profile.
@@ -65,8 +65,7 @@
 
 // Lock that must be held to access |g_space_to_profile_cache_mac| and
 // |g_next_unused_id|.
-base::LazyInstance<base::Lock>::DestructorAtExit g_lock =
-    LAZY_INSTANCE_INITIALIZER;
+base::LazyInstance<base::Lock>::Leaky g_lock = LAZY_INSTANCE_INITIALIZER;
 
 }  // namespace