diff --git a/DEPS b/DEPS
index 4be08bb..121083e 100644
--- a/DEPS
+++ b/DEPS
@@ -55,11 +55,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': 'd48fd05bd9c02dfc411514f4614c941067b81790',
+  'skia_revision': '6566b97b76d3cb76ee255a3d128d048376d300bd',
   # 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': '616b12680c446a0c2393e0b45af7d10151eb3e0a',
+  'v8_revision': '0a86db8f93804983baf12747d07bd631197636c7',
   # 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.
@@ -75,11 +75,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
-  'swiftshader_revision': 'ec5da193b1c29dc8bee19dcc8fe297901ff74911',
+  'swiftshader_revision': '6e27fea85f863bcc620761efc678e9ad3e5f6ff4',
   # 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': '78b334a824c42138f5e98060638b1643b0279602',
+  'pdfium_revision': '704cf8361659c4719d1294048a0e37991fa41748',
   # 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.
@@ -595,7 +595,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '34842fa3c36988840c89f5bc6a68503175acf7d9',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '8ed8e56149995cdb05d1566bc23a97bf93b9a236', # commit position 20237
+    Var('webrtc_git') + '/src.git' + '@' + '5d7fd19c209f703b6abf455bf69793e6741a1a4d', # commit position 20237
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn
index ab91291..e0fbc06 100644
--- a/android_webview/BUILD.gn
+++ b/android_webview/BUILD.gn
@@ -411,6 +411,9 @@
     ]
     configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
     configs += [ "//build/config/android:hide_all_but_jni" ]
+    if (use_lld) {
+      configs += [ "//build/config/android:lld_pack_relocations" ]
+    }
   }
 }
 
diff --git a/ash/display/display_manager_unittest.cc b/ash/display/display_manager_unittest.cc
index c2888e9..f09f1063 100644
--- a/ash/display/display_manager_unittest.cc
+++ b/ash/display/display_manager_unittest.cc
@@ -1137,7 +1137,7 @@
   const display::ManagedDisplayInfo display_info1 = GetDisplayInfoAt(0);
   const display::ManagedDisplayInfo display_info2 = GetDisplayInfoAt(1);
 
-  constexpr uint32_t touch_device_identifier_2 = 2345;
+  display::TouchDeviceIdentifier touch_device_identifier_2(2345);
 
   EXPECT_FALSE(display_info2.touch_calibration_data_map().size());
 
@@ -1203,7 +1203,7 @@
   EXPECT_EQ(touch_data, GetDisplayInfoAt(1).GetTouchCalibrationData(
                             touch_device_identifier_2));
 
-  uint32_t touch_device_identifier_2_2 = 2456;
+  display::TouchDeviceIdentifier touch_device_identifier_2_2(2456);
   display_manager()->SetTouchCalibrationData(
       display_info2.id(), point_pair_quad_2, bounds_at_calibration,
       touch_device_identifier_2_2);
diff --git a/ash/display/touch_calibrator_controller.cc b/ash/display/touch_calibrator_controller.cc
index 64532a6..8b78be3 100644
--- a/ash/display/touch_calibrator_controller.cc
+++ b/ash/display/touch_calibrator_controller.cc
@@ -133,15 +133,15 @@
     const CalibrationPointPairQuad& pairs,
     const gfx::Size& display_size) {
   bool did_find_touch_device = false;
-  uint32_t touch_device_identifier =
-      display::TouchCalibrationData::GetFallbackTouchDeviceIdentifier();
+  display::TouchDeviceIdentifier touch_device_identifier =
+      display::TouchDeviceIdentifier::GetFallbackTouchDeviceIdentifier();
 
   const std::vector<ui::TouchscreenDevice>& device_list =
       ui::DeviceDataManager::GetInstance()->GetTouchscreenDevices();
   for (const auto& device : device_list) {
     if (device.id == touch_device_id_) {
       touch_device_identifier =
-          display::TouchCalibrationData::GenerateTouchDeviceIdentifier(device);
+          display::TouchDeviceIdentifier::FromDevice(device);
       did_find_touch_device = true;
       break;
     }
@@ -152,13 +152,13 @@
             << "complete touch calibration for display with id: "
             << target_display_.id() << ". Storing it as a fallback";
   } else if (touch_device_identifier ==
-             display::TouchCalibrationData::
+             display::TouchDeviceIdentifier::
                  GetFallbackTouchDeviceIdentifier()) {
     LOG(ERROR)
         << "Hash collision in generating touch device identifier for "
         << " device. Hash Generated: " << touch_device_identifier
         << " || Fallback touch device identifier: "
-        << display::TouchCalibrationData::GetFallbackTouchDeviceIdentifier();
+        << display::TouchDeviceIdentifier::GetFallbackTouchDeviceIdentifier();
   }
 
   if (opt_callback_) {
diff --git a/ash/display/touch_calibrator_controller_unittest.cc b/ash/display/touch_calibrator_controller_unittest.cc
index a7412db..30bb40f 100644
--- a/ash/display/touch_calibrator_controller_unittest.cc
+++ b/ash/display/touch_calibrator_controller_unittest.cc
@@ -229,8 +229,8 @@
   const display::ManagedDisplayInfo& info =
       display_manager()->GetDisplayInfo(touch_display.id());
 
-  uint32_t touch_device_identifier =
-      display::TouchCalibrationData::GenerateTouchDeviceIdentifier(touchdevice);
+  display::TouchDeviceIdentifier touch_device_identifier =
+      display::TouchDeviceIdentifier::FromDevice(touchdevice);
   EXPECT_TRUE(info.HasTouchCalibrationData(touch_device_identifier));
   EXPECT_EQ(calibration_data,
             info.GetTouchCalibrationData(touch_device_identifier));
@@ -273,7 +273,7 @@
   const display::ManagedDisplayInfo& info =
       display_manager()->GetDisplayInfo(touch_display.id());
 
-  uint32_t random_touch_device_identifier = 123456;
+  display::TouchDeviceIdentifier random_touch_device_identifier(123456);
   EXPECT_TRUE(info.HasTouchCalibrationData(random_touch_device_identifier));
   EXPECT_EQ(calibration_data,
             info.GetTouchCalibrationData(random_touch_device_identifier));
diff --git a/ash/wm/splitview/split_view_overview_overlay.cc b/ash/wm/splitview/split_view_overview_overlay.cc
index d45be4b3..73b06a37 100644
--- a/ash/wm/splitview/split_view_overview_overlay.cc
+++ b/ash/wm/splitview/split_view_overview_overlay.cc
@@ -10,6 +10,7 @@
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/wm/root_window_finder.h"
 #include "ash/wm/splitview/split_view_controller.h"
+#include "base/i18n/rtl.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/aura/window.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -37,15 +38,12 @@
 constexpr SkColor kLabelBackgroundColor = SK_ColorBLACK;
 constexpr SkColor kLabelEnabledColor = SK_ColorWHITE;
 
-// Height of the labels.
-constexpr int kLabelHeightDp = 40;
-
 // The size of the warning icon in the when a window incompatible with
 // splitscreen is dragged.
 constexpr int kWarningIconSizeDp = 24;
 
-// The amount of vertical inset to be applied on a rotated image label view.
-constexpr int kRotatedViewVerticalInsetDp = 6;
+// The amount of inset to be applied on a rotated image label view.
+constexpr int kRotatedViewInsetDp = 8;
 
 // The amount of round applied to the corners of a rotated image label view.
 constexpr int kRotatedViewVerticalRoundRectRadius = 20;
@@ -111,8 +109,8 @@
     AddChildView(icon_);
     AddChildView(label_);
     layout->SetFlexForView(label_, 1);
-    SetBorder(
-        views::CreateEmptyBorder(gfx::Insets(kRotatedViewVerticalInsetDp, 0)));
+    SetBorder(views::CreateEmptyBorder(
+        gfx::Insets(kRotatedViewInsetDp, kRotatedViewInsetDp)));
   }
 
   ~RotatedImageLabelView() override = default;
@@ -232,18 +230,22 @@
 
     // Calculate the bounds of the views which contain the guidance text and
     // icon. Rotate the two views in landscape mode.
-    const int rotated_bounds_height =
-        kLabelHeightDp +
-        (left_rotated_view_->icon_visible() ? kWarningIconSizeDp : 0);
-    const int rotated_x =
-        landscape ? 0 : width() / 2 - kHighlightScreenWidth / 2;
-    const gfx::Rect rotated_bounds(
-        rotated_x, highlight_height / 2 - rotated_bounds_height / 2,
-        kHighlightScreenWidth, rotated_bounds_height);
+    const gfx::Size size = left_rotated_view_->GetPreferredSize();
+    const gfx::Rect rotated_bounds(highlight_width / 2 - size.width() / 2,
+                                   highlight_height / 2 - size.height() / 2,
+                                   size.width(), size.height());
+
+    // In portrait mode, there is no need to rotate the text and warning icon.
+    // In landscape mode, rotate the left text 90 degrees clockwise in rtl and
+    // 90 degress anti clockwise in ltr. The right text is rotated 90 degrees in
+    // the opposite direction of the left text.
+    double left_rotation_angle = 0.0;
+    if (landscape)
+      left_rotation_angle = 90.0 * (base::i18n::IsRTL() ? 1 : -1);
     left_rotated_view_->OnBoundsUpdated(rotated_bounds,
-                                        landscape ? -90.0 : 0.0 /* angle */);
+                                        left_rotation_angle /* angle */);
     right_rotated_view_->OnBoundsUpdated(rotated_bounds,
-                                         landscape ? 90.0 : 0.0 /* angle */);
+                                         -left_rotation_angle /* angle */);
   }
 
  private:
@@ -255,6 +257,7 @@
   void SetLabelsText(const base::string16& text) {
     left_rotated_view_->SetLabelText(text);
     right_rotated_view_->SetLabelText(text);
+    Layout();
   }
 
   void SetIconsVisible(bool visible) {
diff --git a/base/BUILD.gn b/base/BUILD.gn
index aa113eb..3c9ead2 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -120,9 +120,10 @@
     # non-component case.
     static_component_type = "source_set"
   }
-  if (is_nacl) {
+  if (is_nacl || is_ios) {
     # Link errors related to malloc functions if libbase for nacl is
-    # compiled with jumbo.
+    # compiled with jumbo: https://crbug.com/775959.
+    # Same for ios: https://crbug.com/776313.
     never_build_jumbo = true
   }
 
diff --git a/base/mac/sdk_forward_declarations.h b/base/mac/sdk_forward_declarations.h
index cc405f9..af7b2978 100644
--- a/base/mac/sdk_forward_declarations.h
+++ b/base/mac/sdk_forward_declarations.h
@@ -100,6 +100,7 @@
 @property(readonly, copy) NSString* activityType;
 @property(copy) NSDictionary* userInfo;
 @property(copy) NSURL* webpageURL;
+@property(copy) NSString* title;
 - (instancetype)initWithActivityType:(NSString*)activityType;
 - (void)becomeCurrent;
 - (void)invalidate;
diff --git a/base/metrics/persistent_histogram_allocator.cc b/base/metrics/persistent_histogram_allocator.cc
index 92f96af..47b7a07 100644
--- a/base/metrics/persistent_histogram_allocator.cc
+++ b/base/metrics/persistent_histogram_allocator.cc
@@ -23,6 +23,9 @@
 #include "base/metrics/statistics_recorder.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/pickle.h"
+#include "base/process/process_handle.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_split.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/lock.h"
 
@@ -834,22 +837,71 @@
 }
 
 // static
+FilePath GlobalHistogramAllocator::ConstructFilePath(const FilePath& dir,
+                                                     StringPiece name) {
+  return dir.AppendASCII(name).AddExtension(
+      PersistentMemoryAllocator::kFileExtension);
+}
+
+// static
+FilePath GlobalHistogramAllocator::ConstructFilePathForUploadDir(
+    const FilePath& dir,
+    StringPiece name,
+    base::Time stamp,
+    ProcessId pid) {
+  return ConstructFilePath(
+      dir,
+      StringPrintf("%.*s-%lX-%lX", static_cast<int>(name.length()), name.data(),
+                   static_cast<long>(stamp.ToTimeT()), static_cast<long>(pid)));
+}
+
+// static
+bool GlobalHistogramAllocator::ParseFilePath(const FilePath& path,
+                                             std::string* out_name,
+                                             Time* out_stamp,
+                                             ProcessId* out_pid) {
+  std::string filename = path.BaseName().AsUTF8Unsafe();
+  std::vector<base::StringPiece> parts = base::SplitStringPiece(
+      filename, "-.", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
+  if (parts.size() != 4)
+    return false;
+
+  if (out_name)
+    *out_name = parts[0].as_string();
+
+  if (out_stamp) {
+    int64_t stamp;
+    if (!HexStringToInt64(parts[1], &stamp))
+      return false;
+    *out_stamp = Time::FromTimeT(static_cast<time_t>(stamp));
+  }
+
+  if (out_pid) {
+    int64_t pid;
+    if (!HexStringToInt64(parts[2], &pid))
+      return false;
+    *out_pid = static_cast<ProcessId>(pid);
+  }
+
+  return true;
+}
+
+// static
 void GlobalHistogramAllocator::ConstructFilePaths(const FilePath& dir,
                                                   StringPiece name,
                                                   FilePath* out_base_path,
                                                   FilePath* out_active_path,
                                                   FilePath* out_spare_path) {
   if (out_base_path)
-    *out_base_path = MakeMetricsFilePath(dir, name);
+    *out_base_path = ConstructFilePath(dir, name);
 
   if (out_active_path) {
     *out_active_path =
-        MakeMetricsFilePath(dir, name.as_string().append("-active"));
+        ConstructFilePath(dir, name.as_string().append("-active"));
   }
 
   if (out_spare_path) {
-    *out_spare_path =
-        MakeMetricsFilePath(dir, name.as_string().append("-spare"));
+    *out_spare_path = ConstructFilePath(dir, name.as_string().append("-spare"));
   }
 }
 
@@ -862,20 +914,18 @@
     FilePath* out_active_path,
     FilePath* out_spare_path) {
   if (out_upload_path) {
-    std::string name_stamp =
-        StringPrintf("%s-%X", name.c_str(),
-                     static_cast<unsigned int>(Time::Now().ToTimeT()));
-    *out_upload_path = MakeMetricsFilePath(upload_dir, name_stamp);
+    *out_upload_path = ConstructFilePathForUploadDir(
+        upload_dir, name, Time::Now(), GetCurrentProcId());
   }
 
   if (out_active_path) {
     *out_active_path =
-        MakeMetricsFilePath(active_dir, name + std::string("-active"));
+        ConstructFilePath(active_dir, name + std::string("-active"));
   }
 
   if (out_spare_path) {
     *out_spare_path =
-        MakeMetricsFilePath(active_dir, name + std::string("-spare"));
+        ConstructFilePath(active_dir, name + std::string("-spare"));
   }
 }
 
@@ -1065,11 +1115,4 @@
   }
 }
 
-// static
-FilePath GlobalHistogramAllocator::MakeMetricsFilePath(const FilePath& dir,
-                                                       StringPiece name) {
-  return dir.AppendASCII(name).AddExtension(
-      PersistentMemoryAllocator::kFileExtension);
-}
-
 }  // namespace base
diff --git a/base/metrics/persistent_histogram_allocator.h b/base/metrics/persistent_histogram_allocator.h
index a6e2ff5..3766ab1 100644
--- a/base/metrics/persistent_histogram_allocator.h
+++ b/base/metrics/persistent_histogram_allocator.h
@@ -423,6 +423,21 @@
                                         uint64_t id,
                                         StringPiece name);
 
+  // Constructs a filename using a name.
+  static FilePath ConstructFilePath(const FilePath& dir, StringPiece name);
+
+  // Like above but with timestamp and pid for use in upload directories.
+  static FilePath ConstructFilePathForUploadDir(const FilePath& dir,
+                                                StringPiece name,
+                                                base::Time stamp,
+                                                ProcessId pid);
+
+  // Parses a filename to extract name, timestamp, and pid.
+  static bool ParseFilePath(const FilePath& path,
+                            std::string* out_name,
+                            Time* out_stamp,
+                            ProcessId* out_pid);
+
   // Constructs a set of names in |dir| based on name that can be used for a
   // base + active persistent memory mapped location for CreateWithActiveFile().
   // The spare path is a file that can be pre-created and moved to be active
diff --git a/base/metrics/persistent_histogram_allocator_unittest.cc b/base/metrics/persistent_histogram_allocator_unittest.cc
index 0f7ba2bf..c492a246 100644
--- a/base/metrics/persistent_histogram_allocator_unittest.cc
+++ b/base/metrics/persistent_histogram_allocator_unittest.cc
@@ -129,6 +129,34 @@
   EXPECT_FALSE(recovered);
 }
 
+TEST_F(PersistentHistogramAllocatorTest, ConstructPaths) {
+  const FilePath dir_path(FILE_PATH_LITERAL("foo/"));
+  const std::string dir_string =
+      dir_path.NormalizePathSeparators().AsUTF8Unsafe();
+
+  FilePath path = GlobalHistogramAllocator::ConstructFilePath(dir_path, "bar");
+  EXPECT_EQ(dir_string + "bar.pma", path.AsUTF8Unsafe());
+
+  std::string name;
+  Time stamp;
+  ProcessId pid;
+  EXPECT_FALSE(
+      GlobalHistogramAllocator::ParseFilePath(path, &name, nullptr, nullptr));
+  EXPECT_FALSE(
+      GlobalHistogramAllocator::ParseFilePath(path, nullptr, &stamp, nullptr));
+  EXPECT_FALSE(
+      GlobalHistogramAllocator::ParseFilePath(path, nullptr, nullptr, &pid));
+
+  path = GlobalHistogramAllocator::ConstructFilePathForUploadDir(
+      dir_path, "bar", Time::FromTimeT(12345), 6789);
+  EXPECT_EQ(dir_string + "bar-3039-1A85.pma", path.AsUTF8Unsafe());
+  ASSERT_TRUE(
+      GlobalHistogramAllocator::ParseFilePath(path, &name, &stamp, &pid));
+  EXPECT_EQ(name, "bar");
+  EXPECT_EQ(Time::FromTimeT(12345), stamp);
+  EXPECT_EQ(static_cast<ProcessId>(6789), pid);
+}
+
 TEST_F(PersistentHistogramAllocatorTest, CreateWithFile) {
   const char temp_name[] = "CreateWithFileTest";
   ScopedTempDir temp_dir;
diff --git a/build/android/gyp/create_test_runner_script.py b/build/android/gyp/create_test_runner_script.py
index a67da882..587416d 100755
--- a/build/android/gyp/create_test_runner_script.py
+++ b/build/android/gyp/create_test_runner_script.py
@@ -82,7 +82,7 @@
   group.add_argument('--android-manifest-path')
   group.add_argument('--resource-zips')
   group.add_argument('--robolectric-runtime-deps-dir')
-  group.add_argument('--enable-relocation-packing')
+  group.add_argument('--non-native-packed-relocations')
   args, test_runner_args = parser.parse_known_args(
       build_utils.ExpandFileArgs(args))
 
@@ -95,8 +95,8 @@
   test_runner_path = RelativizePathToScript(test_runner_path)
 
   test_runner_path_args = []
-  if args.enable_relocation_packing and args.enable_relocation_packing == "1":
-    test_runner_args.append('--enable-relocation-packing')
+  if 'True' == args.non_native_packed_relocations:
+    test_runner_args.append('--non-native-packed-relocations')
   if args.additional_apk_list:
     args.additional_apks.extend(
         build_utils.ParseGnList(args.additional_apk_list))
diff --git a/build/android/gyp/write_build_config.py b/build/android/gyp/write_build_config.py
index 395ef1b..a463251 100755
--- a/build/android/gyp/write_build_config.py
+++ b/build/android/gyp/write_build_config.py
@@ -307,8 +307,10 @@
   parser.add_option('--secondary-abi-shared-libraries-runtime-deps',
                     help='Path to file containing runtime deps for secondary '
                          'abi shared libraries.')
-  parser.add_option('--enable-relocation-packing',
-                    help='Whether relocation packing is enabled.')
+  parser.add_option('--non-native-packed-relocations',
+                    action='store_true', default=False,
+                    help='Whether relocation packing was applied using the '
+                         'Android relocation_packer tool.')
 
   # apk options
   parser.add_option('--apk-path', help='Path to the target\'s apk output.')
@@ -476,7 +478,8 @@
       deps_info['incremental_apk_path'] = options.incremental_apk_path
       deps_info['incremental_install_json_path'] = (
           options.incremental_install_json_path)
-      deps_info['enable_relocation_packing'] = options.enable_relocation_packing
+      deps_info['non_native_packed_relocations'] = str(
+          options.non_native_packed_relocations)
 
   requires_javac_classpath = options.type in (
       'java_binary', 'java_library', 'android_apk', 'dist_jar')
diff --git a/build/android/pylib/instrumentation/instrumentation_test_instance.py b/build/android/pylib/instrumentation/instrumentation_test_instance.py
index 91f500dd..0651134 100644
--- a/build/android/pylib/instrumentation/instrumentation_test_instance.py
+++ b/build/android/pylib/instrumentation/instrumentation_test_instance.py
@@ -697,7 +697,7 @@
     self._store_tombstones = args.store_tombstones
     self._symbolizer = stack_symbolizer.Symbolizer(
         self.apk_under_test.path if self.apk_under_test else None,
-        args.enable_relocation_packing)
+        args.non_native_packed_relocations)
 
   def _initializeEditPrefsAttributes(self, args):
     if not hasattr(args, 'shared_prefs_file') or not args.shared_prefs_file:
diff --git a/build/android/pylib/symbols/stack_symbolizer.py b/build/android/pylib/symbols/stack_symbolizer.py
index 6de896a..c1c9afb 100644
--- a/build/android/pylib/symbols/stack_symbolizer.py
+++ b/build/android/pylib/symbols/stack_symbolizer.py
@@ -32,9 +32,9 @@
   """A helper class to symbolize stack."""
 
   def __init__(self, apk_under_test=None,
-               enable_relocation_packing=None):
+               non_native_packed_relocations=None):
     self._apk_under_test = apk_under_test
-    self._enable_relocation_packing = enable_relocation_packing
+    self._non_native_packed_relocations = non_native_packed_relocations
     self._libs_dir = None
     self._apk_libs = []
     self._has_unzipped = False
@@ -57,7 +57,7 @@
   def UnzipAPKIfNecessary(self):
     """Unzip apk if packed relocation is enabled."""
     if (self._has_unzipped
-        or not self._enable_relocation_packing
+        or not self._non_native_packed_relocations
         or not self._apk_under_test):
       return
     self._libs_dir = tempfile.mkdtemp()
@@ -89,7 +89,7 @@
 
     cmd = [_STACK_TOOL, '--arch', arch, '--output-directory',
            constants.GetOutDirectory(), '--more-info']
-    if self._enable_relocation_packing and self._apk_libs:
+    if self._non_native_packed_relocations and self._apk_libs:
       for apk_lib in self._apk_libs:
         cmd.extend(['--packed-lib', apk_lib])
     env = dict(os.environ)
diff --git a/build/android/test_runner.py b/build/android/test_runner.py
index 4c16340..bf2b6d4e 100755
--- a/build/android/test_runner.py
+++ b/build/android/test_runner.py
@@ -417,10 +417,10 @@
       dest='render_results_dir',
       help='Directory to pull render test result images off of the device to.')
   parser.add_argument(
-      '--enable-relocation-packing',
-      dest='enable_relocation_packing',
+      '--non-native-packed-relocations',
       action='store_true',
-      help='Whether relocation packing is enabled.')
+      help='Whether relocations were packed using the Android '
+           'relocation_packer tool.')
   def package_replacement(arg):
     split_arg = arg.split(',')
     if len(split_arg) != 2:
diff --git a/build/android/tombstones.py b/build/android/tombstones.py
index 6e711ff..8a3020a 100755
--- a/build/android/tombstones.py
+++ b/build/android/tombstones.py
@@ -199,8 +199,7 @@
 
 
 def ResolveTombstones(device, resolve_all_tombstones, include_stack_symbols,
-                      wipe_tombstones, jobs=4,
-                      apk_under_test=None, enable_relocation_packing=None,
+                      wipe_tombstones, jobs=4, apk_under_test=None,
                       tombstone_symbolizer=None):
   """Resolve tombstones in the device.
 
@@ -220,9 +219,7 @@
                                                     include_stack_symbols,
                                                     wipe_tombstones),
                             (tombstone_symbolizer
-                             or stack_symbolizer.Symbolizer(
-                                apk_under_test,
-                                enable_relocation_packing)))
+                             or stack_symbolizer.Symbolizer(apk_under_test)))
 
 
 def main():
diff --git a/build/config/android/BUILD.gn b/build/config/android/BUILD.gn
index 1ded9759..f50df8d 100644
--- a/build/config/android/BUILD.gn
+++ b/build/config/android/BUILD.gn
@@ -188,6 +188,10 @@
               rebase_path("//build/android/android_only_jni_exports.lst") ]
 }
 
+config("lld_pack_relocations") {
+  ldflags = [ "-Wl,--pack-dyn-relocs=android" ]
+}
+
 # Instrumentation -------------------------------------------------------------
 #
 # The BUILDCONFIG file sets the "default_cygprofile_instrumentation" config on
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index dd6df00..fe92b30 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -304,11 +304,9 @@
         }
       }
     }
-    if (defined(invoker.enable_relocation_packing)) {
-      args += [
-        "--enable-relocation-packing",
-        invoker.enable_relocation_packing,
-      ]
+    if (defined(invoker.non_native_packed_relocations) &&
+        invoker.non_native_packed_relocations) {
+      args += [ "--non-native-packed-relocations" ]
     }
     if (defined(invoker.java_sources_file)) {
       args += [
@@ -550,8 +548,8 @@
         }
         test_runner_args += [ "--apk-under-test=$_apk_under_test" ]
         test_runner_args += [
-          "--enable-relocation-packing",
-          "@FileArg($_rebased_apk_under_test_build_config:deps_info:enable_relocation_packing)",
+          "--non-native-packed-relocations",
+          "@FileArg($_rebased_apk_under_test_build_config:deps_info:non_native_packed_relocations)",
         ]
       }
       if (defined(invoker.proguard_enabled) && invoker.proguard_enabled) {
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index 23646ee..e1f11c9e 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -1805,15 +1805,8 @@
 
     _use_chromium_linker =
         defined(invoker.use_chromium_linker) && invoker.use_chromium_linker
-    _enable_relocation_packing = defined(invoker.enable_relocation_packing) &&
-                                 invoker.enable_relocation_packing
-
-    if (use_lld) {
-      # TODO(pcc): lld's output is currently incompatible with the relocation
-      # packer tool. We will probably want to implement relocation packing in
-      # lld itself eventually. http://crbug.com/760838.
-      _enable_relocation_packing = false
-    }
+    _pack_relocations =
+        defined(invoker.pack_relocations) && invoker.pack_relocations
 
     _load_library_from_apk =
         defined(invoker.load_library_from_apk) && invoker.load_library_from_apk
@@ -1822,16 +1815,17 @@
 
     assert(_use_chromium_linker || true)  # Mark as used.
     assert(_requires_sdk_api_level_23 || true)
-    if (_enable_relocation_packing) {
-      assert(_use_chromium_linker || _requires_sdk_api_level_23,
-             "enable_relocation_packing requires either use_chromium_linker " +
-                 "or requires_sdk_api_level_23")
-    }
-    if (_load_library_from_apk) {
-      assert(_use_chromium_linker || _requires_sdk_api_level_23,
-             "load_library_from_apk requires use_chromium_linker " +
-                 "or requires_sdk_api_level_23")
-    }
+    assert(!_pack_relocations || !use_lld,
+           "Use //build/config/android:lld_pack_relocations to pack " +
+               "relocations when use_lld=true.")
+    assert(!_pack_relocations || _use_chromium_linker ||
+               _requires_sdk_api_level_23,
+           "pack_relocations requires either use_chromium_linker " +
+               "or requires_sdk_api_level_23")
+    assert(!_load_library_from_apk || _use_chromium_linker ||
+               _requires_sdk_api_level_23,
+           "load_library_from_apk requires use_chromium_linker " +
+               "or requires_sdk_api_level_23")
 
     # The dependency that makes the chromium linker, if any is needed.
     _native_libs_deps = []
@@ -1977,11 +1971,7 @@
       if (_proguard_enabled) {
         proguard_info = "$_proguard_output_jar_path.info"
       }
-      if (_enable_relocation_packing) {
-        enable_relocation_packing = "1"
-      } else {
-        enable_relocation_packing = "0"
-      }
+      non_native_packed_relocations = _pack_relocations
 
       # Don't depend on the runtime_deps target in order to avoid having to
       # build the native libraries just to create the .build_config file.
@@ -2327,7 +2317,7 @@
     assert(_secondary_abi_native_libs_file_arg != "" &&
            _secondary_abi_native_libs_file_arg_dep != "")  # Mark as used.
 
-    if (_native_libs_deps != [] && _enable_relocation_packing) {
+    if (_native_libs_deps != [] && _pack_relocations) {
       _prepare_native_target_name = "${_template_name}__prepare_native"
       _native_libs_json = "$gen_dir/packed-libs/filelist.json"
       _rebased_native_libs_json = rebase_path(_native_libs_json, root_build_dir)
@@ -2397,7 +2387,7 @@
       stack_script(_create_stack_script_rule_name) {
         stack_target_name = invoker.target_name
         deps = _native_libs_deps
-        if (_native_libs_deps != [] && _enable_relocation_packing) {
+        if (_native_libs_deps != [] && _pack_relocations) {
           packed_libraries = _native_libs_file_arg
           deps += [ _native_libs_file_arg_dep ]
         }
diff --git a/build/secondary/third_party/crashpad/crashpad/test/BUILD.gn b/build/secondary/third_party/crashpad/crashpad/test/BUILD.gn
index 6c8f3d9..c9375a1 100644
--- a/build/secondary/third_party/crashpad/crashpad/test/BUILD.gn
+++ b/build/secondary/third_party/crashpad/crashpad/test/BUILD.gn
@@ -49,6 +49,9 @@
     "//third_party/crashpad/crashpad/snapshot",
     "//third_party/crashpad/crashpad/util",
   ]
+  data = [
+    "test_paths_test_data_root.txt",
+  ]
   include_dirs = [ ".." ]
   if (is_mac) {
     libs = [ "bsm" ]
@@ -57,11 +60,13 @@
 
 static_library("crashpad_gtest_main") {
   testonly = true
+  defines = [ "CRASHPAD_IN_CHROMIUM" ]
   sources = [
     "gtest_main.cc",
   ]
   deps = [
     ":crashpad_test",
+    "//base/test:test_support",
     "//testing/gtest",
   ]
   include_dirs = [ ".." ]
@@ -69,11 +74,13 @@
 
 static_library("crashpad_gmock_main") {
   testonly = true
+  defines = [ "CRASHPAD_IN_CHROMIUM" ]
   sources = [
     "gmock_main.cc",
   ]
   deps = [
     ":crashpad_test",
+    "//base/test:test_support",
     "//testing/gmock",
     "//testing/gtest",
   ]
diff --git a/build/secondary/third_party/crashpad/crashpad/util/BUILD.gn b/build/secondary/third_party/crashpad/crashpad/util/BUILD.gn
index f82acc3..e83602b 100644
--- a/build/secondary/third_party/crashpad/crashpad/util/BUILD.gn
+++ b/build/secondary/third_party/crashpad/crashpad/util/BUILD.gn
@@ -414,7 +414,7 @@
   ]
 
   if (is_win) {
-    deps += [
+    data_deps = [
       ":crashpad_util_test_process_info_test_child",
       ":crashpad_util_test_safe_terminate_process_test_child",
     ]
@@ -431,6 +431,12 @@
   }
 
   include_dirs = [ ".." ]
+  defines = [ "CRASHPAD_IN_CHROMIUM" ]
+
+  data = [
+    "net/http_transport_test_server.py",
+    "net/testdata/",
+  ]
 }
 
 if (is_win) {
diff --git a/cc/debug/rendering_stats.cc b/cc/debug/rendering_stats.cc
index 5ba58d73..c17edb4 100644
--- a/cc/debug/rendering_stats.cc
+++ b/cc/debug/rendering_stats.cc
@@ -80,24 +80,4 @@
   return std::move(record_data);
 }
 
-void RenderingStats::Add(const RenderingStats& other) {
-  frame_count += other.frame_count;
-  visible_content_area += other.visible_content_area;
-  approximated_visible_content_area += other.approximated_visible_content_area;
-  checkerboarded_visible_content_area +=
-      other.checkerboarded_visible_content_area;
-  checkerboarded_no_recording_content_area +=
-      other.checkerboarded_no_recording_content_area;
-  checkerboarded_needs_raster_content_area +=
-      other.checkerboarded_needs_raster_content_area;
-
-  draw_duration.Add(other.draw_duration);
-  draw_duration_estimate.Add(other.draw_duration_estimate);
-  begin_main_frame_to_commit_duration.Add(
-      other.begin_main_frame_to_commit_duration);
-  commit_to_activate_duration.Add(other.commit_to_activate_duration);
-  commit_to_activate_duration_estimate.Add(
-      other.commit_to_activate_duration_estimate);
-}
-
 }  // namespace cc
diff --git a/cc/debug/rendering_stats.h b/cc/debug/rendering_stats.h
index 06a9e03..156db0c 100644
--- a/cc/debug/rendering_stats.h
+++ b/cc/debug/rendering_stats.h
@@ -41,9 +41,6 @@
   RenderingStats(const RenderingStats& other);
   ~RenderingStats();
 
-  // Note: when adding new members, please remember to update Add in
-  // rendering_stats.cc.
-
   int64_t frame_count;
   int64_t visible_content_area;
   int64_t approximated_visible_content_area;
@@ -59,7 +56,6 @@
 
   std::unique_ptr<base::trace_event::ConvertableToTraceFormat> AsTraceableData()
       const;
-  void Add(const RenderingStats& other);
 };
 
 }  // namespace cc
diff --git a/cc/debug/rendering_stats_instrumentation.cc b/cc/debug/rendering_stats_instrumentation.cc
index f72411c..e74b939 100644
--- a/cc/debug/rendering_stats_instrumentation.cc
+++ b/cc/debug/rendering_stats_instrumentation.cc
@@ -22,23 +22,11 @@
 
 RenderingStatsInstrumentation::~RenderingStatsInstrumentation() {}
 
-RenderingStats RenderingStatsInstrumentation::impl_thread_rendering_stats() {
+RenderingStats RenderingStatsInstrumentation::TakeImplThreadRenderingStats() {
   base::AutoLock scoped_lock(lock_);
-  return impl_thread_rendering_stats_;
-}
-
-RenderingStats RenderingStatsInstrumentation::GetRenderingStats() {
-  base::AutoLock scoped_lock(lock_);
-  RenderingStats rendering_stats;
-  rendering_stats = impl_thread_rendering_stats_accu_;
-  rendering_stats.Add(impl_thread_rendering_stats_);
-  return rendering_stats;
-}
-
-void RenderingStatsInstrumentation::AccumulateAndClearImplThreadStats() {
-  base::AutoLock scoped_lock(lock_);
-  impl_thread_rendering_stats_accu_.Add(impl_thread_rendering_stats_);
+  auto stats = impl_thread_rendering_stats_;
   impl_thread_rendering_stats_ = RenderingStats();
+  return stats;
 }
 
 void RenderingStatsInstrumentation::IncrementFrameCount(int64_t count) {
diff --git a/cc/debug/rendering_stats_instrumentation.h b/cc/debug/rendering_stats_instrumentation.h
index 35a07e8..3f656dbe 100644
--- a/cc/debug/rendering_stats_instrumentation.h
+++ b/cc/debug/rendering_stats_instrumentation.h
@@ -22,15 +22,9 @@
   static std::unique_ptr<RenderingStatsInstrumentation> Create();
   virtual ~RenderingStatsInstrumentation();
 
-  // Return copy of current impl thread rendering stats.
-  RenderingStats impl_thread_rendering_stats();
-
-  // Return the accumulated, combined rendering stats.
-  RenderingStats GetRenderingStats();
-
-  // Add current impl thread rendering stats to accumulator and
-  // clear current stats.
-  void AccumulateAndClearImplThreadStats();
+  // Return copy of current impl thread rendering stats, and resets the current
+  // stats.
+  RenderingStats TakeImplThreadRenderingStats();
 
   // Read and write access to the record_rendering_stats_ flag is not locked to
   // improve performance. The flag is commonly turned off and hardly changes
@@ -60,7 +54,6 @@
 
  private:
   RenderingStats impl_thread_rendering_stats_;
-  RenderingStats impl_thread_rendering_stats_accu_;
 
   bool record_rendering_stats_;
 
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index d634ab52..f20a8a9 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -1846,8 +1846,7 @@
   active_tree_->set_has_ever_been_drawn(true);
   devtools_instrumentation::DidDrawFrame(id_);
   benchmark_instrumentation::IssueImplThreadRenderingStatsEvent(
-      rendering_stats_instrumentation_->impl_thread_rendering_stats());
-  rendering_stats_instrumentation_->AccumulateAndClearImplThreadStats();
+      rendering_stats_instrumentation_->TakeImplThreadRenderingStats());
   return true;
 }
 
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index 35eedae..be938cb 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -741,6 +741,10 @@
     ldflags = [ "-Wl,--long-plt" ]
   }
 
+  if (chromium_linker_supported && use_lld) {
+    configs += [ "//build/config/android:lld_pack_relocations" ]
+  }
+
   public_configs = extra_chrome_shared_library_configs
   deps += extra_chrome_shared_library_deps
 }
@@ -910,6 +914,9 @@
 
     configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
     configs += [ "//build/config/android:hide_all_but_jni" ]
+    if (use_lld) {
+      configs += [ "//build/config/android:lld_pack_relocations" ]
+    }
     if (is_android && use_order_profiling) {
       deps += [ "//tools/cygprofile" ]
     }
@@ -944,6 +951,9 @@
     libs =
         [ "//third_party/gvr-android-sdk/libgvr_shim_static_${current_cpu}.a" ]
   }
+  if (use_lld) {
+    configs += [ "//build/config/android:lld_pack_relocations" ]
+  }
 }
 
 # Contains rules common to chrome_public_apk and chrome_sync_shell_apk
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni
index 0dc5104e..49b8148 100644
--- a/chrome/android/chrome_public_apk_tmpl.gni
+++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -10,20 +10,6 @@
 import("channel.gni")
 
 declare_args() {
-  # Whether chrome_public_apk should use the crazy linker.
-  chrome_public_apk_use_chromium_linker = chromium_linker_supported
-
-  # Whether chrome_public_apk should use the relocation packer.
-  chrome_public_apk_use_relocation_packer = chromium_linker_supported
-
-  # Whether native libraries should be loaded from within the apk.
-  # Only attempt loading the library from the APK for 64 bit devices
-  # until the number of 32 bit devices which don't support this
-  # approach falls to a minimal level -  http://crbug.com/390618.
-  chrome_public_apk_load_library_from_apk =
-      chromium_linker_supported &&
-      (current_cpu == "arm64" || current_cpu == "x64")
-
   # Enables ProGuard obfuscation of Chromium packages.
   enable_proguard_obfuscation = false
 
@@ -84,17 +70,25 @@
     }
 
     if (!defined(use_chromium_linker)) {
-      use_chromium_linker = chrome_public_apk_use_chromium_linker
+      use_chromium_linker = chromium_linker_supported
     }
 
     if (use_chromium_linker) {
       if (!defined(load_library_from_apk)) {
-        load_library_from_apk = chrome_public_apk_load_library_from_apk
+        # Whether native libraries should be loaded from within the apk.
+        # Only attempt loading the library from the APK for 64 bit devices
+        # until the number of 32 bit devices which don't support this
+        # approach falls to a minimal level -  http://crbug.com/390618.
+        load_library_from_apk = chromium_linker_supported &&
+                                (current_cpu == "arm64" || current_cpu == "x64")
       }
-
-      if (!defined(enable_relocation_packing)) {
-        enable_relocation_packing = chrome_public_apk_use_relocation_packer
+    }
+    if (!defined(pack_relocations)) {
+      if (!defined(requires_sdk_api_level_23)) {
+        requires_sdk_api_level_23 = false
       }
+      pack_relocations =
+          !use_lld && (use_chromium_linker || requires_sdk_api_level_23)
     }
     command_line_flags_file = "chrome-command-line"
   }
@@ -118,7 +112,6 @@
     app_as_shared_lib = true
     use_chromium_linker = false
     requires_sdk_api_level_23 = true
-    enable_relocation_packing = true
     extensions_to_not_compress = ".lpak,.pak,.bin,.dat"
 
     # Webview supports all locales (has no omitted ones).
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
index b63bc21..08c0489 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
@@ -8,6 +8,7 @@
 import android.content.Intent;
 import android.os.Handler;
 import android.os.Looper;
+import android.support.annotation.Nullable;
 
 import org.chromium.base.BuildInfo;
 import org.chromium.base.Callback;
@@ -31,6 +32,8 @@
 import org.chromium.chrome.browser.net.qualityprovider.ExternalEstimateProviderAndroid;
 import org.chromium.chrome.browser.offlinepages.CCTRequestStatus;
 import org.chromium.chrome.browser.omaha.RequestGenerator;
+import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmark;
+import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksProviderIterator;
 import org.chromium.chrome.browser.physicalweb.PhysicalWebBleClient;
 import org.chromium.chrome.browser.policy.PolicyAuditor;
 import org.chromium.chrome.browser.preferences.LocationSettings;
@@ -311,4 +314,12 @@
     public List<String> getOfflinePagesCctWhitelist() {
         return Collections.emptyList();
     }
+
+    /**
+     * @return An iterator of partner bookmarks.
+     */
+    @Nullable
+    public PartnerBookmark.BookmarkIterator getPartnerBookmarkIterator() {
+        return PartnerBookmarksProviderIterator.createIfAvailable();
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/FramebustBlockInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/FramebustBlockInfoBar.java
index 8f890c3..95a7c10 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/FramebustBlockInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/FramebustBlockInfoBar.java
@@ -5,14 +5,7 @@
 package org.chromium.chrome.browser.infobar;
 
 import android.net.Uri;
-import android.support.v4.text.BidiFormatter;
-import android.text.SpannableString;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.method.LinkMovementMethod;
-import android.view.Gravity;
 import android.view.LayoutInflater;
-import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
@@ -22,7 +15,6 @@
 import org.chromium.chrome.browser.interventions.FramebustBlockMessageDelegate;
 import org.chromium.chrome.browser.interventions.FramebustBlockMessageDelegateBridge;
 import org.chromium.components.url_formatter.UrlFormatter;
-import org.chromium.ui.text.NoUnderlineClickableSpan;
 
 /**
  * This InfoBar is shown to let the user know about a blocked Framebust and offer to
@@ -62,8 +54,7 @@
         // them (e.g. file, filesystem). We split the output of the formatting to make sure we don't
         // end up duplicating it.
         String url = mDelegate.getBlockedUrl();
-        String formattedUrl =
-                UrlFormatter.formatUrlForSecurityDisplay(mDelegate.getBlockedUrl(), true);
+        String formattedUrl = UrlFormatter.formatUrlForSecurityDisplay(url, true);
         String scheme = Uri.parse(url).getScheme() + "://";
 
         TextView schemeView = ellipsizerView.findViewById(R.id.url_scheme);
@@ -80,21 +71,10 @@
 
     @Override
     protected void createCompactLayoutContent(InfoBarCompactLayout layout) {
-        final int messagePadding = getContext().getResources().getDimensionPixelOffset(
-                R.dimen.reader_mode_infobar_text_padding);
-
-        SpannableStringBuilder builder = new SpannableStringBuilder();
-        builder.append(BidiFormatter.getInstance().unicodeWrap(mDelegate.getShortMessage()));
-        builder.append(" ");
-        builder.append(makeDetailsLink());
-
-        TextView prompt = new TextView(getContext(), null);
-        prompt.setText(builder);
-        prompt.setMovementMethod(LinkMovementMethod.getInstance());
-        prompt.setGravity(Gravity.CENTER_VERTICAL);
-        prompt.setPadding(0, messagePadding, 0, messagePadding);
-
-        layout.addContent(prompt, 1f);
+        new InfoBarCompactLayout.MessageBuilder(layout)
+                .withText(mDelegate.getShortMessage())
+                .withLink(R.string.details_link, view -> onLinkClicked())
+                .buildAndInsert();
     }
 
     @Override
@@ -113,21 +93,6 @@
         mDelegate.onLinkTapped();
     }
 
-    /**
-     * Creates and sets up the "Details" link that allows going from the mini to the full infobar.
-     */
-    private SpannableString makeDetailsLink() {
-        String label = getContext().getResources().getString(R.string.details_link);
-        SpannableString link = new SpannableString(label);
-        link.setSpan(new NoUnderlineClickableSpan() {
-            @Override
-            public void onClick(View view) {
-                onLinkClicked();
-            }
-        }, 0, label.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-        return link;
-    }
-
     @CalledByNative
     private static FramebustBlockInfoBar create(long nativeFramebustBlockMessageDelegateBridge) {
         return new FramebustBlockInfoBar(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarCompactLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarCompactLayout.java
index d2a96a28..65a0703 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarCompactLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarCompactLayout.java
@@ -6,13 +6,23 @@
 
 import android.content.Context;
 import android.graphics.Bitmap;
+import android.support.annotation.StringRes;
+import android.text.SpannableString;
+import android.text.SpannableStringBuilder;
+import android.text.Spanned;
+import android.text.method.LinkMovementMethod;
 import android.view.Gravity;
 import android.view.View;
 import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.TextView;
 
+import org.chromium.base.ApiCompatibilityUtils;
+import org.chromium.base.Callback;
 import org.chromium.chrome.R;
+import org.chromium.ui.text.NoUnderlineClickableSpan;
+import org.chromium.ui.widget.TextViewWithClickableSpans;
 
 /**
  * Lays out controls along a line, sandwiched between an (optional) icon and close button.
@@ -89,4 +99,84 @@
         addView(closeButton, closeParams);
         return closeButton;
     }
+
+    /**
+     * Helps building a standard message to display in a compact InfoBar. The message can feature
+     * a link to perform and action from this infobar.
+     */
+    public static class MessageBuilder {
+        private final InfoBarCompactLayout mLayout;
+        private CharSequence mMessage;
+        private CharSequence mLink;
+
+        /** @param layout The layout we are building a message view for. */
+        public MessageBuilder(InfoBarCompactLayout layout) {
+            mLayout = layout;
+        }
+
+        public MessageBuilder withText(CharSequence message) {
+            assert mMessage == null;
+            mMessage = message;
+
+            return this;
+        }
+
+        public MessageBuilder withText(@StringRes int messageResId) {
+            assert mMessage == null;
+            mMessage = mLayout.getResources().getString(messageResId);
+
+            return this;
+        }
+
+        /** The link will be appended after the main message. */
+        public MessageBuilder withLink(@StringRes int textResId, Callback<View> onTapCallback) {
+            assert mLink == null;
+
+            String label = mLayout.getResources().getString(textResId);
+            SpannableString link = new SpannableString(label);
+            link.setSpan(new NoUnderlineClickableSpan() {
+                @Override
+                public void onClick(View view) {
+                    onTapCallback.onResult(view);
+                }
+            }, 0, label.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+            mLink = link;
+
+            return this;
+        }
+
+        /** Finalizes the message view as set up in the builder and inserts it into the layout. */
+        public void buildAndInsert() {
+            mLayout.addContent(build(), 1f);
+        }
+
+        /**
+         * Finalizes the message view as set up in the builder. The caller is responsible for adding
+         * it to the parent layout.
+         */
+        public View build() {
+            // TODO(dgn): Should be able to handle ReaderMode and Survey infobars but they have non
+            // standard interaction models (no button/link, whole bar is a button) or style (large
+            // rather than default text). Revisit after snowflake review.
+
+            assert mMessage != null;
+
+            final int messagePadding = mLayout.getResources().getDimensionPixelOffset(
+                    R.dimen.reader_mode_infobar_text_padding);
+
+            SpannableStringBuilder builder = new SpannableStringBuilder();
+            builder.append(mMessage);
+            if (mLink != null) builder.append(" ").append(mLink);
+
+            TextView prompt = new TextViewWithClickableSpans(mLayout.getContext());
+            ApiCompatibilityUtils.setTextAppearance(prompt, R.style.BlackBodyDefault);
+            prompt.setText(builder);
+            prompt.setGravity(Gravity.CENTER_VERTICAL);
+            prompt.setPadding(0, messagePadding, 0, messagePadding);
+
+            if (mLink != null) prompt.setMovementMethod(LinkMovementMethod.getInstance());
+
+            return prompt;
+        }
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/NearOomInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/NearOomInfoBar.java
new file mode 100644
index 0000000..13b1027f
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/NearOomInfoBar.java
@@ -0,0 +1,40 @@
+// 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.
+
+package org.chromium.chrome.browser.infobar;
+
+import org.chromium.base.VisibleForTesting;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.chrome.R;
+
+/**
+ * This InfoBar is shown to let the user know when the browser took action to stop a page from using
+ * too much memory, potentially breaking it and offers them a way to decline the intervention.
+ *
+ * The native caller can handle user action through {@code InfoBar::ProcessButton(int action)}
+ */
+public class NearOomInfoBar extends InfoBar {
+    @VisibleForTesting
+    public NearOomInfoBar() {
+        super(R.drawable.infobar_chrome, null, null);
+    }
+
+    @Override
+    protected boolean usesCompactLayout() {
+        return true;
+    }
+
+    @Override
+    protected void createCompactLayoutContent(InfoBarCompactLayout layout) {
+        new InfoBarCompactLayout.MessageBuilder(layout)
+                .withText(R.string.near_oom_intervention_message)
+                .withLink(R.string.near_oom_intervention_decline, view -> onLinkClicked())
+                .buildAndInsert();
+    }
+
+    @CalledByNative
+    private static NearOomInfoBar create() {
+        return new NearOomInfoBar();
+    }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/WebApkUma.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/WebApkUma.java
index bea8f66e..170ab114 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/WebApkUma.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/WebApkUma.java
@@ -28,10 +28,11 @@
  */
 public class WebApkUma {
     // This enum is used to back UMA histograms, and should therefore be treated as append-only.
-    public static final int UPDATE_REQUEST_SENT_FIRST_TRY = 0;
-    public static final int UPDATE_REQUEST_SENT_ONSTOP = 1;
-    public static final int UPDATE_REQUEST_SENT_WHILE_WEBAPK_IN_FOREGROUND = 2;
-    public static final int UPDATE_REQUEST_SENT_MAX = 3;
+    // Deprecated: UPDATE_REQUEST_SENT_FIRST_TRY = 0;
+    // Deprecated: UPDATE_REQUEST_SENT_ONSTOP = 1;
+    // Deprecated: UPDATE_REQUEST_SENT_WHILE_WEBAPK_IN_FOREGROUND = 2;
+    public static final int UPDATE_REQUEST_SENT_WHILE_WEBAPK_CLOSED = 3;
+    public static final int UPDATE_REQUEST_SENT_MAX = 4;
 
     // This enum is used to back UMA histograms, and should therefore be treated as append-only.
     // The queued request times shouldn't exceed three.
@@ -100,9 +101,8 @@
 
     /** Records whether a WebAPK has permission to display notifications. */
     public static void recordNotificationPermissionStatus(boolean permissionEnabled) {
-        int status = permissionEnabled ? 1 : 0;
-        RecordHistogram.recordEnumeratedHistogram(
-                "WebApk.Notification.Permission.Status", status, 2);
+        RecordHistogram.recordBooleanHistogram(
+                "WebApk.Notification.Permission.Status", permissionEnabled);
     }
 
     /**
@@ -162,96 +162,107 @@
                 TimeUnit.HOURS.toMillis(1), TimeUnit.DAYS.toMillis(30), TimeUnit.MILLISECONDS, 50);
     }
 
+    // TODO(ranj): Remove this function after downstream is checked in.
+    public static void logAvailableSpaceAboveLowSpaceLimitInUMA(boolean installSucceeded) {}
+
+    // TODO(ranj): Remove this function after downstream is checked in.
+    public static void logUnimportantStorageSizeInUMA() {}
+
     /**
-     * Log the estimated amount of space above the minimum free space threshold that can be used
-     * for WebAPK installation in UMA.
+     * Log necessary disk usage and cache size UMAs when WebAPK installation fails.
      */
-    @SuppressWarnings("deprecation")
-    public static void logAvailableSpaceAboveLowSpaceLimitInUMA(boolean installSucceeded) {
-        // ContentResolver APIs are usually heavy, do it in AsyncTask.
-        new AsyncTask<Void, Void, Long>() {
-            long mPartitionAvailableBytes;
+    public static void logSpaceUsageUMAWhenInstallationFails() {
+        new AsyncTask<Void, Void, Void>() {
+            long mAvailableSpaceInByte = 0;
+            long mCacheSizeInByte = 0;
             @Override
-            protected Long doInBackground(Void... params) {
-                StatFs partitionStats =
-                        new StatFs(Environment.getDataDirectory().getAbsolutePath());
-                long partitionTotalBytes;
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
-                    mPartitionAvailableBytes = partitionStats.getAvailableBytes();
-                    partitionTotalBytes = partitionStats.getTotalBytes();
-                } else {
-                    // these APIs were deprecated in API level 18.
-                    long blockSize = partitionStats.getBlockSize();
-                    mPartitionAvailableBytes = blockSize
-                            * (long) partitionStats.getAvailableBlocks();
-                    partitionTotalBytes = blockSize * (long) partitionStats.getBlockCount();
-                }
-                return getLowSpaceLimitBytes(partitionTotalBytes);
-            }
-
-            @Override
-            protected void onPostExecute(Long minimumFreeBytes) {
-                long availableBytesForInstallation = mPartitionAvailableBytes - minimumFreeBytes;
-                int availableSpaceMb = (int) (availableBytesForInstallation / 1024L / 1024L);
-                // Bound the number to [-1000, 500] and round down to the nearest multiple of 10MB
-                // to avoid exploding the histogram.
-                availableSpaceMb = Math.max(-1000, availableSpaceMb);
-                availableSpaceMb = Math.min(500, availableSpaceMb);
-                availableSpaceMb = availableSpaceMb / 10 * 10;
-
-                if (installSucceeded) {
-                    RecordHistogram.recordSparseSlowlyHistogram(
-                            "WebApk.Install.AvailableSpace.Success", availableSpaceMb);
-                } else {
-                    RecordHistogram.recordSparseSlowlyHistogram(
-                            "WebApk.Install.AvailableSpace.Fail", availableSpaceMb);
-                }
-            }
-        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
-    }
-
-    public static void logCacheSizeInUMA() {
-        new AsyncTask<Void, Void, Integer>() {
-            private long getDirectorySizeInByte(File dir) {
-                if (dir == null) return 0;
-                if (!dir.isDirectory()) return dir.length();
-
-                long sizeInByte = 0;
-                try {
-                    File[] files = dir.listFiles();
-                    if (files == null) return 0;
-
-                    for (File file : files) {
-                        sizeInByte += getDirectorySizeInByte(file);
-                    }
-                } catch (SecurityException e) {
-                    return 0;
-                }
-                return sizeInByte;
-            }
-
-            @Override
-            protected Integer doInBackground(Void... params) {
-                long cacheSizeInByte =
+            protected Void doInBackground(Void... params) {
+                mAvailableSpaceInByte = getAvailableSpaceAboveLowSpaceLimit();
+                mCacheSizeInByte =
                         getDirectorySizeInByte(ContextUtils.getApplicationContext().getCacheDir());
-                return Math.min(2000, (int) (cacheSizeInByte / 1024L / 1024L / 10L * 10L));
+                return null;
             }
 
             @Override
-            protected void onPostExecute(Integer cacheSizeInMb) {
-                RecordHistogram.recordSparseSlowlyHistogram(
-                        "WebApk.Install.ChromeCacheSize.Fail", cacheSizeInMb);
+            protected void onPostExecute(Void result) {
+                logSpaceUsageUMA(mAvailableSpaceInByte, mCacheSizeInByte);
             }
         }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
     }
 
-    public static void logUnimportantStorageSizeInUMA() {
-        WebsitePermissionsFetcher fetcher =
-                new WebsitePermissionsFetcher(new UnimportantStorageSizeCalculator());
+    private static void logSpaceUsageUMA(long availableSpaceInByte, long cacheSizeInByte) {
+        WebsitePermissionsFetcher fetcher = new WebsitePermissionsFetcher(
+                new UnimportantStorageSizeCalculator(availableSpaceInByte, cacheSizeInByte));
         fetcher.fetchPreferencesForCategory(
                 SiteSettingsCategory.fromString(SiteSettingsCategory.CATEGORY_USE_STORAGE));
     }
 
+    private static void logSpaceUsageUMAOnDataAvailable(
+            long spaceSize, long cacheSize, long unimportantSiteSize) {
+        RecordHistogram.recordSparseSlowlyHistogram(
+                "WebApk.Install.AvailableSpace.Fail", roundByteToMb(spaceSize));
+
+        RecordHistogram.recordSparseSlowlyHistogram(
+                "WebApk.Install.ChromeCacheSize.Fail", roundByteToMb(cacheSize));
+
+        RecordHistogram.recordSparseSlowlyHistogram(
+                "WebApk.Install.ChromeUnimportantStorage.Fail", roundByteToMb(unimportantSiteSize));
+
+        RecordHistogram.recordSparseSlowlyHistogram(
+                "WebApk.Install.AvailableSpaceAfterFreeUpCache.Fail",
+                roundByteToMb(spaceSize + cacheSize));
+
+        RecordHistogram.recordSparseSlowlyHistogram(
+                "WebApk.Install.AvailableSpaceAfterFreeUpUnimportantStorage.Fail",
+                roundByteToMb(spaceSize + unimportantSiteSize));
+
+        RecordHistogram.recordSparseSlowlyHistogram(
+                "WebApk.Install.AvailableSpaceAfterFreeUpAll.Fail",
+                roundByteToMb(spaceSize + cacheSize + unimportantSiteSize));
+    }
+
+    private static int roundByteToMb(long bytes) {
+        int mbs = (int) (bytes / 1024L / 1024L / 10L * 10L);
+        return Math.min(1000, Math.max(-1000, mbs));
+    }
+
+    private static long getDirectorySizeInByte(File dir) {
+        if (dir == null) return 0;
+        if (!dir.isDirectory()) return dir.length();
+
+        long sizeInByte = 0;
+        try {
+            File[] files = dir.listFiles();
+            if (files == null) return 0;
+
+            for (File file : files) {
+                sizeInByte += getDirectorySizeInByte(file);
+            }
+        } catch (SecurityException e) {
+            return 0;
+        }
+        return sizeInByte;
+    }
+
+    @SuppressWarnings("deprecation")
+    private static long getAvailableSpaceAboveLowSpaceLimit() {
+        long partitionAvailableBytes;
+        long partitionTotalBytes;
+        StatFs partitionStats = new StatFs(Environment.getDataDirectory().getAbsolutePath());
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
+            partitionAvailableBytes = partitionStats.getAvailableBytes();
+            partitionTotalBytes = partitionStats.getTotalBytes();
+        } else {
+            // these APIs were deprecated in API level 18.
+            long blockSize = partitionStats.getBlockSize();
+            partitionAvailableBytes = blockSize * (long) partitionStats.getAvailableBlocks();
+            partitionTotalBytes = blockSize * (long) partitionStats.getBlockCount();
+        }
+        long minimumFreeBytes = getLowSpaceLimitBytes(partitionTotalBytes);
+
+        return partitionAvailableBytes - minimumFreeBytes;
+    }
+
     /**
      * Mirror the system-derived calculation of reserved bytes and return that value.
      */
@@ -289,6 +300,13 @@
 
     private static class UnimportantStorageSizeCalculator
             implements WebsitePermissionsFetcher.WebsitePermissionsCallback {
+        private long mAvailableSpaceInByte;
+        private long mCacheSizeInByte;
+
+        UnimportantStorageSizeCalculator(long availableSpaceInByte, long cacheSizeInByte) {
+            mAvailableSpaceInByte = availableSpaceInByte;
+            mCacheSizeInByte = cacheSizeInByte;
+        }
         @Override
         public void onWebsitePermissionsAvailable(Collection<Website> sites) {
             long siteStorageSize = 0;
@@ -300,13 +318,9 @@
                     importantSiteStorageTotal += site.getTotalUsage();
                 }
             }
-            long unimportantSiteStorageTotal = siteStorageSize - importantSiteStorageTotal;
-            int unimportantSiteStorageTotalMb =
-                    (int) (unimportantSiteStorageTotal / 1024L / 1024L / 10L * 10L);
-            unimportantSiteStorageTotalMb = Math.min(unimportantSiteStorageTotalMb, 1000);
 
-            RecordHistogram.recordSparseSlowlyHistogram(
-                    "WebApk.Install.ChromeUnimportantStorage.Fail", unimportantSiteStorageTotalMb);
+            logSpaceUsageUMAOnDataAvailable(
+                    mAvailableSpaceInByte, mCacheSizeInByte, importantSiteStorageTotal);
         }
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmark.java b/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmark.java
new file mode 100644
index 0000000..7361313d
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmark.java
@@ -0,0 +1,40 @@
+// 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.
+
+package org.chromium.chrome.browser.partnerbookmarks;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/** Object defining a partner bookmark. */
+public class PartnerBookmark {
+    // To be provided by the bookmark extractors.
+    /** Local id of the read bookmark */
+    public long mId;
+    /** Read id of the parent node */
+    public long mParentId;
+    /** True if it's folder */
+    public boolean mIsFolder;
+    /** URL of the bookmark. Required for non-folders. */
+    public String mUrl;
+    /** Title of the bookmark. */
+    public String mTitle;
+
+    /** .PNG Favicon of the bookmark. Optional. Not used for folders. */
+    byte[] mFavicon;
+    /** .PNG TouchIcon of the bookmark. Optional. Not used for folders. */
+    byte[] mTouchicon;
+
+    // For auxiliary use while reading.
+    /** Native id of the C++-processed bookmark */
+    long mNativeId = PartnerBookmarksReader.INVALID_BOOKMARK_ID;
+    /** The parent node if any */
+    PartnerBookmark mParent;
+    /** Children nodes for the perfect garbage collection disaster */
+    List<PartnerBookmark> mEntries = new ArrayList<>();
+
+    /** Closable iterator for available bookmarks. */
+    public interface BookmarkIterator extends Iterator<PartnerBookmark> { void close(); }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java b/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java
index 80989ec..7f79916 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java
@@ -4,11 +4,11 @@
 
 package org.chromium.chrome.browser.partnerbookmarks;
 
-import android.content.ContentResolver;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteException;
 import android.net.Uri;
 
+import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.chrome.browser.UrlConstants;
 
@@ -17,7 +17,7 @@
 /**
  * Imports bookmarks from partner content provider using the private provider API.
  */
-public class PartnerBookmarksProviderIterator implements PartnerBookmarksReader.BookmarkIterator {
+public class PartnerBookmarksProviderIterator implements PartnerBookmark.BookmarkIterator {
     private static final String TAG = "cr_PartnerBookmarks";
     private static final String PROVIDER_AUTHORITY = "com.android.partnerbookmarks";
     private static final Uri CONTENT_URI = new Uri.Builder()
@@ -59,13 +59,11 @@
 
     /**
      * Creates the bookmarks iterator if possible.
-     * @param contentResolver The content resolver to use.
      * @return                Iterator over bookmarks or null.
      */
-    public static PartnerBookmarksProviderIterator createIfAvailable(
-            ContentResolver contentResolver) {
+    public static PartnerBookmarksProviderIterator createIfAvailable() {
         try {
-            Cursor cursor = contentResolver.query(
+            Cursor cursor = ContextUtils.getApplicationContext().getContentResolver().query(
                     BOOKMARKS_CONTENT_URI, BOOKMARKS_PROJECTION, null, null, BOOKMARKS_SORT_ORDER);
             if (cursor == null) return null;
             return new PartnerBookmarksProviderIterator(cursor);
@@ -80,11 +78,6 @@
     }
 
     @Override
-    public void remove() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
     public void close() {
         if (mCursor == null) throw new IllegalStateException();
         mCursor.close();
@@ -101,11 +94,11 @@
     }
 
     @Override
-    public PartnerBookmarksReader.Bookmark next() {
+    public PartnerBookmark next() {
         if (mCursor == null) throw new IllegalStateException();
         if (!mCursor.moveToNext()) throw new NoSuchElementException();
 
-        PartnerBookmarksReader.Bookmark bookmark = new PartnerBookmarksReader.Bookmark();
+        PartnerBookmark bookmark = new PartnerBookmark();
         try {
             bookmark.mId = mCursor.getLong(mCursor.getColumnIndexOrThrow(BOOKMARKS_COLUMN_ID));
             // The container folder should not be among the results.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader.java b/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader.java
index 274617c9..837b218 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader.java
@@ -11,10 +11,9 @@
 import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.base.metrics.RecordHistogram;
+import org.chromium.chrome.browser.AppHooks;
 
-import java.util.ArrayList;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 
 /**
@@ -40,46 +39,6 @@
     /** The context (used to get a ContentResolver) */
     protected Context mContext;
 
-    // TODO(aruslan): Move it out to a separate class that defines
-    // a partner bookmarks provider contract, see http://b/6399404
-    /** Object defining a partner bookmark. For this package only. */
-    static class Bookmark {
-        // To be provided by the bookmark extractors.
-        /** Local id of the read bookmark */
-        long mId;
-        /** Read id of the parent node */
-        long mParentId;
-        /** True if it's folder */
-        boolean mIsFolder;
-        /** URL of the bookmark. Required for non-folders. */
-        String mUrl;
-        /** Title of the bookmark. */
-        String mTitle;
-        /** .PNG Favicon of the bookmark. Optional. Not used for folders. */
-        byte[] mFavicon;
-        /** .PNG TouchIcon of the bookmark. Optional. Not used for folders. */
-        byte[] mTouchicon;
-
-        // For auxiliary use while reading.
-        /** Native id of the C++-processed bookmark */
-        long mNativeId = INVALID_BOOKMARK_ID;
-        /** The parent node if any */
-        Bookmark mParent;
-        /** Children nodes for the perfect garbage collection disaster */
-        ArrayList<Bookmark> mEntries = new ArrayList<Bookmark>();
-    }
-
-    /** Closable iterator for available bookmarks. */
-    protected interface BookmarkIterator extends Iterator<Bookmark> {
-        public void close();
-    }
-
-    /** Returns an iterator to the available bookmarks. Called by async task. */
-    protected BookmarkIterator getAvailableBookmarks() {
-        return PartnerBookmarksProviderIterator.createIfAvailable(
-                mContext.getContentResolver());
-    }
-
     /**
      * Creates the instance of the reader.
      * @param context A Context object.
@@ -140,7 +99,8 @@
 
         @Override
         protected Void doInBackground(Void... params) {
-            BookmarkIterator bookmarkIterator = getAvailableBookmarks();
+            PartnerBookmark.BookmarkIterator bookmarkIterator =
+                    AppHooks.get().getPartnerBookmarkIterator();
             RecordHistogram.recordBooleanHistogram(
                     "PartnerBookmark.Null", bookmarkIterator == null);
             if (bookmarkIterator == null) {
@@ -149,14 +109,14 @@
             }
 
             // Get a snapshot of the bookmarks.
-            LinkedHashMap<Long, Bookmark> idMap = new LinkedHashMap<Long, Bookmark>();
+            LinkedHashMap<Long, PartnerBookmark> idMap = new LinkedHashMap<Long, PartnerBookmark>();
             HashSet<String> urlSet = new HashSet<String>();
 
-            Bookmark rootBookmarksFolder = createRootBookmarksFolderBookmark();
+            PartnerBookmark rootBookmarksFolder = createRootBookmarksFolderBookmark();
             idMap.put(ROOT_FOLDER_ID, rootBookmarksFolder);
 
             while (bookmarkIterator.hasNext()) {
-                Bookmark bookmark = bookmarkIterator.next();
+                PartnerBookmark bookmark = bookmarkIterator.next();
                 if (bookmark == null) continue;
 
                 // Check for duplicate ids.
@@ -201,9 +161,7 @@
                 return null;
             }
 
-            readBookmarkHierarchy(
-                    rootBookmarksFolder,
-                    new HashSet<PartnerBookmarksReader.Bookmark>());
+            readBookmarkHierarchy(rootBookmarksFolder, new HashSet<PartnerBookmark>());
 
             return null;
         }
@@ -215,8 +173,8 @@
             }
         }
 
-        private void recreateFolderHierarchy(LinkedHashMap<Long, Bookmark> idMap) {
-            for (Bookmark bookmark : idMap.values()) {
+        private void recreateFolderHierarchy(LinkedHashMap<Long, PartnerBookmark> idMap) {
+            for (PartnerBookmark bookmark : idMap.values()) {
                 if (bookmark.mId == ROOT_FOLDER_ID) continue;
 
                 // Look for invalid parent ids and self-cycles.
@@ -231,8 +189,8 @@
             }
         }
 
-        private Bookmark createRootBookmarksFolderBookmark() {
-            Bookmark root = new Bookmark();
+        private PartnerBookmark createRootBookmarksFolderBookmark() {
+            PartnerBookmark root = new PartnerBookmark();
             root.mId = ROOT_FOLDER_ID;
             root.mTitle = "[IMPLIED_ROOT]";
             root.mNativeId = INVALID_BOOKMARK_ID;
@@ -242,7 +200,7 @@
         }
 
         private void readBookmarkHierarchy(
-                Bookmark bookmark, HashSet<Bookmark> processedNodes) {
+                PartnerBookmark bookmark, HashSet<PartnerBookmark> processedNodes) {
             // Avoid cycles in the hierarchy that could lead to infinite loops.
             if (processedNodes.contains(bookmark)) return;
             processedNodes.add(bookmark);
@@ -266,7 +224,7 @@
             }
 
             if (bookmark.mIsFolder) {
-                for (Bookmark entry : bookmark.mEntries) {
+                for (PartnerBookmark entry : bookmark.mEntries) {
                     if (entry.mParent != bookmark) {
                         Log.w(TAG, "Hierarchy error in bookmark '"
                                 + bookmark.mTitle + "'. Skipping.");
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java
index 316a72e..4431679 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java
@@ -29,9 +29,9 @@
 /**
  * Finds installed native Android payment apps and verifies their signatures according to the
  * payment method manifests. The manifests are located based on the payment method name, which is a
- * URI that starts with "https://". The W3C-published non-URI payment method names are exceptions:
- * these are common payment method names that do not have a manifest and can be used by any payment
- * app.
+ * URI that starts with "https://" (localhosts can be "http://", however). The W3C-published non-URI
+ * payment method names are exceptions: these are common payment method names that do not have a
+ * manifest and can be used by any payment app.
  */
 public class AndroidPaymentAppFinder implements ManifestVerifyCallback {
     private static final String TAG = "PaymentAppFinder";
@@ -148,12 +148,16 @@
             PaymentAppCreatedCallback callback) {
         mWebContents = webContents;
 
-        // For non-URI payment method names, only names published by W3C should be supported.
+        // For non-URI payment method names, only names published by W3C should be supported. Keep
+        // this in sync with manifest_verifier.cc.
         Set<String> supportedNonUriPaymentMethods = new HashSet<>();
-        // https://w3c.github.io/webpayments-methods-card/
+        // https://w3c.github.io/payment-method-basic-card/
         supportedNonUriPaymentMethods.add("basic-card");
         // https://w3c.github.io/webpayments/proposals/interledger-payment-method.html
         supportedNonUriPaymentMethods.add("interledger");
+        // https://w3c.github.io/webpayments-methods-credit-transfer-direct-debit/
+        supportedNonUriPaymentMethods.add("payee-credit-transfer");
+        supportedNonUriPaymentMethods.add("payer-credit-transfer");
 
         mNonUriPaymentMethods = new HashSet<>();
         mUriPaymentMethods = new HashSet<>();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestVerifier.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestVerifier.java
index bb29c9f..df2cd4e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestVerifier.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestVerifier.java
@@ -9,7 +9,6 @@
 import android.content.pm.Signature;
 
 import org.chromium.base.Log;
-import org.chromium.chrome.browser.UrlConstants;
 import org.chromium.components.payments.PaymentManifestDownloader;
 import org.chromium.components.payments.PaymentManifestDownloader.ManifestDownloadCallback;
 import org.chromium.components.payments.PaymentManifestParser;
@@ -102,9 +101,6 @@
     private static final String TAG = "PaymentManifest";
     private static final String ALL_ORIGINS_SUPPORTED_INDICATOR = "*";
 
-    /** The hostname used by the embedded test server in testing. */
-    private static final String LOCALHOST_FOR_TEST = "127.0.0.1";
-
     /**
      * The payment method name that's being verified. The corresponding payment method manifest
      * and default web app manifests will be downloaded, parsed, and cached.
@@ -151,8 +147,7 @@
      * Builds the manifest verifier.
      *
      * @param methodName             The name of the payment method name that apps offer to handle.
-     *                               Must be an absolute URI with HTTPS scheme, but HTTP localhost
-     *                               is allowed in testing.
+     *                               Must be an absolute URI with HTTPS scheme or HTTP localhost.
      * @param defaultApplications    The identifying information for the native Android payment apps
      *                               that offer to handle this payment method as a default app,
      *                               i.e., as one of the "default_applications". Can be null.
@@ -170,9 +165,6 @@
             PaymentManifestDownloader downloader, PaymentManifestParser parser,
             PackageManagerDelegate packageManagerDelegate, ManifestVerifyCallback callback) {
         assert methodName.isAbsolute();
-        assert UrlConstants.HTTPS_SCHEME.equals(methodName.getScheme())
-                || (LOCALHOST_FOR_TEST.equals(methodName.getHost())
-                           && UrlConstants.HTTP_SCHEME.equals(methodName.getScheme()));
 
         mMethodName = methodName;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/UriUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/UriUtils.java
index 5590230..ab247f43 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/UriUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/UriUtils.java
@@ -21,7 +21,8 @@
      * @return Whether the method name has the correct format to be a URI payment method name.
      */
     public static boolean looksLikeUriMethod(String method) {
-        return method.startsWith(UrlConstants.HTTPS_URL_PREFIX);
+        return method.startsWith(UrlConstants.HTTPS_URL_PREFIX)
+                || method.startsWith(UrlConstants.HTTP_URL_PREFIX);
     }
 
     /**
@@ -44,7 +45,8 @@
 
         if (!uri.isAbsolute()) return null;
 
-        assert UrlConstants.HTTPS_SCHEME.equals(uri.getScheme());
+        assert UrlConstants.HTTPS_SCHEME.equals(uri.getScheme())
+                || UrlConstants.HTTP_SCHEME.equals(uri.getScheme());
 
         return uri;
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java
index 37fa0cf..ab85455e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java
@@ -218,9 +218,6 @@
             WebApkDisclosureNotificationManager.dismissNotification(mWebappInfo);
             mNotificationShowing = false;
         }
-        if (mUpdateManager != null && mUpdateManager.requestPendingUpdate()) {
-            WebApkUma.recordUpdateRequestSent(WebApkUma.UPDATE_REQUEST_SENT_ONSTOP);
-        }
     }
 
     /**
@@ -262,7 +259,7 @@
         WebApkInfo info = (WebApkInfo) mWebappInfo;
         WebApkUma.recordShellApkVersion(info.shellApkVersion(), info.webApkPackageName());
 
-        mUpdateManager = new WebApkUpdateManager(WebApkActivity.this, storage);
+        mUpdateManager = new WebApkUpdateManager(storage);
         mUpdateManager.updateIfNeeded(getActivityTab(), info);
 
         maybeShowDisclosure(storage);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java
index da451ed6..ab9ed84 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java
@@ -12,8 +12,6 @@
 import android.os.Handler;
 import android.text.TextUtils;
 
-import org.chromium.base.ActivityState;
-import org.chromium.base.ApplicationStatus;
 import org.chromium.base.Callback;
 import org.chromium.base.CommandLine;
 import org.chromium.base.ContextUtils;
@@ -24,6 +22,9 @@
 import org.chromium.chrome.browser.metrics.WebApkUma;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.util.UrlUtilities;
+import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
+import org.chromium.components.background_task_scheduler.TaskIds;
+import org.chromium.components.background_task_scheduler.TaskInfo;
 import org.chromium.webapk.lib.client.WebApkVersion;
 
 import java.util.Map;
@@ -39,24 +40,12 @@
     // Maximum wait time for WebAPK update to be scheduled.
     private static final long UPDATE_TIMEOUT_MILLISECONDS = TimeUnit.SECONDS.toMillis(30);
 
-    /**
-     * Number of times to wait for updating the WebAPK after it is moved to the background prior
-     * to doing the update while the WebAPK is in the foreground.
-     */
-    private static final int MAX_UPDATE_ATTEMPTS = 3;
-
     /** Whether updates are enabled. Some tests disable updates. */
     private static boolean sUpdatesEnabled = true;
 
     /** Data extracted from the WebAPK's launch intent and from the WebAPK's Android Manifest. */
     private WebApkInfo mInfo;
 
-    /** Whether an update request should be made once the WebAPK is backgrounded. */
-    private boolean mHasPendingUpdate;
-
-    /** The WebApkActivity which owns the WebApkUpdateManager. */
-    private final WebApkActivity mActivity;
-
     /** The WebappDataStorage with cached data about prior update requests. */
     private final WebappDataStorage mStorage;
 
@@ -66,13 +55,12 @@
     private Handler mUpdateFailureHandler;
 
     /** Called with update result. */
-    private static interface WebApkUpdateCallback {
+    public static interface WebApkUpdateCallback {
         @CalledByNative("WebApkUpdateCallback")
         public void onResultFromNative(@WebApkInstallResult int result, boolean relaxUpdates);
     }
 
-    public WebApkUpdateManager(WebApkActivity activity, WebappDataStorage storage) {
-        mActivity = activity;
+    public WebApkUpdateManager(WebappDataStorage storage) {
         mStorage = storage;
     }
 
@@ -98,27 +86,10 @@
         }, UPDATE_TIMEOUT_MILLISECONDS);
     }
 
-    /**
-     * It sends the pending update request to the WebAPK server if exits.
-     * @return Whether a pending update request is sent to the WebAPK server.
-     */
-    public boolean requestPendingUpdate() {
-        String updateRequestPath = mStorage.getPendingUpdateRequestPath();
-        if (mHasPendingUpdate && updateRequestPath != null) {
-            updateAsync(updateRequestPath);
-            return true;
-        }
-        return false;
-    }
-
     public void destroy() {
         destroyFetcher();
     }
 
-    public boolean getHasPendingUpdateForTesting() {
-        return mHasPendingUpdate;
-    }
-
     public static void setUpdatesEnabledForTesting(boolean enabled) {
         sUpdatesEnabled = enabled;
     }
@@ -185,78 +156,47 @@
     }
 
     /** Builds proto to send to the WebAPK server. */
-    protected void buildUpdateRequestAndSchedule(final WebApkInfo info, String primaryIconUrl,
-            String badgeIconUrl, boolean isManifestStale) {
-        int versionCode = readVersionCodeFromAndroidManifest(info.webApkPackageName());
-        int size = info.iconUrlToMurmur2HashMap().size();
-        String[] iconUrls = new String[size];
-        String[] iconHashes = new String[size];
-        int i = 0;
-        for (Map.Entry<String, String> entry : info.iconUrlToMurmur2HashMap().entrySet()) {
-            iconUrls[i] = entry.getKey();
-            String iconHash = entry.getValue();
-            iconHashes[i] = (iconHash != null) ? iconHash : "";
-            i++;
-        }
-
-        final String updateRequestPath = mStorage.createAndSetUpdateRequestFilePath(info);
+    private void buildUpdateRequestAndSchedule(
+            WebApkInfo info, String primaryIconUrl, String badgeIconUrl, boolean isManifestStale) {
         Callback<Boolean> callback = (success) -> {
             if (!success) {
                 onFinishedUpdate(WebApkInstallResult.FAILURE, false /* relaxUpdates*/);
                 return;
             }
-            scheduleUpdate(updateRequestPath);
+            scheduleUpdate();
         };
-        nativeStoreWebApkUpdateRequestToFile(updateRequestPath, info.manifestStartUrl(),
-                info.scopeUri().toString(), info.name(), info.shortName(), primaryIconUrl,
-                info.icon(), badgeIconUrl, info.badgeIcon(), iconUrls, iconHashes,
-                info.displayMode(), info.orientation(), info.themeColor(), info.backgroundColor(),
-                info.manifestUrl(), info.webApkPackageName(), versionCode, isManifestStale,
-                callback);
+        String updateRequestPath = mStorage.createAndSetUpdateRequestFilePath(info);
+        storeWebApkUpdateRequestToFile(
+                updateRequestPath, info, primaryIconUrl, badgeIconUrl, isManifestStale, callback);
     }
 
-    /**
-     * Sends update request to WebAPK Server if the WebAPK is running in the background; sets
-     * update as "pending" otherwise.
-     */
-    protected void scheduleUpdate(String updateRequestPath) {
-        int numberOfUpdateRequests = mStorage.getUpdateRequests();
-        boolean forceUpdateNow =  numberOfUpdateRequests >= MAX_UPDATE_ATTEMPTS;
-        if (!isInForeground() || forceUpdateNow) {
-            updateAsync(updateRequestPath);
-            WebApkUma.recordUpdateRequestSent(WebApkUma.UPDATE_REQUEST_SENT_FIRST_TRY);
-            return;
-        }
+    /** Schedules update for when WebAPK is not running. */
+    private void scheduleUpdate() {
+        WebApkUma.recordUpdateRequestQueued(1);
 
-        mStorage.recordUpdateRequest();
-        // The {@link numberOfUpdateRequests} can never exceed 2 here (otherwise we'll have taken
-        // the branch above and have returned before reaching this statement).
-        WebApkUma.recordUpdateRequestQueued(numberOfUpdateRequests);
-        mHasPendingUpdate = true;
+        // The task deadline should be before {@link WebappDataStorage#RETRY_UPDATE_DURATION}
+        TaskInfo taskInfo =
+                TaskInfo.createOneOffTask(TaskIds.WEBAPK_UPDATE_JOB_ID, WebApkUpdateTask.class,
+                                TimeUnit.HOURS.toMillis(1), TimeUnit.HOURS.toMillis(23))
+                        .setRequiredNetworkType(TaskInfo.NETWORK_TYPE_UNMETERED)
+                        .setUpdateCurrent(true)
+                        .setIsPersisted(true)
+                        .setRequiresCharging(true)
+                        .build();
+        BackgroundTaskSchedulerFactory.getScheduler().schedule(
+                ContextUtils.getApplicationContext(), taskInfo);
     }
 
-    /** Returns whether the associated WebApkActivity is running in foreground. */
-    protected boolean isInForeground() {
-        int state = ApplicationStatus.getStateForActivity(mActivity);
-        return (state != ActivityState.STOPPED && state != ActivityState.DESTROYED);
-    }
+    /** Sends update request to the WebAPK Server. Should be called when WebAPK is not running. */
+    public void updateWhileNotRunning(final Runnable callback) {
+        Log.v(TAG, "Update now");
+        WebApkUpdateCallback callbackRunner = (result, relaxUpdates) -> {
+            onFinishedUpdate(result, relaxUpdates);
+            callback.run();
+        };
 
-    /**
-     * Sends update request to the WebAPK Server and cleanup.
-     */
-    private void updateAsync(String updateRequestPath) {
-        updateAsyncImpl(updateRequestPath);
-        mStorage.resetUpdateRequests();
-        mHasPendingUpdate = false;
-    }
-
-    /**
-     * Sends update request to the WebAPK Server.
-     */
-    protected void updateAsyncImpl(String updateRequestPath) {
-        WebApkUpdateCallback callback =
-                (result, relaxUpdates) -> onFinishedUpdate(result, relaxUpdates);
-        nativeUpdateWebApkFromFile(updateRequestPath, callback);
+        WebApkUma.recordUpdateRequestSent(WebApkUma.UPDATE_REQUEST_SENT_WHILE_WEBAPK_CLOSED);
+        updateWebApkFromFile(mStorage.getPendingUpdateRequestPath(), callbackRunner);
     }
 
     /**
@@ -399,6 +339,33 @@
         return UrlUtilities.urlsMatchIgnoringFragments(url1, url2);
     }
 
+    protected void storeWebApkUpdateRequestToFile(String updateRequestPath, WebApkInfo info,
+            String primaryIconUrl, String badgeIconUrl, boolean isManifestStale,
+            Callback<Boolean> callback) {
+        int versionCode = readVersionCodeFromAndroidManifest(info.webApkPackageName());
+        int size = info.iconUrlToMurmur2HashMap().size();
+        String[] iconUrls = new String[size];
+        String[] iconHashes = new String[size];
+        int i = 0;
+        for (Map.Entry<String, String> entry : info.iconUrlToMurmur2HashMap().entrySet()) {
+            iconUrls[i] = entry.getKey();
+            String iconHash = entry.getValue();
+            iconHashes[i] = (iconHash != null) ? iconHash : "";
+            i++;
+        }
+
+        nativeStoreWebApkUpdateRequestToFile(updateRequestPath, info.manifestStartUrl(),
+                info.scopeUri().toString(), info.name(), info.shortName(), primaryIconUrl,
+                info.icon(), badgeIconUrl, info.badgeIcon(), iconUrls, iconHashes,
+                info.displayMode(), info.orientation(), info.themeColor(), info.backgroundColor(),
+                info.manifestUrl(), info.webApkPackageName(), versionCode, isManifestStale,
+                callback);
+    }
+
+    protected void updateWebApkFromFile(String updateRequestPath, WebApkUpdateCallback callback) {
+        nativeUpdateWebApkFromFile(updateRequestPath, callback);
+    }
+
     private static native void nativeStoreWebApkUpdateRequestToFile(String updateRequestPath,
             String startUrl, String scope, String name, String shortName, String primaryIconUrl,
             Bitmap primaryIcon, String badgeIconUrl, Bitmap badgeIcon, String[] iconUrls,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateTask.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateTask.java
new file mode 100644
index 0000000..ed8ad196
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateTask.java
@@ -0,0 +1,98 @@
+// 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.
+
+package org.chromium.chrome.browser.webapps;
+
+import android.app.Activity;
+import android.content.Context;
+import android.text.TextUtils;
+
+import org.chromium.base.ApplicationStatus;
+import org.chromium.base.StrictModeContext;
+import org.chromium.chrome.browser.background_task_scheduler.NativeBackgroundTask;
+import org.chromium.components.background_task_scheduler.BackgroundTask.TaskFinishedCallback;
+import org.chromium.components.background_task_scheduler.TaskIds;
+import org.chromium.components.background_task_scheduler.TaskParameters;
+
+import java.lang.ref.WeakReference;
+import java.util.List;
+
+/**
+ * Handles servicing of background WebAPK update requests coming via background_task_scheduler
+ * component. Will update multiple WebAPKs if there are multiple WebAPKs pending update.
+ */
+public class WebApkUpdateTask extends NativeBackgroundTask {
+    /** The WebappDataStorage for the WebAPK to update. */
+    private WebappDataStorage mStorageToUpdate = null;
+
+    /** Whether there are more WebAPKs to update than just {@link mStorageToUpdate}. */
+    private boolean mMoreToUpdate;
+
+    @Override
+    @StartBeforeNativeResult
+    protected int onStartTaskBeforeNativeLoaded(
+            Context context, TaskParameters taskParameters, TaskFinishedCallback callback) {
+        assert taskParameters.getTaskId() == TaskIds.WEBAPK_UPDATE_JOB_ID;
+
+        try (StrictModeContext unused = StrictModeContext.allowDiskReads()) {
+            WebappRegistry.warmUpSharedPrefs();
+        }
+
+        List<String> ids = WebappRegistry.getInstance().findWebApksWithPendingUpdate();
+        for (String id : ids) {
+            WebappDataStorage storage = WebappRegistry.getInstance().getWebappDataStorage(id);
+            if (!isWebApkActivityRunning(storage.getWebApkPackageName())) {
+                mStorageToUpdate = storage;
+                mMoreToUpdate = ids.size() > 1;
+                return LOAD_NATIVE;
+            }
+        }
+        return ids.isEmpty() ? DONE : RESCHEDULE;
+    }
+
+    @Override
+    protected void onStartTaskWithNative(
+            Context context, TaskParameters taskParameters, final TaskFinishedCallback callback) {
+        assert taskParameters.getTaskId() == TaskIds.WEBAPK_UPDATE_JOB_ID;
+
+        WebApkUpdateManager updateManager = new WebApkUpdateManager(mStorageToUpdate);
+        updateManager.updateWhileNotRunning(() -> callback.taskFinished(mMoreToUpdate));
+    }
+
+    @Override
+    protected boolean onStopTaskBeforeNativeLoaded(Context context, TaskParameters taskParameters) {
+        assert taskParameters.getTaskId() == TaskIds.WEBAPK_UPDATE_JOB_ID;
+
+        // Native didn't complete loading, but it was supposed to. Presume that we need to
+        // reschedule.
+        return true;
+    }
+
+    @Override
+    protected boolean onStopTaskWithNative(Context context, TaskParameters taskParameters) {
+        assert taskParameters.getTaskId() == TaskIds.WEBAPK_UPDATE_JOB_ID;
+
+        // Updating a single WebAPK is a fire and forget task. However, there might be several
+        // WebAPKs that we need to update.
+        return true;
+    }
+
+    @Override
+    public void reschedule(Context context) {}
+
+    /** Returns whether a WebApkActivity with {@link webApkPackageName} is running. */
+    private static boolean isWebApkActivityRunning(String webApkPackageName) {
+        for (WeakReference<Activity> activity : ApplicationStatus.getRunningActivities()) {
+            if (!(activity.get() instanceof WebApkActivity)) {
+                continue;
+            }
+            WebApkActivity webApkActivity = (WebApkActivity) activity.get();
+            if (webApkActivity != null
+                    && TextUtils.equals(webApkPackageName, webApkActivity.getWebApkPackageName())) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappDataStorage.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappDataStorage.java
index d0f333e7..5227372 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappDataStorage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappDataStorage.java
@@ -66,9 +66,6 @@
     // Whether the last WebAPK update request succeeded.
     static final String KEY_DID_LAST_UPDATE_REQUEST_SUCCEED = "did_last_update_request_succeed";
 
-    // The number of times that updating a WebAPK in the background has been requested.
-    static final String KEY_UPDATE_REQUESTED = "update_requested";
-
     // Whether to check updates less frequently.
     static final String KEY_RELAX_UPDATES = "relax_updates";
 
@@ -90,7 +87,7 @@
 
     // Number of milliseconds to wait before re-requesting an updated WebAPK from the WebAPK
     // server if the previous update attempt failed.
-    public static final long RETRY_UPDATE_DURATION = TimeUnit.HOURS.toMillis(12L);
+    public static final long RETRY_UPDATE_DURATION = TimeUnit.DAYS.toMillis(1L);
 
     // The default shell Apk version of WebAPKs.
     static final int DEFAULT_SHELL_APK_VERSION = 1;
@@ -335,7 +332,6 @@
         editor.remove(KEY_LAST_CHECK_WEB_MANIFEST_UPDATE_TIME);
         editor.remove(KEY_LAST_UPDATE_REQUEST_COMPLETE_TIME);
         editor.remove(KEY_DID_LAST_UPDATE_REQUEST_SUCCEED);
-        editor.remove(KEY_UPDATE_REQUESTED);
         editor.remove(KEY_RELAX_UPDATES);
         editor.remove(KEY_DISMISSED_DISCLOSURE);
         editor.apply();
@@ -468,27 +464,6 @@
         return mPreferences.getBoolean(KEY_DISMISSED_DISCLOSURE, false);
     }
 
-    /**
-     * Increases the number of times that update has been requested for the WebAPK by 1.
-     */
-    void recordUpdateRequest() {
-        mPreferences.edit().putInt(KEY_UPDATE_REQUESTED, getUpdateRequests() + 1).apply();
-    }
-
-    /**
-     * Resets the number of times that update has been requested for the WebAPK.
-     */
-    void resetUpdateRequests() {
-        mPreferences.edit().remove(KEY_UPDATE_REQUESTED).apply();
-    }
-
-    /**
-     * Returns the number of times that update has been requested for this WebAPK.
-     */
-    int getUpdateRequests() {
-        return mPreferences.getInt(KEY_UPDATE_REQUESTED, 0);
-    }
-
     /** Updates the shell Apk version requested in the last update. */
     void updateLastRequestedShellApkVersion(int shellApkVersion) {
         mPreferences.edit().putInt(KEY_LAST_REQUESTED_SHELL_APK_VERSION, shellApkVersion).apply();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java
index 36352c1..fa4f33f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java
@@ -8,6 +8,7 @@
 import android.content.SharedPreferences;
 import android.content.pm.PackageManager;
 import android.os.AsyncTask;
+import android.text.TextUtils;
 
 import org.chromium.base.ContextUtils;
 import org.chromium.base.VisibleForTesting;
@@ -17,9 +18,11 @@
 import org.chromium.chrome.browser.browsing_data.UrlFilterBridge;
 import org.chromium.webapk.lib.common.WebApkConstants;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
@@ -169,6 +172,24 @@
     }
 
     /**
+     * Returns the list of WebAPK IDs with pending updates. Filters out WebAPKs which have been
+     * uninstalled.
+     * */
+    public List<String> findWebApksWithPendingUpdate() {
+        ArrayList<String> webApkIdsWithPendingUpdate = new ArrayList<String>();
+        PackageManager packageManager = ContextUtils.getApplicationContext().getPackageManager();
+        for (HashMap.Entry<String, WebappDataStorage> entry : mStorages.entrySet()) {
+            WebappDataStorage storage = entry.getValue();
+            if (!TextUtils.isEmpty(storage.getPendingUpdateRequestPath())
+                    && InstallerDelegate.isInstalled(
+                               packageManager, storage.getWebApkPackageName())) {
+                webApkIdsWithPendingUpdate.add(entry.getKey());
+            }
+        }
+        return webApkIdsWithPendingUpdate;
+    }
+
+    /**
      * Returns the list of web app IDs which are written to SharedPreferences.
      */
     @VisibleForTesting
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
index ec1cd0a1..48be5cb 100644
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -3278,6 +3278,14 @@
       <message name="IDS_UPDATING_CHROME" desc="String that indicates that Chrome is updating">
         Updating Chrome...
       </message>
+
+      <!-- Interventions -->
+      <message name="IDS_NEAR_OOM_INTERVENTION_MESSAGE" desc="The message stating that the browser intervened to stop the page using too much memory.">
+         This page uses too much memory, so Chrome paused it.
+      </message>
+      <message name="IDS_NEAR_OOM_INTERVENTION_DECLINE" desc="The text of the button letting the user decline the browser's intervention, so that the page can resume what it was doing.">
+         Resume
+      </message>
     </messages>
   </release>
 </grit>
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
index 5034860..be027ec8 100644
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -493,6 +493,7 @@
   "java/src/org/chromium/chrome/browser/infobar/InstantAppsInfoBarDelegate.java",
   "java/src/org/chromium/chrome/browser/infobar/IPHInfoBarSupport.java",
   "java/src/org/chromium/chrome/browser/infobar/FramebustBlockInfoBar.java",
+  "java/src/org/chromium/chrome/browser/infobar/NearOomInfoBar.java",
   "java/src/org/chromium/chrome/browser/infobar/PermissionInfoBar.java",
   "java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java",
   "java/src/org/chromium/chrome/browser/infobar/PreviewsInfoBar.java",
@@ -777,6 +778,7 @@
   "java/src/org/chromium/chrome/browser/page_info/CertificateViewer.java",
   "java/src/org/chromium/chrome/browser/page_info/ConnectionInfoPopup.java",
   "java/src/org/chromium/chrome/browser/page_info/PageInfoPopup.java",
+  "java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmark.java",
   "java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java",
   "java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader.java",
   "java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksShim.java",
@@ -1247,6 +1249,7 @@
   "java/src/org/chromium/chrome/browser/webapps/WebApkServiceClient.java",
   "java/src/org/chromium/chrome/browser/webapps/WebApkUpdateDataFetcher.java",
   "java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java",
+  "java/src/org/chromium/chrome/browser/webapps/WebApkUpdateTask.java",
   "java/src/org/chromium/chrome/browser/webapps/WebApkVersionManager.java",
   "java/src/org/chromium/chrome/browser/webapps/WebappActionsNotificationManager.java",
   "java/src/org/chromium/chrome/browser/webapps/WebappActivity.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/appmenu/ChromeHomeAppMenuTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/appmenu/ChromeHomeAppMenuTest.java
index b8fd4e1..d8a862d 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/appmenu/ChromeHomeAppMenuTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/appmenu/ChromeHomeAppMenuTest.java
@@ -43,6 +43,7 @@
 import org.chromium.chrome.test.util.MenuUtils;
 import org.chromium.components.feature_engagement.FeatureConstants;
 import org.chromium.components.feature_engagement.Tracker;
+import org.chromium.components.feature_engagement.TriggerState;
 import org.chromium.content.browser.test.util.Criteria;
 import org.chromium.content.browser.test.util.CriteriaHelper;
 import org.chromium.net.test.EmbeddedTestServer;
@@ -76,8 +77,14 @@
         }
 
         @Override
+        public boolean wouldTriggerHelpUI(String feature) {
+            return TextUtils.equals(mEnabledFeature, feature);
+        }
+
+        @Override
         public int getTriggerState(String feature) {
-            return 0;
+            return TextUtils.equals(mEnabledFeature, feature) ? TriggerState.HAS_NOT_BEEN_DISPLAYED
+                                                              : TriggerState.HAS_BEEN_DISPLAYED;
         }
 
         @Override
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/infobar/InfoBarAppearanceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/infobar/InfoBarAppearanceTest.java
index 259bb1f..ac18c43 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/infobar/InfoBarAppearanceTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/infobar/InfoBarAppearanceTest.java
@@ -92,6 +92,16 @@
         captureMiniAndRegularInfobar(infobar, messageDelegate);
     }
 
+    @Test
+    @MediumTest
+    @Feature({"InfoBars", "Catalogue"})
+    public void testOomInfoBar() throws TimeoutException, InterruptedException {
+        ThreadUtils.runOnUiThreadBlocking(
+                () -> mTab.getInfoBarContainer().addInfoBarForTesting(new NearOomInfoBar()));
+        mListener.addInfoBarAnimationFinished("InfoBar was not added.");
+        mScreenShooter.shoot("oom_infobar");
+    }
+
     private void captureMiniAndRegularInfobar(
             InfoBar infobar, TestFramebustBlockMessageDelegate delegate)
             throws TimeoutException, InterruptedException {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java
index e5ba868..6839026 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java
@@ -25,7 +25,6 @@
 import org.chromium.components.payments.PaymentManifestParser;
 import org.chromium.content.browser.test.util.Criteria;
 import org.chromium.content.browser.test.util.CriteriaHelper;
-import org.chromium.content_public.browser.WebContents;
 import org.chromium.net.test.EmbeddedTestServer;
 
 import java.net.URI;
@@ -63,12 +62,6 @@
         }
 
         @Override
-        public void initialize(WebContents webContents) {
-            super.initialize(webContents);
-            allowHttpForTest();
-        }
-
-        @Override
         public void downloadPaymentMethodManifest(
                 URI methodName, ManifestDownloadCallback callback) {
             super.downloadPaymentMethodManifest(substituteTestServerUri(methodName), callback);
@@ -1061,6 +1054,52 @@
         Assert.assertTrue(appIdentifiers.contains("com.bobpay"));
     }
 
+    /**
+     * All known payment method names are valid.
+     */
+    @Test
+    @Feature({"Payments"})
+    public void testAllKnownPaymentMethodNames() throws Throwable {
+        Set<String> methods = new HashSet<>();
+        methods.add("basic-card");
+        methods.add("interledger");
+        methods.add("payee-credit-transfer");
+        methods.add("payer-credit-transfer");
+        methods.add("not-supported");
+        mPackageManager.installPaymentApp("AlicePay", "com.alicepay",
+                "" /* no default payment method name in metadata */, "AA");
+        mPackageManager.setStringArrayMetaData("com.alicepay",
+                new String[] {"basic-card", "interledger", "payee-credit-transfer",
+                        "payer-credit-transfer", "not-supported"});
+
+        findApps(methods);
+
+        Assert.assertEquals("1 app should match the query", 1, mPaymentApps.size());
+        Assert.assertEquals("com.alicepay", mPaymentApps.get(0).getAppIdentifier());
+        Assert.assertEquals(4, mPaymentApps.get(0).getAppMethodNames().size());
+        Assert.assertTrue(mPaymentApps.get(0).getAppMethodNames().contains("basic-card"));
+        Assert.assertTrue(mPaymentApps.get(0).getAppMethodNames().contains("interledger"));
+        Assert.assertTrue(
+                mPaymentApps.get(0).getAppMethodNames().contains("payee-credit-transfer"));
+        Assert.assertTrue(
+                mPaymentApps.get(0).getAppMethodNames().contains("payer-credit-transfer"));
+
+        mPaymentApps.clear();
+        mAllPaymentAppsCreated = false;
+
+        findApps(methods);
+
+        Assert.assertEquals("1 app should still match the query", 1, mPaymentApps.size());
+        Assert.assertEquals("com.alicepay", mPaymentApps.get(0).getAppIdentifier());
+        Assert.assertEquals(4, mPaymentApps.get(0).getAppMethodNames().size());
+        Assert.assertTrue(mPaymentApps.get(0).getAppMethodNames().contains("basic-card"));
+        Assert.assertTrue(mPaymentApps.get(0).getAppMethodNames().contains("interledger"));
+        Assert.assertTrue(
+                mPaymentApps.get(0).getAppMethodNames().contains("payee-credit-transfer"));
+        Assert.assertTrue(
+                mPaymentApps.get(0).getAppMethodNames().contains("payer-credit-transfer"));
+    }
+
     private void findApps(final Set<String> methodNames) throws Throwable {
         mRule.runOnUiThread(() -> AndroidPaymentAppFinder.find(
                 mRule.getActivity().getCurrentContentViewCore().getWebContents(), methodNames,
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentManifestDownloaderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentManifestDownloaderTest.java
index 7ac866d..e7027f8 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentManifestDownloaderTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentManifestDownloaderTest.java
@@ -95,7 +95,6 @@
         mRule.runOnUiThread((Runnable) () -> {
             mDownloader.initialize(
                     mRule.getActivity().getCurrentContentViewCore().getWebContents());
-            mDownloader.allowHttpForTest();
         });
         mDownloadComplete = false;
         mDownloadPaymentMethodManifestSuccess = false;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
index a67fd84..34bcb26 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
@@ -13,6 +13,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import org.chromium.base.Callback;
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.test.util.CallbackHelper;
@@ -74,7 +75,7 @@
         private boolean mNeedsUpdate = false;
 
         public TestWebApkUpdateManager(CallbackHelper waiter, WebappDataStorage storage) {
-            super(null, storage);
+            super(storage);
             mWaiter = waiter;
         }
 
@@ -86,8 +87,9 @@
         }
 
         @Override
-        protected void buildUpdateRequestAndSchedule(final WebApkInfo info, String primaryIconUrl,
-                String badgeIconUrl, boolean isManifestStale) {
+        protected void storeWebApkUpdateRequestToFile(String updateRequestPath, WebApkInfo info,
+                String primaryIconUrl, String badgeIconUrl, boolean isManifestStale,
+                Callback<Boolean> callback) {
             mNeedsUpdate = true;
         }
 
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
index 0981dd3..3d0ec4c 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
@@ -6,6 +6,8 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import static org.chromium.webapk.lib.client.WebApkVersion.CURRENT_SHELL_APK_VERSION;
@@ -20,11 +22,13 @@
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Mockito;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 import org.robolectric.shadows.ShadowBitmap;
 
+import org.chromium.base.Callback;
 import org.chromium.base.CommandLine;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.PathUtils;
@@ -33,11 +37,14 @@
 import org.chromium.chrome.browser.ShortcutHelper;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.content_public.common.ScreenOrientationValues;
+import org.chromium.testing.local.CustomShadowAsyncTask;
 import org.chromium.testing.local.LocalRobolectricTestRunner;
 import org.chromium.webapk.lib.common.WebApkConstants;
 import org.chromium.webapk.lib.common.WebApkMetaDataKeys;
 import org.chromium.webapk.test.WebApkTestHelper;
 
+import java.io.File;
+import java.io.FileOutputStream;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -45,7 +52,7 @@
  * Unit tests for WebApkUpdateManager.
  */
 @RunWith(LocalRobolectricTestRunner.class)
-@Config(manifest = Config.NONE)
+@Config(manifest = Config.NONE, shadows = {CustomShadowAsyncTask.class})
 public class WebApkUpdateManagerTest {
     @Rule
     public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsRule();
@@ -103,16 +110,14 @@
     }
 
     private static class TestWebApkUpdateManager extends WebApkUpdateManager {
-        private WebappDataStorage mStorage;
+        private Callback<Boolean> mStoreUpdateRequestCallback;
+        private WebApkUpdateManager.WebApkUpdateCallback mUpdateCallback;
         private TestWebApkUpdateDataFetcher mFetcher;
-        private boolean mUpdateRequested;
         private String mUpdateName;
         private boolean mDestroyedFetcher;
-        private boolean mIsWebApkForeground;
 
         public TestWebApkUpdateManager(WebappDataStorage storage) {
-            super(null, storage);
-            mStorage = storage;
+            super(storage);
         }
 
         /**
@@ -126,7 +131,7 @@
          * Returns whether an update has been requested.
          */
         public boolean updateRequested() {
-            return mUpdateRequested;
+            return mStoreUpdateRequestCallback != null;
         }
 
         /**
@@ -140,6 +145,14 @@
             return mDestroyedFetcher;
         }
 
+        public Callback<Boolean> getStoreUpdateRequestCallback() {
+            return mStoreUpdateRequestCallback;
+        }
+
+        public WebApkUpdateManager.WebApkUpdateCallback getUpdateCallback() {
+            return mUpdateCallback;
+        }
+
         @Override
         protected WebApkUpdateDataFetcher buildFetcher() {
             mFetcher = new TestWebApkUpdateDataFetcher();
@@ -147,21 +160,18 @@
         }
 
         @Override
-        protected void buildUpdateRequestAndSchedule(WebApkInfo info, String primaryIconUrl,
-                String badgeIconUrl, boolean isManifestStale) {
+        protected void storeWebApkUpdateRequestToFile(String updateRequestPath, WebApkInfo info,
+                String primaryIconUrl, String badgeIconUrl, boolean isManifestStale,
+                Callback<Boolean> callback) {
+            mStoreUpdateRequestCallback = callback;
             mUpdateName = info.name();
-            String updateRequestPath = mStorage.createAndSetUpdateRequestFilePath(info);
-            scheduleUpdate(updateRequestPath);
+            writeRandomTextToFile(updateRequestPath);
         }
 
         @Override
-        protected void updateAsyncImpl(String updateRequestPath) {
-            mUpdateRequested = true;
-        }
-
-        @Override
-        protected boolean isInForeground() {
-            return mIsWebApkForeground;
+        protected void updateWebApkFromFile(
+                String updateRequestPath, WebApkUpdateCallback callback) {
+            mUpdateCallback = callback;
         }
 
         @Override
@@ -170,10 +180,6 @@
             mDestroyedFetcher = true;
         }
 
-        public void setIsWebApkForeground(boolean isForeground) {
-            mIsWebApkForeground = isForeground;
-        }
-
         // Stubbed out because real implementation uses native.
         @Override
         protected boolean urlsMatchIgnoringFragments(String url1, String url2) {
@@ -304,6 +310,12 @@
         onGotManifestData(updateManager, defaultManifestData());
     }
 
+    private static void onGotDifferentData(WebApkUpdateManager updateManager) {
+        ManifestData manifestData = defaultManifestData();
+        manifestData.name = DIFFERENT_NAME;
+        onGotManifestData(updateManager, manifestData);
+    }
+
     private static void onGotManifestData(WebApkUpdateManager updateManager,
             ManifestData fetchedManifestData) {
         String primaryIconUrl = randomIconUrl(fetchedManifestData);
@@ -312,6 +324,39 @@
                 infoFromManifestData(fetchedManifestData), primaryIconUrl, badgeIconUrl);
     }
 
+    /**
+     * Tries to complete update request.
+     * @param updateManager
+     * @param result The result of the update task. Emulates the proto creation as always
+     *               succeeding.
+     */
+    private static void tryCompletingUpdate(
+            TestWebApkUpdateManager updateManager, @WebApkInstallResult int result) {
+        // Emulate proto creation as always succeeding.
+        Callback<Boolean> storeUpdateRequestCallback =
+                updateManager.getStoreUpdateRequestCallback();
+        if (storeUpdateRequestCallback == null) return;
+
+        storeUpdateRequestCallback.onResult(true);
+
+        updateManager.updateWhileNotRunning(Mockito.mock(Runnable.class));
+        WebApkUpdateManager.WebApkUpdateCallback updateCallback = updateManager.getUpdateCallback();
+        if (updateCallback == null) return;
+
+        updateCallback.onResultFromNative(result, false /* relaxUpdates */);
+        ShadowApplication.getInstance().runBackgroundTasks();
+    }
+
+    private static void writeRandomTextToFile(String path) {
+        File file = new File(path);
+        new File(file.getParent()).mkdirs();
+        try (FileOutputStream out = new FileOutputStream(file)) {
+            String text = "something";
+            out.write(text.getBytes());
+        } catch (Exception e) {
+        }
+    }
+
     private static String randomIconUrl(ManifestData fetchedManifestData) {
         if (fetchedManifestData == null || fetchedManifestData.iconUrlToMurmur2HashMap.isEmpty()) {
             return null;
@@ -453,12 +498,10 @@
                 new TestWebApkUpdateManager(getStorage(WEBAPK_PACKAGE_NAME));
         updateIfNeeded(updateManager);
         assertTrue(updateManager.updateCheckStarted());
-        ManifestData manifestData = defaultManifestData();
-        manifestData.name = DIFFERENT_NAME;
-        onGotManifestData(updateManager, manifestData);
+        onGotDifferentData(updateManager);
         assertTrue(updateManager.updateRequested());
 
-        // Chrome is killed. {@link WebApkUpdateManager#onBuiltWebApk} is never called.
+        // Chrome is killed. {@link WebApkUpdateCallback#onResultFromNative} is never called.
 
         // Check {@link WebappDataStorage} state.
         WebappDataStorage storage = getStorage(WEBAPK_PACKAGE_NAME);
@@ -468,6 +511,56 @@
     }
 
     /**
+     * Test that the pending update file is deleted after update completes regardless of whether
+     * update succeeded.
+     */
+    @Test
+    public void testPendingUpdateFileDeletedAfterUpdateCompletion() {
+        mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
+
+        WebappDataStorage storage = getStorage(WEBAPK_PACKAGE_NAME);
+        TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(storage);
+        updateIfNeeded(updateManager);
+
+        onGotDifferentData(updateManager);
+        assertTrue(updateManager.updateRequested());
+        String updateRequestPath = storage.getPendingUpdateRequestPath();
+        assertNotNull(updateRequestPath);
+        assertTrue(new File(updateRequestPath).exists());
+
+        tryCompletingUpdate(updateManager, WebApkInstallResult.FAILURE);
+
+        assertNull(storage.getPendingUpdateRequestPath());
+        assertFalse(new File(updateRequestPath).exists());
+    }
+
+    /**
+     * Test that the pending update file is deleted if
+     * {@link WebApkUpdateManager#nativeStoreWebApkUpdateRequestToFile} creates the pending update
+     * file but fails.
+     */
+    @Test
+    public void testFileDeletedIfStoreWebApkUpdateRequestToFileFails() {
+        mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
+
+        WebappDataStorage storage = getStorage(WEBAPK_PACKAGE_NAME);
+        TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(storage);
+        updateIfNeeded(updateManager);
+
+        onGotDifferentData(updateManager);
+        assertTrue(updateManager.updateRequested());
+        String updateRequestPath = storage.getPendingUpdateRequestPath();
+        assertNotNull(updateRequestPath);
+        assertTrue(new File(updateRequestPath).exists());
+
+        updateManager.getStoreUpdateRequestCallback().onResult(false);
+        ShadowApplication.getInstance().runBackgroundTasks();
+
+        assertNull(storage.getPendingUpdateRequestPath());
+        assertFalse(new File(updateRequestPath).exists());
+    }
+
+    /**
      * Test that an update with data from the WebAPK's Android manifest is done if:
      * - WebAPK's code is out of date
      * AND
@@ -745,61 +838,6 @@
         assertFalse(checkUpdateNeededForFetchedManifest(androidManifestData, fetchedManifestData));
     }
 
-    @Test
-    public void testForceUpdateWhenUncompletedUpdateRequestRechesMaximumTimes() {
-        mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
-        ManifestData differentManifestData = defaultManifestData();
-        differentManifestData.name = DIFFERENT_NAME;
-        WebappDataStorage storage = getStorage(WEBAPK_PACKAGE_NAME);
-
-        for (int i = 0; i < 3; ++i) {
-            TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(storage);
-            updateManager.setIsWebApkForeground(true);
-            updateIfNeeded(updateManager);
-
-            onGotManifestData(updateManager, differentManifestData);
-            assertTrue(updateManager.getHasPendingUpdateForTesting());
-            assertFalse(updateManager.updateRequested());
-            assertEquals(i + 1, storage.getUpdateRequests());
-        }
-
-        TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(storage);
-        updateManager.setIsWebApkForeground(true);
-        updateIfNeeded(updateManager);
-
-        onGotManifestData(updateManager, differentManifestData);
-        assertFalse(updateManager.getHasPendingUpdateForTesting());
-        assertTrue(updateManager.updateRequested());
-        assertEquals(0, storage.getUpdateRequests());
-    }
-
-    @Test
-    public void testRequestUpdateAfterWebApkOnStopIsCalled() {
-        ManifestData differentManifestData = defaultManifestData();
-        differentManifestData.name = DIFFERENT_NAME;
-        WebappDataStorage storage = getStorage(WEBAPK_PACKAGE_NAME);
-
-        mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
-        TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(storage);
-        updateManager.setIsWebApkForeground(true);
-        updateIfNeeded(updateManager);
-        assertTrue(updateManager.updateCheckStarted());
-
-        onGotManifestData(updateManager, differentManifestData);
-        assertTrue(updateManager.getHasPendingUpdateForTesting());
-        assertFalse(updateManager.updateRequested());
-        assertEquals(1, storage.getUpdateRequests());
-
-        // Since {@link WebApkActivity#OnStop()} calls {@link requestPendingUpdate()} to trigger an
-        // update request, we call it directly for testing.
-        updateManager.setIsWebApkForeground(false);
-        updateManager.requestPendingUpdate();
-
-        assertFalse(updateManager.getHasPendingUpdateForTesting());
-        assertTrue(updateManager.updateRequested());
-        assertEquals(0, storage.getUpdateRequests());
-    }
-
     /**
      * Tests that a WebAPK update is requested immediately if:
      * the Shell APK is out of date,
@@ -818,10 +856,7 @@
         assertTrue(updateManager.updateCheckStarted());
         onGotManifestData(updateManager, defaultManifestData());
         assertTrue(updateManager.updateRequested());
-
-        WebappDataStorage storage = getStorage(WEBAPK_PACKAGE_NAME);
-        storage.updateTimeOfLastWebApkUpdateRequestCompletion();
-        storage.updateLastRequestedShellApkVersion(CURRENT_SHELL_APK_VERSION);
+        tryCompletingUpdate(updateManager, WebApkInstallResult.FAILURE);
 
         mClock.advance(1);
         updateIfNeeded(updateManager);
diff --git a/chrome/app/chromium_strings.grd b/chrome/app/chromium_strings.grd
index bffed19..123f90e 100644
--- a/chrome/app/chromium_strings.grd
+++ b/chrome/app/chromium_strings.grd
@@ -1182,6 +1182,13 @@
         </message>
       </if>
 
+      <!-- OOM intervention message -->
+      <if expr="is_android">
+        <message name="IDS_NEAR_OOM_INTERVENTION_MESSAGE" desc="The message stating that the browser intervened to stop the page using too much memory.">
+           This page uses too much memory, so Chromium paused it.
+        </message>
+      </if>
+
       <!-- OOBE -->
       <if expr="chromeos">
         <message name="IDS_INSTALLING_UPDATE" desc="Label shown on the updates installation screen during OOBE">
diff --git a/chrome/app/google_chrome_strings.grd b/chrome/app/google_chrome_strings.grd
index 7144bef..a80472b 100644
--- a/chrome/app/google_chrome_strings.grd
+++ b/chrome/app/google_chrome_strings.grd
@@ -1199,6 +1199,13 @@
         </message>
       </if>
 
+      <!-- OOM intervention message -->
+      <if expr="is_android">
+        <message name="IDS_NEAR_OOM_INTERVENTION_MESSAGE" desc="The message stating that the browser intervened to stop the page using too much memory.">
+           This page uses too much memory, so Chrome paused it.
+        </message>
+      </if>
+
       <!-- OOBE -->
       <if expr="chromeos">
         <message name="IDS_INSTALLING_UPDATE" desc="Label shown on the updates installation screen during OOBE">
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index b4a20206..60f69e44 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -4145,6 +4145,7 @@
       "../android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java",
       "../android/java/src/org/chromium/chrome/browser/infobar/InstantAppsInfoBar.java",
       "../android/java/src/org/chromium/chrome/browser/infobar/InstantAppsInfoBarDelegate.java",
+      "../android/java/src/org/chromium/chrome/browser/infobar/NearOomInfoBar.java",
       "../android/java/src/org/chromium/chrome/browser/infobar/PermissionInfoBar.java",
       "../android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java",
       "../android/java/src/org/chromium/chrome/browser/infobar/PreviewsInfoBar.java",
diff --git a/chrome/browser/chrome_browser_field_trials.cc b/chrome/browser/chrome_browser_field_trials.cc
index e05bd750..4ceb5c2d3 100644
--- a/chrome/browser/chrome_browser_field_trials.cc
+++ b/chrome/browser/chrome_browser_field_trials.cc
@@ -60,19 +60,6 @@
   if (!base::PathService::Get(chrome::DIR_USER_DATA, &metrics_dir))
     return;
 
-  // Remove any existing file from its legacy location.
-  // TODO(bcwhite): Remove this block of code in M62 or later.
-  base::FilePath legacy_file;
-  base::GlobalHistogramAllocator::ConstructFilePaths(
-      metrics_dir, ChromeMetricsServiceClient::kBrowserMetricsName,
-      &legacy_file, nullptr, nullptr);
-  base::PostTaskWithTraits(
-      FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
-       base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
-      base::BindOnce(base::IgnoreResult(&base::DeleteFile),
-                     base::Passed(&legacy_file), /*recursive=*/false));
-
   // Create a directory for storing completed metrics files. Files in this
   // directory must have embedded system profiles. If the directory can't be
   // created, the file will just be deleted below.
@@ -92,12 +79,18 @@
   base::GlobalHistogramAllocator::ConstructFilePathsForUploadDir(
       metrics_dir, upload_dir, ChromeMetricsServiceClient::kBrowserMetricsName,
       &upload_file, &active_file, &spare_file);
+  DCHECK(!base::PathExists(active_file));
 
-  // Move any existing "active" file to the final name from which it will be
-  // read when reporting initial stability metrics. If there is no file to
-  // move, remove any old, existing file from before the previous session.
-  if (!base::ReplaceFile(active_file, upload_file, nullptr))
-    base::DeleteFile(active_file, /*recursive=*/false);
+  // The "active" file isn't used any longer. Metics are stored directly into
+  // the "upload" file and a run-time filter prevents its upload as long as the
+  // process that created it still lives.
+  // TODO(bcwhite): Remove this in M65 or later.
+  base::PostTaskWithTraits(
+      FROM_HERE,
+      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+       base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
+      base::BindOnce(base::IgnoreResult(&base::DeleteFile),
+                     base::Passed(&active_file), /*recursive=*/false));
 
   // This is used to report results to an UMA histogram.
   enum InitResult {
@@ -107,6 +100,7 @@
     MAPPED_FILE_FAILED,
     MAPPED_FILE_EXISTS,
     NO_SPARE_FILE,
+    NO_UPLOAD_DIR,
     INIT_RESULT_MAX
   };
   InitResult result;
@@ -121,31 +115,20 @@
       base::kPersistentHistogramsFeature, "storage");
 
   if (storage.empty() || storage == "MappedFile") {
-    // If for some reason the existing "active" file could not be moved above
-    // then it is essential it be scheduled for deletion when possible and the
-    // contents ignored. Because this shouldn't happen but can on an OS like
-    // Windows where another process reading the file (backup, AV, etc.) can
-    // prevent its alteration, it's necessary to handle this case by switching
-    // to the equivalent of "LocalMemory" for this run.
-    if (base::PathExists(active_file)) {
-      base::File file(active_file, base::File::FLAG_OPEN |
-                                       base::File::FLAG_READ |
-                                       base::File::FLAG_DELETE_ON_CLOSE);
+    if (!base::PathExists(upload_dir)) {
+      // Handle failure to create the directory.
+      result = NO_UPLOAD_DIR;
+    } else if (base::PathExists(upload_file)) {
+      // "upload" filename is supposed to be unique so this shouldn't happen.
       result = MAPPED_FILE_EXISTS;
-      base::GlobalHistogramAllocator::CreateWithLocalMemory(
-          kAllocSize, kAllocId,
-          ChromeMetricsServiceClient::kBrowserMetricsName);
     } else {
-      // Move any sparse file into the active position.
-      base::ReplaceFile(spare_file, active_file, nullptr);
-      // Create global allocator using the "active" file.
-      if (kSpareFileRequired && !base::PathExists(active_file)) {
+      // Move any sparse file into the upload position.
+      base::ReplaceFile(spare_file, upload_file, nullptr);
+      // Create global allocator using the "upload" file.
+      if (kSpareFileRequired && !base::PathExists(upload_file)) {
         result = NO_SPARE_FILE;
-        base::GlobalHistogramAllocator::CreateWithLocalMemory(
-            kAllocSize, kAllocId,
-            ChromeMetricsServiceClient::kBrowserMetricsName);
       } else if (base::GlobalHistogramAllocator::CreateWithFile(
-                     active_file, kAllocSize, kAllocId,
+                     upload_file, kAllocSize, kAllocId,
                      ChromeMetricsServiceClient::kBrowserMetricsName)) {
         result = MAPPED_FILE_SUCCESS;
       } else {
@@ -163,12 +146,11 @@
         base::TimeDelta::FromSeconds(kSpareFileCreateDelaySeconds));
   } else if (storage == "LocalMemory") {
     // Use local memory for storage even though it will not persist across
-    // an unclean shutdown.
-    base::GlobalHistogramAllocator::CreateWithLocalMemory(
-        kAllocSize, kAllocId, ChromeMetricsServiceClient::kBrowserMetricsName);
+    // an unclean shutdown. This sets the result but the actual creation is
+    // done below.
     result = LOCAL_MEMORY_SUCCESS;
   } else {
-    // Persistent metric storage is disabled.
+    // Persistent metric storage is disabled. Must return here.
     return;
   }
 
@@ -179,8 +161,16 @@
 
   base::GlobalHistogramAllocator* allocator =
       base::GlobalHistogramAllocator::Get();
-  if (!allocator)
-    return;
+  if (!allocator) {
+    // If no allocator was created above, try to create a LocalMemomory one
+    // here. This avoids repeating the call many times above. In the case where
+    // persistence is disabled, an early return is done above.
+    base::GlobalHistogramAllocator::CreateWithLocalMemory(
+        kAllocSize, kAllocId, ChromeMetricsServiceClient::kBrowserMetricsName);
+    allocator = base::GlobalHistogramAllocator::Get();
+    if (!allocator)
+      return;
+  }
 
   // Store a copy of the system profile in this allocator.
   metrics::GlobalPersistentSystemProfile::GetInstance()
diff --git a/chrome/browser/chromeos/display/display_preferences.cc b/chrome/browser/chromeos/display/display_preferences.cc
index 9cd6b4a..649cc40 100644
--- a/chrome/browser/chromeos/display/display_preferences.cc
+++ b/chrome/browser/chromeos/display/display_preferences.cc
@@ -125,7 +125,8 @@
 
 bool ValueToTouchDataMap(
     const base::DictionaryValue& value,
-    std::map<uint32_t, display::TouchCalibrationData>* touch_calibration_map) {
+    std::map<display::TouchDeviceIdentifier, display::TouchCalibrationData>*
+        touch_calibration_map) {
   const base::DictionaryValue* map_dictionary;
 
   if (!value.GetDictionary(kTouchCalibrationMap, &map_dictionary))
@@ -141,7 +142,8 @@
     display::TouchCalibrationData data;
     if (!ValueToTouchData(*data_dict, &data))
       return false;
-    touch_calibration_map->emplace(touch_device_identifier, data);
+    touch_calibration_map->emplace(
+        display::TouchDeviceIdentifier(touch_device_identifier), data);
   }
   return true;
 }
@@ -177,7 +179,8 @@
 
 // Stores the entire touch calibration data map to the dictionary.
 void TouchDataMapToValue(
-    const std::map<uint32_t, display::TouchCalibrationData>& touch_data_map,
+    const std::map<display::TouchDeviceIdentifier,
+                   display::TouchCalibrationData>& touch_data_map,
     base::DictionaryValue* value) {
   std::unique_ptr<base::DictionaryValue> touch_data_map_dictionary =
       std::make_unique<base::DictionaryValue>();
@@ -187,7 +190,7 @@
         std::make_unique<base::DictionaryValue>();
     TouchDataToValue(pair.second, touch_data_dictionary.get());
 
-    touch_data_map_dictionary->SetDictionary(base::UintToString(pair.first),
+    touch_data_map_dictionary->SetDictionary(pair.first.ToString(),
                                              std::move(touch_data_dictionary));
   }
   value->SetDictionary(kTouchCalibrationMap,
@@ -286,8 +289,9 @@
     if (ValueToTouchData(*dict_value, &calibration_data))
       calibration_data_to_set = &calibration_data;
 
-    std::map<uint32_t, display::TouchCalibrationData> calibration_data_map;
-    std::map<uint32_t, display::TouchCalibrationData>*
+    std::map<display::TouchDeviceIdentifier, display::TouchCalibrationData>
+        calibration_data_map;
+    std::map<display::TouchDeviceIdentifier, display::TouchCalibrationData>*
         calibration_data_map_to_set = nullptr;
     if (ValueToTouchDataMap(*dict_value, &calibration_data_map))
       calibration_data_map_to_set = &calibration_data_map;
@@ -295,8 +299,8 @@
     // Migrate legacy touch calibration data to updated model. Use it as a
     // fallback mechanism.
     if (calibration_data_to_set) {
-      const uint32_t fallback_identifier =
-          display::TouchCalibrationData::GetFallbackTouchDeviceIdentifier();
+      const display::TouchDeviceIdentifier& fallback_identifier =
+          display::TouchDeviceIdentifier::GetFallbackTouchDeviceIdentifier();
       // Store the legacy cailbration data in the calibration data map if we
       // have a non-null calibration data map with no previous fallback
       // calibration data stored in it.
@@ -416,8 +420,8 @@
                           property_value.get());
 
       // Ensure that the legacy data is still stored just in case.
-      uint32_t fallback_identifier =
-          display::TouchCalibrationData::GetFallbackTouchDeviceIdentifier();
+      const display::TouchDeviceIdentifier& fallback_identifier =
+          display::TouchDeviceIdentifier::GetFallbackTouchDeviceIdentifier();
       if (info.HasTouchCalibrationData(fallback_identifier)) {
         TouchDataToValue(info.GetTouchCalibrationData(fallback_identifier),
                          property_value.get());
diff --git a/chrome/browser/chromeos/display/display_preferences_unittest.cc b/chrome/browser/chromeos/display/display_preferences_unittest.cc
index dda40fc..d0edf8d 100644
--- a/chrome/browser/chromeos/display/display_preferences_unittest.cc
+++ b/chrome/browser/chromeos/display/display_preferences_unittest.cc
@@ -302,7 +302,8 @@
                    .SetDisplayUIScale(id2, 1.25f));
 
   // Set touch calibration data for display |id2|.
-  constexpr uint32_t touch_device_identifier_1 = 1234;
+  uint32_t id_1 = 1234;
+  const display::TouchDeviceIdentifier touch_device_identifier_1(id_1);
   display::TouchCalibrationData::CalibrationPointPairQuad point_pair_quad_1 = {
       {std::make_pair(gfx::Point(10, 10), gfx::Point(11, 12)),
        std::make_pair(gfx::Point(190, 10), gfx::Point(195, 8)),
@@ -310,7 +311,8 @@
        std::make_pair(gfx::Point(190, 90), gfx::Point(189, 88))}};
   gfx::Size touch_size_1(200, 150);
 
-  constexpr uint32_t touch_device_identifier_2 = 2345;
+  uint32_t id_2 = 2345;
+  const display::TouchDeviceIdentifier touch_device_identifier_2(id_2);
   display::TouchCalibrationData::CalibrationPointPairQuad point_pair_quad_2 = {
       {std::make_pair(gfx::Point(10, 10), gfx::Point(11, 12)),
        std::make_pair(gfx::Point(190, 10), gfx::Point(195, 8)),
@@ -389,8 +391,8 @@
   display::TouchCalibrationData::CalibrationPointPairQuad stored_pair_quad;
 
   EXPECT_TRUE(property->GetDictionary(kTouchCalibrationMap, &map_dictionary));
-  EXPECT_TRUE(map_dictionary->GetDictionary(
-      base::UintToString(touch_device_identifier_1), &data_dict));
+  EXPECT_TRUE(
+      map_dictionary->GetDictionary(base::UintToString(id_1), &data_dict));
   EXPECT_TRUE(data_dict->GetString(kTouchCalibrationPointPairs, &touch_str));
   EXPECT_TRUE(ParseTouchCalibrationStringForTest(touch_str, &stored_pair_quad));
 
@@ -410,8 +412,8 @@
   EXPECT_EQ(width, touch_size_1.width());
   EXPECT_EQ(height, touch_size_1.height());
 
-  EXPECT_TRUE(map_dictionary->GetDictionary(
-      base::UintToString(touch_device_identifier_2), &data_dict));
+  EXPECT_TRUE(
+      map_dictionary->GetDictionary(base::UintToString(id_2), &data_dict));
   EXPECT_TRUE(data_dict->GetString(kTouchCalibrationPointPairs, &touch_str));
   EXPECT_TRUE(ParseTouchCalibrationStringForTest(touch_str, &stored_pair_quad));
 
diff --git a/chrome/browser/domain_reliability/browsertest.cc b/chrome/browser/domain_reliability/browsertest.cc
index b87684c..77ea066e 100644
--- a/chrome/browser/domain_reliability/browsertest.cc
+++ b/chrome/browser/domain_reliability/browsertest.cc
@@ -3,8 +3,11 @@
 // found in the LICENSE file.
 
 #include "base/command_line.h"
+#include "base/json/json_reader.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
+#include "base/run_loop.h"
+#include "base/test/values_test_util.h"
 #include "chrome/browser/domain_reliability/service_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
@@ -13,6 +16,9 @@
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/domain_reliability/service.h"
 #include "net/base/net_errors.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
+#include "net/test/embedded_test_server/http_request.h"
+#include "net/test/embedded_test_server/http_response.h"
 #include "net/test/url_request/url_request_failed_job.h"
 #include "url/gurl.h"
 
@@ -74,6 +80,94 @@
   EXPECT_TRUE(GetService());
 }
 
+static const char kUploadPath[] = "/domainreliability/upload";
+
+std::unique_ptr<net::test_server::HttpResponse> TestRequestHandler(
+    int* request_count_out,
+    std::string* last_request_content_out,
+    const base::Closure& quit_closure,
+    const net::test_server::HttpRequest& request) {
+  if (request.relative_url != kUploadPath)
+    return std::unique_ptr<net::test_server::HttpResponse>();
+
+  ++*request_count_out;
+  *last_request_content_out = request.has_content ? request.content : "";
+
+  quit_closure.Run();
+
+  auto response = base::MakeUnique<net::test_server::BasicHttpResponse>();
+  response->set_code(net::HTTP_OK);
+  response->set_content("");
+  response->set_content_type("text/plain");
+  return std::move(response);
+}
+
+IN_PROC_BROWSER_TEST_F(DomainReliabilityBrowserTest, Upload) {
+  DomainReliabilityService* service = GetService();
+
+  base::RunLoop run_loop;
+
+  net::test_server::EmbeddedTestServer test_server(
+      (net::test_server::EmbeddedTestServer::TYPE_HTTPS));
+
+  // This is cribbed from //chrome/test/ppapi/ppapi_test.cc; it shouldn't
+  // matter, as we don't actually use any of the handlers that access the
+  // filesystem.
+  base::FilePath document_root;
+  ASSERT_TRUE(ui_test_utils::GetRelativeBuildDirectory(&document_root));
+  test_server.AddDefaultHandlers(document_root);
+
+  // Register a same-origin collector to receive report uploads so we can check
+  // the full path. (Domain Reliability elides the path for privacy reasons when
+  // uploading to non-same-origin collectors.)
+  int request_count = 0;
+  std::string last_request_content;
+  test_server.RegisterRequestHandler(
+      base::Bind(&TestRequestHandler, &request_count, &last_request_content,
+                 run_loop.QuitClosure()));
+
+  ASSERT_TRUE(test_server.Start());
+
+  GURL error_url = test_server.GetURL("/close-socket");
+  GURL upload_url = test_server.GetURL(kUploadPath);
+
+  auto config = base::MakeUnique<DomainReliabilityConfig>();
+  config->origin = test_server.base_url().GetOrigin();
+  config->include_subdomains = false;
+  config->collectors.push_back(base::MakeUnique<GURL>(upload_url));
+  config->success_sample_rate = 1.0;
+  config->failure_sample_rate = 1.0;
+  service->AddContextForTesting(std::move(config));
+
+  // Trigger an error.
+
+  ui_test_utils::NavigateToURL(browser(), error_url);
+
+  service->ForceUploadsForTesting();
+
+  run_loop.Run();
+
+  EXPECT_EQ(1, request_count);
+  EXPECT_NE("", last_request_content);
+
+  auto body = base::JSONReader::Read(last_request_content);
+  ASSERT_TRUE(body);
+
+  const base::DictionaryValue* dict;
+  ASSERT_TRUE(body->GetAsDictionary(&dict));
+
+  const base::ListValue* entries;
+  ASSERT_TRUE(dict->GetList("entries", &entries));
+  ASSERT_EQ(1u, entries->GetSize());
+
+  const base::DictionaryValue* entry;
+  ASSERT_TRUE(entries->GetDictionary(0u, &entry));
+
+  std::string url;
+  ASSERT_TRUE(entry->GetString("url", &url));
+  EXPECT_EQ(url, error_url);
+}
+
 IN_PROC_BROWSER_TEST_F(DomainReliabilityBrowserTest, UploadAtShutdown) {
   DomainReliabilityService* service = GetService();
 
diff --git a/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc b/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc
index 49e60147..4874f47 100644
--- a/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc
+++ b/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc
@@ -453,7 +453,7 @@
   helpers::DispatchOnErrorOccurred(navigation_handle);
 }
 
-// See also NavigationController::IsURLInPageNavigation.
+// See also NavigationController::IsURLSameDocumentNavigation.
 bool WebNavigationTabObserver::IsReferenceFragmentNavigation(
     content::RenderFrameHost* render_frame_host,
     const GURL& url) {
diff --git a/chrome/browser/feature_engagement/bookmark/bookmark_tracker_unittest.cc b/chrome/browser/feature_engagement/bookmark/bookmark_tracker_unittest.cc
index 3ef1473..3cbc79b 100644
--- a/chrome/browser/feature_engagement/bookmark/bookmark_tracker_unittest.cc
+++ b/chrome/browser/feature_engagement/bookmark/bookmark_tracker_unittest.cc
@@ -22,6 +22,7 @@
 #include "components/feature_engagement/public/event_constants.h"
 #include "components/feature_engagement/public/feature_constants.h"
 #include "components/feature_engagement/public/tracker.h"
+#include "components/feature_engagement/test/mock_tracker.h"
 #include "components/feature_engagement/test/test_tracker.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "components/variations/variations_params_manager.h"
@@ -37,18 +38,6 @@
 const char kGroupName[] = "Enabled";
 const char kTestProfileName[] = "test-profile";
 
-class MockTracker : public Tracker {
- public:
-  MockTracker() = default;
-  MOCK_METHOD1(NotifyEvent, void(const std::string& event));
-  MOCK_METHOD1(ShouldTriggerHelpUI, bool(const base::Feature& feature));
-  MOCK_METHOD1(GetTriggerState,
-               Tracker::TriggerState(const base::Feature& feature));
-  MOCK_METHOD1(Dismissed, void(const base::Feature& feature));
-  MOCK_METHOD0(IsInitialized, bool());
-  MOCK_METHOD1(AddOnInitializedCallback, void(OnInitializedCallback callback));
-};
-
 class FakeBookmarkTracker : public BookmarkTracker {
  public:
   FakeBookmarkTracker(Tracker* feature_tracker, Profile* profile)
@@ -83,7 +72,7 @@
     testing_profile_manager_ = base::MakeUnique<TestingProfileManager>(
         TestingBrowserProcess::GetGlobal());
     ASSERT_TRUE(testing_profile_manager_->SetUp());
-    mock_tracker_ = base::MakeUnique<testing::StrictMock<MockTracker>>();
+    mock_tracker_ = base::MakeUnique<testing::StrictMock<test::MockTracker>>();
     bookmark_tracker_ = base::MakeUnique<FakeBookmarkTracker>(
         mock_tracker_.get(),
         testing_profile_manager_->CreateTestingProfile(kTestProfileName));
@@ -97,7 +86,7 @@
 
  protected:
   std::unique_ptr<TestingProfileManager> testing_profile_manager_;
-  std::unique_ptr<MockTracker> mock_tracker_;
+  std::unique_ptr<test::MockTracker> mock_tracker_;
   std::unique_ptr<FakeBookmarkTracker> bookmark_tracker_;
 
  private:
diff --git a/chrome/browser/feature_engagement/incognito_window/incognito_window_tracker_browsertest.cc b/chrome/browser/feature_engagement/incognito_window/incognito_window_tracker_browsertest.cc
index 07a6d40..fce06c61 100644
--- a/chrome/browser/feature_engagement/incognito_window/incognito_window_tracker_browsertest.cc
+++ b/chrome/browser/feature_engagement/incognito_window/incognito_window_tracker_browsertest.cc
@@ -17,6 +17,7 @@
 #include "components/feature_engagement/public/event_constants.h"
 #include "components/feature_engagement/public/feature_constants.h"
 #include "components/feature_engagement/public/tracker.h"
+#include "components/feature_engagement/test/mock_tracker.h"
 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
 #include "components/keyed_service/core/keyed_service.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
@@ -32,24 +33,9 @@
   return arg.name == feature.name;
 }
 
-// Mock the backend for displaying in-product help.
-class MockTracker : public Tracker {
- public:
-  MockTracker() = default;
-  MOCK_METHOD1(NotifyEvent, void(const std::string& event));
-  MOCK_METHOD1(GetTriggerState, TriggerState(const base::Feature& feature));
-  MOCK_METHOD1(ShouldTriggerHelpUI, bool(const base::Feature& feature));
-  MOCK_METHOD1(Dismissed, void(const base::Feature& feature));
-  MOCK_METHOD0(IsInitialized, bool());
-  MOCK_METHOD1(AddOnInitializedCallback, void(OnInitializedCallback callback));
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(MockTracker);
-};
-
 std::unique_ptr<KeyedService> BuildTestTrackerFactory(
     content::BrowserContext* context) {
-  return std::make_unique<testing::StrictMock<MockTracker>>();
+  return std::make_unique<testing::StrictMock<test::MockTracker>>();
 }
 
 // Set up a test profile for the incognito window In-Product Help (IPH)
@@ -66,7 +52,7 @@
     // Ensure all initialization is finished.
     base::RunLoop().RunUntilIdle();
 
-    feature_engagement_tracker_ = static_cast<MockTracker*>(
+    feature_engagement_tracker_ = static_cast<test::MockTracker*>(
         TrackerFactory::GetForBrowserContext(browser()->profile()));
 
     EXPECT_CALL(*feature_engagement_tracker_, IsInitialized())
@@ -78,7 +64,7 @@
 
  protected:
   // Owned by the Profile.
-  MockTracker* feature_engagement_tracker_ = nullptr;
+  test::MockTracker* feature_engagement_tracker_ = nullptr;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(IncognitoWindowTrackerBrowserTest);
diff --git a/chrome/browser/feature_engagement/incognito_window/incognito_window_tracker_unittest.cc b/chrome/browser/feature_engagement/incognito_window/incognito_window_tracker_unittest.cc
index 698a0410..a4a5874 100644
--- a/chrome/browser/feature_engagement/incognito_window/incognito_window_tracker_unittest.cc
+++ b/chrome/browser/feature_engagement/incognito_window/incognito_window_tracker_unittest.cc
@@ -22,6 +22,7 @@
 #include "components/feature_engagement/public/event_constants.h"
 #include "components/feature_engagement/public/feature_constants.h"
 #include "components/feature_engagement/public/tracker.h"
+#include "components/feature_engagement/test/mock_tracker.h"
 #include "components/feature_engagement/test/test_tracker.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "components/variations/variations_params_manager.h"
@@ -37,18 +38,6 @@
 const char kGroupName[] = "Enabled";
 const char kTestProfileName[] = "test-profile";
 
-class MockTracker : public Tracker {
- public:
-  MockTracker() = default;
-  MOCK_METHOD1(NotifyEvent, void(const std::string& event));
-  MOCK_METHOD1(ShouldTriggerHelpUI, bool(const base::Feature& feature));
-  MOCK_METHOD1(GetTriggerState,
-               Tracker::TriggerState(const base::Feature& feature));
-  MOCK_METHOD1(Dismissed, void(const base::Feature& feature));
-  MOCK_METHOD0(IsInitialized, bool());
-  MOCK_METHOD1(AddOnInitializedCallback, void(OnInitializedCallback callback));
-};
-
 class FakeIncognitoWindowTracker : public IncognitoWindowTracker {
  public:
   FakeIncognitoWindowTracker(Tracker* feature_tracker, Profile* profile)
@@ -83,7 +72,7 @@
     testing_profile_manager_ = base::MakeUnique<TestingProfileManager>(
         TestingBrowserProcess::GetGlobal());
     ASSERT_TRUE(testing_profile_manager_->SetUp());
-    mock_tracker_ = base::MakeUnique<testing::StrictMock<MockTracker>>();
+    mock_tracker_ = base::MakeUnique<testing::StrictMock<test::MockTracker>>();
     incognito_window_tracker_ = base::MakeUnique<FakeIncognitoWindowTracker>(
         mock_tracker_.get(),
         testing_profile_manager_->CreateTestingProfile(kTestProfileName));
@@ -98,7 +87,7 @@
 
  protected:
   std::unique_ptr<TestingProfileManager> testing_profile_manager_;
-  std::unique_ptr<MockTracker> mock_tracker_;
+  std::unique_ptr<test::MockTracker> mock_tracker_;
   std::unique_ptr<FakeIncognitoWindowTracker> incognito_window_tracker_;
 
  private:
diff --git a/chrome/browser/feature_engagement/new_tab/new_tab_tracker_browsertest.cc b/chrome/browser/feature_engagement/new_tab/new_tab_tracker_browsertest.cc
index ca4c502..cb6d38b 100644
--- a/chrome/browser/feature_engagement/new_tab/new_tab_tracker_browsertest.cc
+++ b/chrome/browser/feature_engagement/new_tab/new_tab_tracker_browsertest.cc
@@ -21,6 +21,7 @@
 #include "components/feature_engagement/public/event_constants.h"
 #include "components/feature_engagement/public/feature_constants.h"
 #include "components/feature_engagement/public/tracker.h"
+#include "components/feature_engagement/test/mock_tracker.h"
 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
 #include "components/keyed_service/core/keyed_service.h"
 #include "components/omnibox/browser/omnibox_edit_model.h"
@@ -38,22 +39,9 @@
   return arg.name == feature.name;
 }
 
-class MockTracker : public Tracker {
- public:
-  MockTracker() = default;
-  MOCK_METHOD1(NotifyEvent, void(const std::string& event));
-  TriggerState GetTriggerState(const base::Feature& feature) override {
-    return Tracker::TriggerState::HAS_NOT_BEEN_DISPLAYED;
-  }
-  MOCK_METHOD1(ShouldTriggerHelpUI, bool(const base::Feature& feature));
-  MOCK_METHOD1(Dismissed, void(const base::Feature& feature));
-  MOCK_METHOD0(IsInitialized, bool());
-  void AddOnInitializedCallback(OnInitializedCallback callback) override {}
-};
-
 std::unique_ptr<KeyedService> BuildTestTrackerFactory(
     content::BrowserContext* context) {
-  return base::MakeUnique<testing::StrictMock<MockTracker>>();
+  return base::MakeUnique<testing::StrictMock<test::MockTracker>>();
 }
 
 class NewTabTrackerBrowserTest : public InProcessBrowserTest {
@@ -68,8 +56,11 @@
     // Ensure all initialization is finished.
     base::RunLoop().RunUntilIdle();
 
-    feature_engagement_tracker_ = static_cast<MockTracker*>(
+    feature_engagement_tracker_ = static_cast<test::MockTracker*>(
         TrackerFactory::GetForBrowserContext(browser()->profile()));
+    ON_CALL(*feature_engagement_tracker_, GetTriggerState(testing::_))
+        .WillByDefault(testing::Return(
+            feature_engagement::Tracker::TriggerState::HAS_NOT_BEEN_DISPLAYED));
 
     EXPECT_CALL(*feature_engagement_tracker_, IsInitialized())
         .WillOnce(::testing::Return(true));
@@ -82,7 +73,7 @@
 
  protected:
   // Owned by the Profile.
-  MockTracker* feature_engagement_tracker_;
+  test::MockTracker* feature_engagement_tracker_;
 };
 
 }  // namespace
diff --git a/chrome/browser/feature_engagement/new_tab/new_tab_tracker_unittest.cc b/chrome/browser/feature_engagement/new_tab/new_tab_tracker_unittest.cc
index c838edf..4205d5c 100644
--- a/chrome/browser/feature_engagement/new_tab/new_tab_tracker_unittest.cc
+++ b/chrome/browser/feature_engagement/new_tab/new_tab_tracker_unittest.cc
@@ -22,6 +22,7 @@
 #include "components/feature_engagement/public/event_constants.h"
 #include "components/feature_engagement/public/feature_constants.h"
 #include "components/feature_engagement/public/tracker.h"
+#include "components/feature_engagement/test/mock_tracker.h"
 #include "components/feature_engagement/test/test_tracker.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "components/variations/variations_params_manager.h"
@@ -37,18 +38,6 @@
 const char kNewTabTrialName[] = "NewTabTrial";
 const char kTestProfileName[] = "test-profile";
 
-class MockTracker : public Tracker {
- public:
-  MockTracker() = default;
-  MOCK_METHOD1(NotifyEvent, void(const std::string& event));
-  MOCK_METHOD1(ShouldTriggerHelpUI, bool(const base::Feature& feature));
-  MOCK_METHOD1(GetTriggerState,
-               Tracker::TriggerState(const base::Feature& feature));
-  MOCK_METHOD1(Dismissed, void(const base::Feature& feature));
-  MOCK_METHOD0(IsInitialized, bool());
-  MOCK_METHOD1(AddOnInitializedCallback, void(OnInitializedCallback callback));
-};
-
 class FakeNewTabTracker : public NewTabTracker {
  public:
   FakeNewTabTracker(Tracker* feature_tracker, Profile* profile)
@@ -84,7 +73,7 @@
     testing_profile_manager_ = base::MakeUnique<TestingProfileManager>(
         TestingBrowserProcess::GetGlobal());
     ASSERT_TRUE(testing_profile_manager_->SetUp());
-    mock_tracker_ = base::MakeUnique<testing::StrictMock<MockTracker>>();
+    mock_tracker_ = base::MakeUnique<testing::StrictMock<test::MockTracker>>();
     new_tab_tracker_ = base::MakeUnique<FakeNewTabTracker>(
         mock_tracker_.get(),
         testing_profile_manager_->CreateTestingProfile(kTestProfileName));
@@ -98,7 +87,7 @@
 
  protected:
   std::unique_ptr<TestingProfileManager> testing_profile_manager_;
-  std::unique_ptr<MockTracker> mock_tracker_;
+  std::unique_ptr<test::MockTracker> mock_tracker_;
   std::unique_ptr<FakeNewTabTracker> new_tab_tracker_;
 
  private:
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
index 6014038..504391d4 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -64,7 +64,6 @@
 #include "components/metrics/component_metrics_provider.h"
 #include "components/metrics/drive_metrics_provider.h"
 #include "components/metrics/field_trials_provider.h"
-#include "components/metrics/file_metrics_provider.h"
 #include "components/metrics/gpu/gpu_metrics_provider.h"
 #include "components/metrics/metrics_log_uploader.h"
 #include "components/metrics/metrics_pref_names.h"
@@ -100,6 +99,10 @@
 #include "chrome/browser/ui/android/tab_model/tab_model_list_observer.h"
 #endif
 
+#if defined(OS_POSIX)
+#include <signal.h>
+#endif
+
 #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
 #include "chrome/browser/service_process/service_process_control.h"
 #endif
@@ -251,13 +254,15 @@
     base::FilePath browser_metrics_upload_dir = user_data_dir.AppendASCII(
         ChromeMetricsServiceClient::kBrowserMetricsName);
     if (metrics_reporting_enabled) {
-      metrics::FileMetricsProvider::Params params(
+      metrics::FileMetricsProvider::Params browser_metrics_params(
           browser_metrics_upload_dir,
           metrics::FileMetricsProvider::SOURCE_HISTOGRAMS_ATOMIC_DIR,
           metrics::FileMetricsProvider::ASSOCIATE_INTERNAL_PROFILE,
           ChromeMetricsServiceClient::kBrowserMetricsName);
-      params.max_dir_kib = kMaxHistogramStorageKiB;
-      file_metrics_provider->RegisterSource(params);
+      browser_metrics_params.max_dir_kib = kMaxHistogramStorageKiB;
+      browser_metrics_params.filter = base::BindRepeating(
+          &ChromeMetricsServiceClient::FilterBrowserMetricsFiles);
+      file_metrics_provider->RegisterSource(browser_metrics_params);
 
       base::FilePath active_path;
       base::GlobalHistogramAllocator::ConstructFilePaths(
@@ -341,6 +346,34 @@
 };
 #endif
 
+ChromeMetricsServiceClient::IsProcessRunningFunction g_is_process_running =
+    nullptr;
+
+bool IsProcessRunning(base::ProcessId pid) {
+  // Use any "override" method if one is set (for testing).
+  if (g_is_process_running)
+    return g_is_process_running(pid);
+
+#if defined(OS_WIN)
+  HANDLE process = OpenProcess(SYNCHRONIZE, FALSE, pid);
+  if (process) {
+    DWORD ret = WaitForSingleObject(process, 0);
+    CloseHandle(process);
+    if (ret == WAIT_TIMEOUT)
+      return true;
+  }
+#elif defined(OS_POSIX)
+  // Sending a signal value of 0 will cause error checking to be performed
+  // with no signal being sent.
+  if (kill(pid, 0) == 0 || errno != ESRCH)
+    return true;
+#else
+#error Unsupported OS. Might be okay to just return false.
+#endif
+
+  return false;
+}
+
 }  // namespace
 
 const char ChromeMetricsServiceClient::kBrowserMetricsName[] = "BrowserMetrics";
@@ -905,6 +938,31 @@
   UpdateRunningServices();
 }
 
+// static
+metrics::FileMetricsProvider::FilterAction
+ChromeMetricsServiceClient::FilterBrowserMetricsFiles(
+    const base::FilePath& path) {
+  base::ProcessId pid;
+  if (!base::GlobalHistogramAllocator::ParseFilePath(path, nullptr, nullptr,
+                                                     &pid)) {
+    return metrics::FileMetricsProvider::FILTER_PROCESS_FILE;
+  }
+
+  if (pid == base::GetCurrentProcId())
+    return metrics::FileMetricsProvider::FILTER_ACTIVE_THIS_PID;
+
+  if (IsProcessRunning(pid))
+    return metrics::FileMetricsProvider::FILTER_TRY_LATER;
+
+  return metrics::FileMetricsProvider::FILTER_PROCESS_FILE;
+}
+
+// static
+void ChromeMetricsServiceClient::SetIsProcessRunningForTesting(
+    ChromeMetricsServiceClient::IsProcessRunningFunction func) {
+  g_is_process_running = func;
+}
+
 bool ChromeMetricsServiceClient::IsHistorySyncEnabledOnAllProfiles() {
   return SyncDisableObserver::IsHistorySyncEnabledOnAllProfiles();
 }
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.h b/chrome/browser/metrics/chrome_metrics_service_client.h
index de354d8f..b6fb153 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.h
+++ b/chrome/browser/metrics/chrome_metrics_service_client.h
@@ -18,6 +18,7 @@
 #include "base/sequence_checker.h"
 #include "build/build_config.h"
 #include "chrome/browser/metrics/metrics_memory_details.h"
+#include "components/metrics/file_metrics_provider.h"
 #include "components/metrics/metrics_log_uploader.h"
 #include "components/metrics/metrics_service_client.h"
 #include "components/omnibox/browser/omnibox_event_global_tracker.h"
@@ -92,6 +93,12 @@
   // ukm::SyncDisableObserver:
   void OnSyncPrefsChanged(bool must_purge) override;
 
+  // Determine what to do with a file based on filename. Visible for testing.
+  using IsProcessRunningFunction = bool (*)(base::ProcessId);
+  static metrics::FileMetricsProvider::FilterAction FilterBrowserMetricsFiles(
+      const base::FilePath& path);
+  static void SetIsProcessRunningForTesting(IsProcessRunningFunction func);
+
   // Persistent browser metrics need to be persisted somewhere. This constant
   // provides a known string to be used for both the allocator's internal name
   // and for a file on disk (relative to chrome::DIR_USER_DATA) to which they
diff --git a/chrome/browser/metrics/chrome_metrics_service_client_unittest.cc b/chrome/browser/metrics/chrome_metrics_service_client_unittest.cc
new file mode 100644
index 0000000..8b6ea614
--- /dev/null
+++ b/chrome/browser/metrics/chrome_metrics_service_client_unittest.cc
@@ -0,0 +1,45 @@
+// 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 "chrome/browser/metrics/chrome_metrics_service_client.h"
+
+#include "base/files/file_path.h"
+#include "base/metrics/persistent_histogram_allocator.h"
+#include "base/process/process_handle.h"
+#include "components/metrics/file_metrics_provider.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+bool TestIsProcessRunning(base::ProcessId pid) {
+  // Odd are running, even are not.
+  return (pid & 1) == 1;
+}
+
+TEST(ChromeMetricsServiceClientTest, FilterFiles) {
+  ChromeMetricsServiceClient::SetIsProcessRunningForTesting(
+      &TestIsProcessRunning);
+
+  base::ProcessId my_pid = base::GetCurrentProcId();
+  base::FilePath active_dir(FILE_PATH_LITERAL("foo"));
+  base::FilePath upload_dir(FILE_PATH_LITERAL("bar"));
+  base::FilePath upload_path;
+  base::GlobalHistogramAllocator::ConstructFilePathsForUploadDir(
+      active_dir, upload_dir, "TestMetrics", &upload_path, nullptr, nullptr);
+  EXPECT_EQ(metrics::FileMetricsProvider::FILTER_ACTIVE_THIS_PID,
+            ChromeMetricsServiceClient::FilterBrowserMetricsFiles(upload_path));
+
+  EXPECT_EQ(
+      metrics::FileMetricsProvider::FILTER_PROCESS_FILE,
+      ChromeMetricsServiceClient::FilterBrowserMetricsFiles(
+          base::GlobalHistogramAllocator::ConstructFilePathForUploadDir(
+              upload_dir, "Test", base::Time::Now(), (my_pid & ~1) + 10)));
+  EXPECT_EQ(
+      metrics::FileMetricsProvider::FILTER_TRY_LATER,
+      ChromeMetricsServiceClient::FilterBrowserMetricsFiles(
+          base::GlobalHistogramAllocator::ConstructFilePathForUploadDir(
+              upload_dir, "Test", base::Time::Now(), (my_pid & ~1) + 11)));
+}
+
+}  // namespace
diff --git a/chrome/browser/net/chrome_network_delegate.h b/chrome/browser/net/chrome_network_delegate.h
index d87cbd25..e055ef1 100644
--- a/chrome/browser/net/chrome_network_delegate.h
+++ b/chrome/browser/net/chrome_network_delegate.h
@@ -114,6 +114,10 @@
     domain_reliability_monitor_ = std::move(monitor);
   }
 
+  domain_reliability::DomainReliabilityMonitor* domain_reliability_monitor() {
+    return domain_reliability_monitor_.get();
+  }
+
   void set_data_use_aggregator(
       data_usage::DataUseAggregator* data_use_aggregator,
       bool is_data_usage_off_the_record);
diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc
index eca44b2..0a339aed 100644
--- a/chrome/browser/net/profile_network_context_service.cc
+++ b/chrome/browser/net/profile_network_context_service.cc
@@ -26,6 +26,7 @@
 #include "content/public/common/content_features.h"
 #include "content/public/common/service_names.mojom.h"
 #include "mojo/public/cpp/bindings/associated_interface_ptr.h"
+#include "net/net_features.h"
 
 namespace {
 
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
index 882d291d..b71e2731 100644
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -24,6 +24,7 @@
 #include "content/public/common/content_features.h"
 #include "content/public/common/service_names.mojom.h"
 #include "mojo/public/cpp/bindings/associated_interface_ptr.h"
+#include "net/net_features.h"
 
 namespace {
 
diff --git a/chrome/browser/notifications/notification_template_builder.cc b/chrome/browser/notifications/notification_template_builder.cc
index 605f49eb..ecb2b13 100644
--- a/chrome/browser/notifications/notification_template_builder.cc
+++ b/chrome/browser/notifications/notification_template_builder.cc
@@ -21,6 +21,7 @@
 const char kActivationType[] = "activationType";
 const char kArguments[] = "arguments";
 const char kAttribution[] = "attribution";
+const char kAudioElement[] = "audio";
 const char kBindingElement[] = "binding";
 const char kBindingElementTemplateAttribute[] = "template";
 const char kButtonIndex[] = "buttonIndex=";
@@ -31,7 +32,9 @@
 const char kInputType[] = "type";
 const char kPlaceholderContent[] = "placeHolderContent";
 const char kPlacement[] = "placement";
+const char kSilent[] = "silent";
 const char kText[] = "text";
+const char kTrue[] = "true";
 const char kUserResponse[] = "userResponse";
 const char kTextElement[] = "text";
 const char kToastElement[] = "toast";
@@ -75,6 +78,9 @@
 
   builder->AddActions(notification.buttons());
 
+  if (notification.silent())
+    builder->WriteAudioSilentElement();
+
   builder->EndToastElement();
 
   return builder;
@@ -188,6 +194,12 @@
   xml_writer_->EndElement();
 }
 
+void NotificationTemplateBuilder::WriteAudioSilentElement() {
+  xml_writer_->StartElement(kAudioElement);
+  xml_writer_->AddAttribute(kSilent, kTrue);
+  xml_writer_->EndElement();
+}
+
 void NotificationTemplateBuilder::WriteActionElement(
     const message_center::ButtonInfo& button,
     int index) {
diff --git a/chrome/browser/notifications/notification_template_builder.h b/chrome/browser/notifications/notification_template_builder.h
index d937006..9b4ca345 100644
--- a/chrome/browser/notifications/notification_template_builder.h
+++ b/chrome/browser/notifications/notification_template_builder.h
@@ -73,6 +73,9 @@
   void StartActionsElement();
   void EndActionsElement();
 
+  // Writes the <audio silent="true"> element.
+  void WriteAudioSilentElement();
+
   // Fills in the details for the actions.
   void AddActions(const std::vector<message_center::ButtonInfo>& buttons);
   void WriteActionElement(const message_center::ButtonInfo& button, int index);
diff --git a/chrome/browser/notifications/notification_template_builder_unittest.cc b/chrome/browser/notifications/notification_template_builder_unittest.cc
index 8a2a2ceb..cab5bc5 100644
--- a/chrome/browser/notifications/notification_template_builder_unittest.cc
+++ b/chrome/browser/notifications/notification_template_builder_unittest.cc
@@ -25,51 +25,35 @@
 const char kNotificationMessage[] = "My Message";
 const char kNotificationOrigin[] = "https://example.com";
 
-// Intermediary format for the options available when creating a notification,
-// with default values specific to this test suite to avoid endless repetition.
-struct NotificationData {
-  NotificationData()
-      : id(kNotificationId),
-        title(kNotificationTitle),
-        message(kNotificationMessage),
-        origin(kNotificationOrigin) {}
-
-  std::string id;
-  std::string title;
-  std::string message;
-  GURL origin;
 };
 
-}  // namespace
-
 class NotificationTemplateBuilderTest : public ::testing::Test {
  public:
   NotificationTemplateBuilderTest() = default;
   ~NotificationTemplateBuilderTest() override = default;
 
  protected:
-  // Builds the message_center::Notification object and then the template for
-  // the given |notification_data|, and writes that to |*xml_template|. Calls
-  // must be wrapped in ASSERT_NO_FATAL_FAILURE().
-  void BuildTemplate(const NotificationData& notification_data,
-                     const std::vector<message_center::ButtonInfo>& buttons,
-                     base::string16* xml_template) {
-    GURL origin_url(notification_data.origin);
+  // Builds a notification object and initializes it to default values.
+  std::unique_ptr<message_center::Notification> InitializeBasicNotification() {
+    GURL origin_url(kNotificationOrigin);
 
-    message_center::Notification notification(
-        message_center::NOTIFICATION_TYPE_SIMPLE, notification_data.id,
-        base::UTF8ToUTF16(notification_data.title),
-        base::UTF8ToUTF16(notification_data.message), gfx::Image() /* icon */,
+    return std::make_unique<message_center::Notification>(
+        message_center::NOTIFICATION_TYPE_SIMPLE, kNotificationId,
+        base::UTF8ToUTF16(kNotificationTitle),
+        base::UTF8ToUTF16(kNotificationMessage), gfx::Image() /* icon */,
         base::string16() /* display_source */, origin_url,
         NotifierId(origin_url), RichNotificationData(), nullptr /* delegate */);
-    if (buttons.size())
-      notification.set_buttons(buttons);
+  }
 
+  // Converts the notification data to XML and verifies it is as expected. Calls
+  // must be wrapped in ASSERT_NO_FATAL_FAILURE().
+  void VerifyXml(const message_center::Notification& notification,
+                 const base::string16& xml_template) {
     template_ =
-        NotificationTemplateBuilder::Build(notification_data.id, notification);
+        NotificationTemplateBuilder::Build(kNotificationId, notification);
     ASSERT_TRUE(template_);
 
-    *xml_template = template_->GetNotificationTemplate();
+    EXPECT_EQ(template_->GetNotificationTemplate(), xml_template);
   }
 
  protected:
@@ -80,12 +64,8 @@
 };
 
 TEST_F(NotificationTemplateBuilderTest, SimpleToast) {
-  NotificationData notification_data;
-  base::string16 xml_template;
-  std::vector<message_center::ButtonInfo> buttons;
-
-  ASSERT_NO_FATAL_FAILURE(
-      BuildTemplate(notification_data, buttons, &xml_template));
+  std::unique_ptr<message_center::Notification> notification =
+      InitializeBasicNotification();
 
   const wchar_t kExpectedXml[] =
       LR"(<toast launch="notification_id">
@@ -99,19 +79,17 @@
 </toast>
 )";
 
-  EXPECT_EQ(xml_template, kExpectedXml);
+  ASSERT_NO_FATAL_FAILURE(VerifyXml(*notification, kExpectedXml));
 }
 
 TEST_F(NotificationTemplateBuilderTest, Buttons) {
-  NotificationData notification_data;
-  base::string16 xml_template;
+  std::unique_ptr<message_center::Notification> notification =
+      InitializeBasicNotification();
 
   std::vector<message_center::ButtonInfo> buttons;
   buttons.emplace_back(base::ASCIIToUTF16("Button1"));
   buttons.emplace_back(base::ASCIIToUTF16("Button2"));
-
-  ASSERT_NO_FATAL_FAILURE(
-      BuildTemplate(notification_data, buttons, &xml_template));
+  notification->set_buttons(buttons);
 
   const wchar_t kExpectedXml[] =
       LR"(<toast launch="notification_id">
@@ -129,12 +107,12 @@
 </toast>
 )";
 
-  EXPECT_EQ(xml_template, kExpectedXml);
+  ASSERT_NO_FATAL_FAILURE(VerifyXml(*notification, kExpectedXml));
 }
 
 TEST_F(NotificationTemplateBuilderTest, InlineReplies) {
-  NotificationData notification_data;
-  base::string16 xml_template;
+  std::unique_ptr<message_center::Notification> notification =
+      InitializeBasicNotification();
 
   std::vector<message_center::ButtonInfo> buttons;
   message_center::ButtonInfo button1(base::ASCIIToUTF16("Button1"));
@@ -142,9 +120,7 @@
   button1.placeholder = base::ASCIIToUTF16("Reply here");
   buttons.emplace_back(button1);
   buttons.emplace_back(base::ASCIIToUTF16("Button2"));
-
-  ASSERT_NO_FATAL_FAILURE(
-      BuildTemplate(notification_data, buttons, &xml_template));
+  notification->set_buttons(buttons);
 
   const wchar_t kExpectedXml[] =
       LR"(<toast launch="notification_id">
@@ -163,12 +139,12 @@
 </toast>
 )";
 
-  EXPECT_EQ(xml_template, kExpectedXml);
+  ASSERT_NO_FATAL_FAILURE(VerifyXml(*notification, kExpectedXml));
 }
 
 TEST_F(NotificationTemplateBuilderTest, InlineRepliesDoubleInput) {
-  NotificationData notification_data;
-  base::string16 xml_template;
+  std::unique_ptr<message_center::Notification> notification =
+      InitializeBasicNotification();
 
   std::vector<message_center::ButtonInfo> buttons;
   message_center::ButtonInfo button1(base::ASCIIToUTF16("Button1"));
@@ -179,9 +155,7 @@
   button2.type = message_center::ButtonType::TEXT;
   button2.placeholder = base::ASCIIToUTF16("Should not appear");
   buttons.emplace_back(button2);
-
-  ASSERT_NO_FATAL_FAILURE(
-      BuildTemplate(notification_data, buttons, &xml_template));
+  notification->set_buttons(buttons);
 
   const wchar_t kExpectedXml[] =
       LR"(<toast launch="notification_id">
@@ -200,12 +174,12 @@
 </toast>
 )";
 
-  EXPECT_EQ(xml_template, kExpectedXml);
+  ASSERT_NO_FATAL_FAILURE(VerifyXml(*notification, kExpectedXml));
 }
 
 TEST_F(NotificationTemplateBuilderTest, InlineRepliesTextTypeNotFirst) {
-  NotificationData notification_data;
-  base::string16 xml_template;
+  std::unique_ptr<message_center::Notification> notification =
+      InitializeBasicNotification();
 
   std::vector<message_center::ButtonInfo> buttons;
   buttons.emplace_back(base::ASCIIToUTF16("Button1"));
@@ -213,9 +187,7 @@
   button2.type = message_center::ButtonType::TEXT;
   button2.placeholder = base::ASCIIToUTF16("Reply here");
   buttons.emplace_back(button2);
-
-  ASSERT_NO_FATAL_FAILURE(
-      BuildTemplate(notification_data, buttons, &xml_template));
+  notification->set_buttons(buttons);
 
   const wchar_t kExpectedXml[] =
       LR"(<toast launch="notification_id">
@@ -234,5 +206,26 @@
 </toast>
 )";
 
-  EXPECT_EQ(xml_template, kExpectedXml);
+  ASSERT_NO_FATAL_FAILURE(VerifyXml(*notification, kExpectedXml));
+}
+
+TEST_F(NotificationTemplateBuilderTest, Silent) {
+  std::unique_ptr<message_center::Notification> notification =
+      InitializeBasicNotification();
+  notification->set_silent(true);
+
+  const wchar_t kExpectedXml[] =
+      LR"(<toast launch="notification_id">
+ <visual>
+  <binding template="ToastGeneric">
+   <text>My Title</text>
+   <text>My Message</text>
+   <text placement="attribution">example.com</text>
+  </binding>
+ </visual>
+ <audio silent="true"/>
+</toast>
+)";
+
+  ASSERT_NO_FATAL_FAILURE(VerifyXml(*notification, kExpectedXml));
 }
diff --git a/chrome/browser/payments/manifest_verifier_browsertest.cc b/chrome/browser/payments/manifest_verifier_browsertest.cc
index 6a698a33..5f1fdb60 100644
--- a/chrome/browser/payments/manifest_verifier_browsertest.cc
+++ b/chrome/browser/payments/manifest_verifier_browsertest.cc
@@ -79,11 +79,11 @@
   void ExpectApp(int64_t id,
                  const std::string& expected_scope,
                  const std::set<std::string>& expected_methods) {
-    ASSERT_NE(verified_apps().end(), verified_apps().find(id));
-    EXPECT_EQ(GURL(expected_scope), verified_apps().find(id)->second->scope);
-    std::set<std::string> actual_methods(
-        verified_apps().find(id)->second->enabled_methods.begin(),
-        verified_apps().find(id)->second->enabled_methods.end());
+    const auto& it = verified_apps().find(id);
+    ASSERT_NE(verified_apps().end(), it);
+    EXPECT_EQ(GURL(expected_scope), it->second->scope);
+    std::set<std::string> actual_methods(it->second->enabled_methods.begin(),
+                                         it->second->enabled_methods.end());
     EXPECT_EQ(expected_methods, actual_methods);
   }
 
@@ -508,5 +508,46 @@
   }
 }
 
+// All known payment method names are valid.
+IN_PROC_BROWSER_TEST_F(ManifestVerifierBrowserTest,
+                       AllKnownPaymentMethodNames) {
+  {
+    content::PaymentAppProvider::PaymentApps apps;
+    apps[0] = std::make_unique<content::StoredPaymentApp>();
+    apps[0]->scope = GURL("https://bobpay.com/webpay");
+    apps[0]->enabled_methods.push_back("basic-card");
+    apps[0]->enabled_methods.push_back("interledger");
+    apps[0]->enabled_methods.push_back("payee-credit-transfer");
+    apps[0]->enabled_methods.push_back("payer-credit-transfer");
+    apps[0]->enabled_methods.push_back("not-supported");
+
+    Verify(std::move(apps));
+
+    EXPECT_EQ(1U, verified_apps().size());
+    ExpectApp(0, "https://bobpay.com/webpay",
+              {"basic-card", "interledger", "payee-credit-transfer",
+               "payer-credit-transfer"});
+  }
+
+  // Repeat verifications should have identical results.
+  {
+    content::PaymentAppProvider::PaymentApps apps;
+    apps[0] = std::make_unique<content::StoredPaymentApp>();
+    apps[0]->scope = GURL("https://bobpay.com/webpay");
+    apps[0]->enabled_methods.push_back("basic-card");
+    apps[0]->enabled_methods.push_back("interledger");
+    apps[0]->enabled_methods.push_back("payee-credit-transfer");
+    apps[0]->enabled_methods.push_back("payer-credit-transfer");
+    apps[0]->enabled_methods.push_back("not-supported");
+
+    Verify(std::move(apps));
+
+    EXPECT_EQ(1U, verified_apps().size());
+    ExpectApp(0, "https://bobpay.com/webpay",
+              {"basic-card", "interledger", "payee-credit-transfer",
+               "payer-credit-transfer"});
+  }
+}
+
 }  // namespace
 }  // namespace payments
diff --git a/chrome/browser/plugins/plugins_resource_service.cc b/chrome/browser/plugins/plugins_resource_service.cc
index 647f8adc..baa01b6 100644
--- a/chrome/browser/plugins/plugins_resource_service.cc
+++ b/chrome/browser/plugins/plugins_resource_service.cc
@@ -52,7 +52,7 @@
 const int kCacheUpdateDelayMs = 24 * 60 * 60 * 1000;
 
 const char kPluginsServerUrl[] =
-    "https://www.gstatic.com/chrome/config/plugins_2/";
+    "https://www.gstatic.com/chrome/config/plugins_3/";
 
 GURL GetPluginsServerURL() {
   std::string filename;
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc
index f1a4c417..913319b 100644
--- a/chrome/browser/policy/policy_browsertest.cc
+++ b/chrome/browser/policy/policy_browsertest.cc
@@ -182,6 +182,7 @@
 #include "media/media_features.h"
 #include "net/base/net_errors.h"
 #include "net/base/url_util.h"
+#include "net/dns/mock_host_resolver.h"
 #include "net/http/http_stream_factory.h"
 #include "net/http/transport_security_state.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
@@ -316,17 +317,6 @@
   }
 }
 
-// Remove filters for requests to the hosts in |urls|.
-void UndoRedirectHostsToTestData(const char* const urls[], size_t size) {
-  // Map the given hosts to the test data dir.
-  net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance();
-  for (size_t i = 0; i < size; ++i) {
-    const GURL url(urls[i]);
-    EXPECT_TRUE(url.is_valid());
-    filter->RemoveUrlHandler(url);
-  }
-}
-
 // Fails requests using ERR_CONNECTION_RESET.
 class FailedJobInterceptor : public net::URLRequestInterceptor {
  public:
@@ -387,7 +377,7 @@
 
 // Verifies that the given url |spec| can be opened. This assumes that |spec|
 // points at empty.html in the test data dir.
-void CheckCanOpenURL(Browser* browser, const char* spec) {
+void CheckCanOpenURL(Browser* browser, const std::string& spec) {
   GURL url(spec);
   ui_test_utils::NavigateToURL(browser, url);
   content::WebContents* contents =
@@ -405,7 +395,7 @@
 }
 
 // Verifies that access to the given url |spec| is blocked.
-void CheckURLIsBlocked(Browser* browser, const char* spec) {
+void CheckURLIsBlocked(Browser* browser, const std::string& spec) {
   GURL url(spec);
   ui_test_utils::NavigateToURL(browser, url);
   content::WebContents* contents =
@@ -657,6 +647,7 @@
   }
 
   void SetUpOnMainThread() override {
+    host_resolver()->AddRule("*", "127.0.0.1");
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
         base::BindOnce(chrome_browser_net::SetUrlRequestMocksEnabled, true));
@@ -666,18 +657,6 @@
     }
   }
 
-  // Makes URLRequestMockHTTPJobs serve data from content::DIR_TEST_DATA
-  // instead of chrome::DIR_TEST_DATA.
-  void ServeContentTestData() {
-    base::FilePath root_http;
-    PathService::Get(content::DIR_TEST_DATA, &root_http);
-    BrowserThread::PostTaskAndReply(
-        BrowserThread::IO, FROM_HERE,
-        base::BindOnce(URLRequestMockHTTPJob::AddUrlHandlers, root_http),
-        base::MessageLoop::current()->QuitWhenIdleClosure());
-    content::RunMessageLoop();
-  }
-
   void SetScreenshotPolicy(bool enabled) {
     PolicyMap policies;
     policies.Set(key::kDisableScreenshots, POLICY_LEVEL_MANDATORY,
@@ -2360,23 +2339,15 @@
   // Checks that URLs can be blacklisted, and that exceptions can be made to
   // the blacklist.
 
-  // Filter |kURLS| on IO thread, so that requests to those hosts end up
-  // as URLRequestMockHTTPJobs.
-  const char* kURLS[] = {
-    "http://aaa.com/empty.html",
-    "http://bbb.com/empty.html",
-    "http://sub.bbb.com/empty.html",
-    "http://bbb.com/policy/blank.html",
-    "http://bbb.com./policy/blank.html",
+  ASSERT_TRUE(embedded_test_server()->Start());
+
+  const std::string kURLS[] = {
+      embedded_test_server()->GetURL("aaa.com", "/empty.html").spec(),
+      embedded_test_server()->GetURL("bbb.com", "/empty.html").spec(),
+      embedded_test_server()->GetURL("sub.bbb.com", "/empty.html").spec(),
+      embedded_test_server()->GetURL("bbb.com", "/policy/blank.html").spec(),
+      embedded_test_server()->GetURL("bbb.com.", "/policy/blank.html").spec(),
   };
-  {
-    base::RunLoop loop;
-    BrowserThread::PostTaskAndReply(
-        BrowserThread::IO, FROM_HERE,
-        base::BindOnce(RedirectHostsToTestData, kURLS, arraysize(kURLS)),
-        loop.QuitClosure());
-    loop.Run();
-  }
 
   // Verify that "bbb.com" opens before applying the blacklist.
   CheckCanOpenURL(browser(), kURLS[1]);
@@ -2406,34 +2377,13 @@
   CheckCanOpenURL(browser(), kURLS[2]);
   CheckCanOpenURL(browser(), kURLS[3]);
   CheckCanOpenURL(browser(), kURLS[4]);
-
-  {
-    base::RunLoop loop;
-    BrowserThread::PostTaskAndReply(
-        BrowserThread::IO, FROM_HERE,
-        base::BindOnce(UndoRedirectHostsToTestData, kURLS, arraysize(kURLS)),
-        loop.QuitClosure());
-    loop.Run();
-  }
 }
 
 IN_PROC_BROWSER_TEST_F(PolicyTest, URLBlacklistAndWhitelist) {
   // Regression test for http://crbug.com/755256. Blacklisting * and
   // whitelisting an origin should work.
 
-  // Filter |kURLS| on IO thread, so that requests to those hosts end up
-  // as URLRequestMockHTTPJobs.
-  const char* kURLS[] = {
-      "http://aaa.com/empty.html",
-  };
-  {
-    base::RunLoop loop;
-    BrowserThread::PostTaskAndReply(
-        BrowserThread::IO, FROM_HERE,
-        base::BindOnce(RedirectHostsToTestData, kURLS, arraysize(kURLS)),
-        loop.QuitClosure());
-    loop.Run();
-  }
+  ASSERT_TRUE(embedded_test_server()->Start());
 
   base::ListValue blacklist;
   blacklist.AppendString("*");
@@ -2447,17 +2397,21 @@
                POLICY_SOURCE_CLOUD, whitelist.CreateDeepCopy(), nullptr);
   UpdateProviderPolicy(policies);
   FlushBlacklistPolicy();
-  CheckCanOpenURL(browser(), kURLS[0]);
+  CheckCanOpenURL(
+      browser(),
+      embedded_test_server()->GetURL("aaa.com", "/empty.html").spec());
 }
 
 IN_PROC_BROWSER_TEST_F(PolicyTest, URLBlacklistSubresources) {
   // Checks that an image with a blacklisted URL is loaded, but an iframe with a
   // blacklisted URL is not.
 
+  ASSERT_TRUE(embedded_test_server()->Start());
+
   GURL main_url =
-      URLRequestMockHTTPJob::GetMockUrl("policy/blacklist-subresources.html");
-  GURL image_url = URLRequestMockHTTPJob::GetMockUrl("policy/pixel.png");
-  GURL subframe_url = URLRequestMockHTTPJob::GetMockUrl("policy/blank.html");
+      embedded_test_server()->GetURL("/policy/blacklist-subresources.html");
+  GURL image_url = embedded_test_server()->GetURL("/policy/pixel.png");
+  GURL subframe_url = embedded_test_server()->GetURL("/policy/blank.html");
 
   // Set a blacklist containing the image and the iframe which are used by the
   // main document.
@@ -2504,8 +2458,8 @@
   const std::string file_path1 = base_path + "title1.html";
   const std::string file_path2 = folder_path + "basic.html";
 
-  CheckCanOpenURL(browser(), file_path1.c_str());
-  CheckCanOpenURL(browser(), file_path2.c_str());
+  CheckCanOpenURL(browser(), file_path1);
+  CheckCanOpenURL(browser(), file_path2);
 
   // Set a blacklist for all the files.
   base::ListValue blacklist;
@@ -2516,8 +2470,8 @@
   UpdateProviderPolicy(policies);
   FlushBlacklistPolicy();
 
-  CheckURLIsBlocked(browser(), file_path1.c_str());
-  CheckURLIsBlocked(browser(), file_path2.c_str());
+  CheckURLIsBlocked(browser(), file_path1);
+  CheckURLIsBlocked(browser(), file_path2);
 
   // Replace the URLblacklist with disabling the file scheme.
   blacklist.Remove(base::Value("file://*"), NULL);
@@ -2551,8 +2505,8 @@
   UpdateProviderPolicy(policies);
   FlushBlacklistPolicy();
 
-  CheckCanOpenURL(browser(), file_path1.c_str());
-  CheckURLIsBlocked(browser(), file_path2.c_str());
+  CheckCanOpenURL(browser(), file_path1);
+  CheckURLIsBlocked(browser(), file_path2);
 }
 
 #if !defined(OS_MACOSX)
diff --git a/chrome/browser/printing/cloud_print/privet_http.h b/chrome/browser/printing/cloud_print/privet_http.h
index b59743b1..eba1b89 100644
--- a/chrome/browser/printing/cloud_print/privet_http.h
+++ b/chrome/browser/printing/cloud_print/privet_http.h
@@ -32,8 +32,8 @@
 class PrivetJSONOperation {
  public:
   // If value is null, the operation failed.
-  typedef base::Callback<void(
-      const base::DictionaryValue* /*value*/)> ResultCallback;
+  using ResultCallback =
+      base::OnceCallback<void(const base::DictionaryValue* /*value*/)>;
 
   virtual ~PrivetJSONOperation() {}
 
@@ -52,7 +52,7 @@
 
   // Creates operation to query basic information about local device.
   virtual std::unique_ptr<PrivetJSONOperation> CreateInfoOperation(
-      const PrivetJSONOperation::ResultCallback& callback) = 0;
+      PrivetJSONOperation::ResultCallback callback) = 0;
 
   // Creates a URL fetcher for PrivetV1.
   virtual std::unique_ptr<PrivetURLFetcher> CreateURLFetcher(
@@ -194,7 +194,7 @@
 
   // Creates operation to query basic information about local device.
   virtual std::unique_ptr<PrivetJSONOperation> CreateInfoOperation(
-      const PrivetJSONOperation::ResultCallback& callback) = 0;
+      PrivetJSONOperation::ResultCallback callback) = 0;
 
   // Creates operation to register local device using Privet v1 protocol.
   virtual std::unique_ptr<PrivetRegisterOperation> CreateRegisterOperation(
@@ -203,7 +203,7 @@
 
   // Creates operation to query capabilities of local printer.
   virtual std::unique_ptr<PrivetJSONOperation> CreateCapabilitiesOperation(
-      const PrivetJSONOperation::ResultCallback& callback) = 0;
+      PrivetJSONOperation::ResultCallback callback) = 0;
 
   // Creates operation to submit print job to local printer.
   virtual std::unique_ptr<PrivetLocalPrintOperation> CreateLocalPrintOperation(
diff --git a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.h b/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.h
index 14fbf2b..514cf83 100644
--- a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.h
+++ b/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory.h
@@ -22,14 +22,14 @@
 class PrivetHTTPResolution {
  public:
   using ResultCallback =
-      base::Callback<void(std::unique_ptr<PrivetHTTPClient>)>;
+      base::OnceCallback<void(std::unique_ptr<PrivetHTTPClient>)>;
 
   virtual ~PrivetHTTPResolution() {}
 
-  virtual void Start(const ResultCallback& callback) = 0;
+  virtual void Start(ResultCallback callback) = 0;
 
   virtual void Start(const net::HostPortPair& address,
-                     const ResultCallback& callback) = 0;
+                     ResultCallback callback) = 0;
 
   virtual const std::string& GetName() = 0;
 };
diff --git a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.cc b/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.cc
index 7b0a2dd5..d241d28 100644
--- a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.cc
+++ b/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.cc
@@ -42,28 +42,28 @@
 }
 
 void PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::Start(
-    const ResultCallback& callback) {
-  endpoint_resolver_->Start(name_,
-                            base::Bind(&ResolutionImpl::ResolveComplete,
-                                       base::Unretained(this), callback));
+    ResultCallback callback) {
+  endpoint_resolver_->Start(
+      name_, base::BindOnce(&ResolutionImpl::ResolveComplete,
+                            base::Unretained(this), std::move(callback)));
 }
 
 void PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::Start(
     const net::HostPortPair& address,
-    const ResultCallback& callback) {
-  endpoint_resolver_->Start(address,
-                            base::Bind(&ResolutionImpl::ResolveComplete,
-                                       base::Unretained(this), callback));
+    ResultCallback callback) {
+  endpoint_resolver_->Start(
+      address, base::BindOnce(&ResolutionImpl::ResolveComplete,
+                              base::Unretained(this), std::move(callback)));
 }
 
 void PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::ResolveComplete(
-    const ResultCallback& callback,
+    ResultCallback callback,
     const net::IPEndPoint& endpoint) {
   if (endpoint.address().empty())
-    return callback.Run(std::unique_ptr<PrivetHTTPClient>());
+    return std::move(callback).Run(std::unique_ptr<PrivetHTTPClient>());
 
   net::HostPortPair new_address = net::HostPortPair::FromIPEndPoint(endpoint);
-  callback.Run(std::unique_ptr<PrivetHTTPClient>(
+  std::move(callback).Run(std::unique_ptr<PrivetHTTPClient>(
       new PrivetHTTPClientImpl(name_, new_address, request_context_.get())));
 }
 
diff --git a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.h b/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.h
index 96c43628..7eeb656 100644
--- a/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.h
+++ b/chrome/browser/printing/cloud_print/privet_http_asynchronous_factory_impl.h
@@ -33,15 +33,15 @@
                    net::URLRequestContextGetter* request_context);
     ~ResolutionImpl() override;
 
-    void Start(const ResultCallback& callback) override;
+    void Start(ResultCallback callback) override;
 
     void Start(const net::HostPortPair& address,
-               const ResultCallback& callback) override;
+               ResultCallback callback) override;
 
     const std::string& GetName() override;
 
    private:
-    void ResolveComplete(const ResultCallback& callback,
+    void ResolveComplete(ResultCallback callback,
                          const net::IPEndPoint& endpoint);
     std::string name_;
     scoped_refptr<net::URLRequestContextGetter> request_context_;
diff --git a/chrome/browser/printing/cloud_print/privet_http_impl.cc b/chrome/browser/printing/cloud_print/privet_http_impl.cc
index af787315..df73fd3d 100644
--- a/chrome/browser/printing/cloud_print/privet_http_impl.cc
+++ b/chrome/browser/printing/cloud_print/privet_http_impl.cc
@@ -95,9 +95,8 @@
 
 PrivetInfoOperationImpl::PrivetInfoOperationImpl(
     PrivetHTTPClient* privet_client,
-    const PrivetJSONOperation::ResultCallback& callback)
-    : privet_client_(privet_client), callback_(callback) {
-}
+    PrivetJSONOperation::ResultCallback callback)
+    : privet_client_(privet_client), callback_(std::move(callback)) {}
 
 PrivetInfoOperationImpl::~PrivetInfoOperationImpl() {
 }
@@ -118,13 +117,13 @@
 
 void PrivetInfoOperationImpl::OnError(PrivetURLFetcher* fetcher,
                                       PrivetURLFetcher::ErrorType error) {
-  callback_.Run(NULL);
+  std::move(callback_).Run(nullptr);
 }
 
 void PrivetInfoOperationImpl::OnParsedJson(PrivetURLFetcher* fetcher,
                                            const base::DictionaryValue& value,
                                            bool has_error) {
-  callback_.Run(&value);
+  std::move(callback_).Run(&value);
 }
 
 PrivetRegisterOperationImpl::PrivetRegisterOperationImpl(
@@ -193,11 +192,8 @@
     reason = FAILURE_UNKNOWN;
   }
 
-  delegate_->OnPrivetRegisterError(this,
-                                   current_action_,
-                                   reason,
-                                   visible_http_code,
-                                   NULL);
+  delegate_->OnPrivetRegisterError(this, current_action_, reason,
+                                   visible_http_code, nullptr);
 }
 
 void PrivetRegisterOperationImpl::OnParsedJson(
@@ -254,11 +250,8 @@
   if (got_url || got_token) {
     delegate_->OnPrivetRegisterClaimToken(this, claimToken, GURL(claimUrl));
   } else {
-    delegate_->OnPrivetRegisterError(this,
-                                     current_action_,
-                                     FAILURE_MALFORMED_RESPONSE,
-                                     -1,
-                                     NULL);
+    delegate_->OnPrivetRegisterError(this, current_action_,
+                                     FAILURE_MALFORMED_RESPONSE, -1, nullptr);
   }
 }
 
@@ -276,11 +269,8 @@
   // TODO(noamsml): Simplify error case and depracate HTTP error value in
   // OnPrivetRegisterError.
   if (!value) {
-    delegate_->OnPrivetRegisterError(this,
-                                     kPrivetActionNameInfo,
-                                     FAILURE_NETWORK,
-                                     -1,
-                                     NULL);
+    delegate_->OnPrivetRegisterError(this, kPrivetActionNameInfo,
+                                     FAILURE_NETWORK, -1, nullptr);
     return;
   }
 
@@ -292,11 +282,8 @@
                                        -1,
                                        value);
     } else {
-      delegate_->OnPrivetRegisterError(this,
-                                       kPrivetActionNameInfo,
-                                       FAILURE_MALFORMED_RESPONSE,
-                                       -1,
-                                       NULL);
+      delegate_->OnPrivetRegisterError(this, kPrivetActionNameInfo,
+                                       FAILURE_MALFORMED_RESPONSE, -1, nullptr);
     }
     return;
   }
@@ -305,11 +292,8 @@
 
   if (!value->GetString(kPrivetInfoKeyID, &id) ||
       id != expected_id_) {
-    delegate_->OnPrivetRegisterError(this,
-                                     kPrivetActionNameInfo,
-                                     FAILURE_MALFORMED_RESPONSE,
-                                     -1,
-                                     NULL);
+    delegate_->OnPrivetRegisterError(this, kPrivetActionNameInfo,
+                                     FAILURE_MALFORMED_RESPONSE, -1, nullptr);
   } else {
     delegate_->OnPrivetRegisterDone(this, id);
   }
@@ -357,12 +341,11 @@
     PrivetHTTPClient* privet_client,
     const std::string& path,
     const std::string& query_params,
-    const PrivetJSONOperation::ResultCallback& callback)
+    PrivetJSONOperation::ResultCallback callback)
     : privet_client_(privet_client),
       path_(path),
       query_params_(query_params),
-      callback_(callback) {
-}
+      callback_(std::move(callback)) {}
 
 PrivetJSONOperationImpl::~PrivetJSONOperationImpl() {
 }
@@ -381,13 +364,13 @@
 void PrivetJSONOperationImpl::OnError(
     PrivetURLFetcher* fetcher,
     PrivetURLFetcher::ErrorType error) {
-  callback_.Run(NULL);
+  std::move(callback_).Run(nullptr);
 }
 
 void PrivetJSONOperationImpl::OnParsedJson(PrivetURLFetcher* fetcher,
                                            const base::DictionaryValue& value,
                                            bool has_error) {
-  callback_.Run(&value);
+  std::move(callback_).Run(&value);
 }
 
 void PrivetJSONOperationImpl::OnNeedPrivetToken(
@@ -714,8 +697,8 @@
 }
 
 std::unique_ptr<PrivetJSONOperation> PrivetHTTPClientImpl::CreateInfoOperation(
-    const PrivetJSONOperation::ResultCallback& callback) {
-  return base::MakeUnique<PrivetInfoOperationImpl>(this, callback);
+    PrivetJSONOperation::ResultCallback callback) {
+  return base::MakeUnique<PrivetInfoOperationImpl>(this, std::move(callback));
 }
 
 std::unique_ptr<PrivetURLFetcher> PrivetHTTPClientImpl::CreateURLFetcher(
@@ -803,8 +786,8 @@
 
 std::unique_ptr<PrivetJSONOperation>
 PrivetV1HTTPClientImpl::CreateInfoOperation(
-    const PrivetJSONOperation::ResultCallback& callback) {
-  return info_client()->CreateInfoOperation(callback);
+    PrivetJSONOperation::ResultCallback callback) {
+  return info_client()->CreateInfoOperation(std::move(callback));
 }
 
 std::unique_ptr<PrivetRegisterOperation>
@@ -817,9 +800,9 @@
 
 std::unique_ptr<PrivetJSONOperation>
 PrivetV1HTTPClientImpl::CreateCapabilitiesOperation(
-    const PrivetJSONOperation::ResultCallback& callback) {
+    PrivetJSONOperation::ResultCallback callback) {
   return base::MakeUnique<PrivetJSONOperationImpl>(
-      info_client(), kPrivetCapabilitiesPath, "", callback);
+      info_client(), kPrivetCapabilitiesPath, "", std::move(callback));
 }
 
 std::unique_ptr<PrivetLocalPrintOperation>
diff --git a/chrome/browser/printing/cloud_print/privet_http_impl.h b/chrome/browser/printing/cloud_print/privet_http_impl.h
index d1051c6..a6684fc 100644
--- a/chrome/browser/printing/cloud_print/privet_http_impl.h
+++ b/chrome/browser/printing/cloud_print/privet_http_impl.h
@@ -27,7 +27,7 @@
                                 public PrivetURLFetcher::Delegate {
  public:
   PrivetInfoOperationImpl(PrivetHTTPClient* privet_client,
-                          const PrivetJSONOperation::ResultCallback& callback);
+                          PrivetJSONOperation::ResultCallback callback);
   ~PrivetInfoOperationImpl() override;
 
   void Start() override;
@@ -125,7 +125,7 @@
   PrivetJSONOperationImpl(PrivetHTTPClient* privet_client,
                           const std::string& path,
                           const std::string& query_params,
-                          const PrivetJSONOperation::ResultCallback& callback);
+                          PrivetJSONOperation::ResultCallback callback);
   ~PrivetJSONOperationImpl() override;
   void Start() override;
 
@@ -250,7 +250,7 @@
   // PrivetHTTPClient implementation.
   const std::string& GetName() override;
   std::unique_ptr<PrivetJSONOperation> CreateInfoOperation(
-      const PrivetJSONOperation::ResultCallback& callback) override;
+      PrivetJSONOperation::ResultCallback callback) override;
   std::unique_ptr<PrivetURLFetcher> CreateURLFetcher(
       const GURL& url,
       net::URLFetcher::RequestType request_type,
@@ -281,12 +281,12 @@
 
   const std::string& GetName() override;
   std::unique_ptr<PrivetJSONOperation> CreateInfoOperation(
-      const PrivetJSONOperation::ResultCallback& callback) override;
+      PrivetJSONOperation::ResultCallback callback) override;
   std::unique_ptr<PrivetRegisterOperation> CreateRegisterOperation(
       const std::string& user,
       PrivetRegisterOperation::Delegate* delegate) override;
   std::unique_ptr<PrivetJSONOperation> CreateCapabilitiesOperation(
-      const PrivetJSONOperation::ResultCallback& callback) override;
+      PrivetJSONOperation::ResultCallback callback) override;
   std::unique_ptr<PrivetLocalPrintOperation> CreateLocalPrintOperation(
       PrivetLocalPrintOperation::Delegate* delegate) override;
 
diff --git a/chrome/browser/printing/cloud_print/privet_http_unittest.cc b/chrome/browser/printing/cloud_print/privet_http_unittest.cc
index 46cb19e7..5f1b1ee 100644
--- a/chrome/browser/printing/cloud_print/privet_http_unittest.cc
+++ b/chrome/browser/printing/cloud_print/privet_http_unittest.cc
@@ -380,8 +380,8 @@
 
   const base::DictionaryValue* value() { return value_.get(); }
   PrivetJSONOperation::ResultCallback callback() {
-    return base::Bind(&MockJSONCallback::OnPrivetJSONDone,
-                      base::Unretained(this));
+    return base::BindOnce(&MockJSONCallback::OnPrivetJSONDone,
+                          base::Unretained(this));
   }
  protected:
   std::unique_ptr<base::DictionaryValue> value_;
@@ -744,10 +744,11 @@
   void Start(base::RefCountedMemory* data,
              const printing::PdfRenderSettings& conversion_settings,
              const printing::PwgRasterSettings& bitmap_settings,
-             const ResultCallback& callback) override {
+             ResultCallback callback) override {
     bitmap_settings_ = bitmap_settings;
     std::string data_str(data->front_as<char>(), data->size());
-    callback.Run(true, base::FilePath().AppendASCII(data_str + "test.pdf"));
+    std::move(callback).Run(
+        true, base::FilePath().AppendASCII(data_str + "test.pdf"));
   }
 
   const printing::PwgRasterSettings& bitmap_settings() {
diff --git a/chrome/browser/printing/cloud_print/privet_notifications_unittest.cc b/chrome/browser/printing/cloud_print/privet_notifications_unittest.cc
index 666056e..72ec2aec 100644
--- a/chrome/browser/printing/cloud_print/privet_notifications_unittest.cc
+++ b/chrome/browser/printing/cloud_print/privet_notifications_unittest.cc
@@ -58,13 +58,14 @@
     ~MockResolution() override {}
 
     void Start(const net::HostPortPair& address,
-               const ResultCallback& callback) override {
-      callback.Run(std::unique_ptr<PrivetHTTPClient>(new PrivetHTTPClientImpl(
-          name_, net::HostPortPair("1.2.3.4", 8080), request_context_.get())));
+               ResultCallback callback) override {
+      std::move(callback).Run(std::unique_ptr<PrivetHTTPClient>(
+          new PrivetHTTPClientImpl(name_, net::HostPortPair("1.2.3.4", 8080),
+                                   request_context_.get())));
     }
 
-    void Start(const ResultCallback& callback) override {
-      Start(net::HostPortPair(), callback);
+    void Start(ResultCallback callback) override {
+      Start(net::HostPortPair(), std::move(callback));
     }
 
     const std::string& GetName() override { return name_; }
diff --git a/chrome/browser/printing/pwg_raster_converter.cc b/chrome/browser/printing/pwg_raster_converter.cc
index ff99c35..ccb8c46 100644
--- a/chrome/browser/printing/pwg_raster_converter.cc
+++ b/chrome/browser/printing/pwg_raster_converter.cc
@@ -120,7 +120,7 @@
                            const PwgRasterSettings& bitmap_settings);
 
   void Convert(base::RefCountedMemory* data,
-               const PWGRasterConverter::ResultCallback& callback);
+               PWGRasterConverter::ResultCallback callback);
 
  private:
   friend class base::RefCountedThreadSafe<PWGRasterConverterHelper>;
@@ -156,10 +156,10 @@
 
 void PWGRasterConverterHelper::Convert(
     base::RefCountedMemory* data,
-    const PWGRasterConverter::ResultCallback& callback) {
+    PWGRasterConverter::ResultCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
-  callback_ = callback;
+  callback_ = std::move(callback);
   CHECK(!files_);
   files_.reset(new FileHandlers());
 
@@ -206,17 +206,21 @@
   void Start(base::RefCountedMemory* data,
              const PdfRenderSettings& conversion_settings,
              const PwgRasterSettings& bitmap_settings,
-             const ResultCallback& callback) override;
+             ResultCallback callback) override;
 
  private:
+  // TODO (rbpotter): Once CancelableOnceCallback is added, remove this and
+  // change callback_ to a CancelableOnceCallback.
+  void RunCallback(bool success, const base::FilePath& temp_file);
+
   scoped_refptr<PWGRasterConverterHelper> utility_client_;
-  base::CancelableCallback<ResultCallback::RunType> callback_;
+  ResultCallback callback_;
+  base::WeakPtrFactory<PWGRasterConverterImpl> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(PWGRasterConverterImpl);
 };
 
-PWGRasterConverterImpl::PWGRasterConverterImpl() {
-}
+PWGRasterConverterImpl::PWGRasterConverterImpl() : weak_ptr_factory_(this) {}
 
 PWGRasterConverterImpl::~PWGRasterConverterImpl() {
 }
@@ -224,13 +228,20 @@
 void PWGRasterConverterImpl::Start(base::RefCountedMemory* data,
                                    const PdfRenderSettings& conversion_settings,
                                    const PwgRasterSettings& bitmap_settings,
-                                   const ResultCallback& callback) {
-  // Rebind cancelable callback to avoid calling callback if
-  // PWGRasterConverterImpl is destroyed.
-  callback_.Reset(callback);
+                                   ResultCallback callback) {
+  // Bind callback here and pass a wrapper to the utility client to avoid
+  // calling callback if PWGRasterConverterImpl is destroyed.
+  callback_ = std::move(callback);
   utility_client_ = base::MakeRefCounted<PWGRasterConverterHelper>(
       conversion_settings, bitmap_settings);
-  utility_client_->Convert(data, callback_.callback());
+  utility_client_->Convert(data,
+                           base::BindOnce(&PWGRasterConverterImpl::RunCallback,
+                                          weak_ptr_factory_.GetWeakPtr()));
+}
+
+void PWGRasterConverterImpl::RunCallback(bool success,
+                                         const base::FilePath& temp_file) {
+  std::move(callback_).Run(success, temp_file);
 }
 
 }  // namespace
diff --git a/chrome/browser/printing/pwg_raster_converter.h b/chrome/browser/printing/pwg_raster_converter.h
index f36cf0d0..b7e1af71 100644
--- a/chrome/browser/printing/pwg_raster_converter.h
+++ b/chrome/browser/printing/pwg_raster_converter.h
@@ -34,8 +34,8 @@
   // |temp_file| is the path to the temp file (owned by the converter) that
   //     contains the PWG raster data.
   using ResultCallback =
-      base::Callback<void(bool /*success*/,
-                          const base::FilePath& /*temp_file*/)>;
+      base::OnceCallback<void(bool /*success*/,
+                              const base::FilePath& /*temp_file*/)>;
 
   virtual ~PWGRasterConverter() {}
 
@@ -57,7 +57,7 @@
   virtual void Start(base::RefCountedMemory* data,
                      const PdfRenderSettings& conversion_settings,
                      const PwgRasterSettings& bitmap_settings,
-                     const ResultCallback& callback) = 0;
+                     ResultCallback callback) = 0;
 };
 
 }  // namespace printing
diff --git a/chrome/browser/profiles/profile_impl_io_data.cc b/chrome/browser/profiles/profile_impl_io_data.cc
index a8be871..9145c17 100644
--- a/chrome/browser/profiles/profile_impl_io_data.cc
+++ b/chrome/browser/profiles/profile_impl_io_data.cc
@@ -379,15 +379,11 @@
 
 ProfileImplIOData::ProfileImplIOData()
     : ProfileIOData(Profile::REGULAR_PROFILE),
-      domain_reliability_monitor_(nullptr),
       app_cache_max_size_(0),
       app_media_cache_max_size_(0) {
 }
 
 ProfileImplIOData::~ProfileImplIOData() {
-  if (domain_reliability_monitor_)
-    domain_reliability_monitor_->Shutdown();
-
   DestroyResourceContext();
 
   if (media_request_context_)
@@ -399,15 +395,6 @@
     IOThread* io_thread,
     std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate) const {
   if (lazy_params_->domain_reliability_monitor) {
-    // Hold on to a raw pointer to call Shutdown() in ~ProfileImplIOData.
-    domain_reliability_monitor_ =
-        lazy_params_->domain_reliability_monitor.get();
-
-    domain_reliability_monitor_->InitURLRequestContext(main_request_context());
-    domain_reliability_monitor_->AddBakedInConfigs();
-    domain_reliability_monitor_->SetDiscardUploads(
-        !GetMetricsEnabledStateOnIOThread());
-
     chrome_network_delegate->set_domain_reliability_monitor(
         std::move(lazy_params_->domain_reliability_monitor));
   }
diff --git a/chrome/browser/profiles/profile_impl_io_data.h b/chrome/browser/profiles/profile_impl_io_data.h
index 8cdb6e77..78ec6453 100644
--- a/chrome/browser/profiles/profile_impl_io_data.h
+++ b/chrome/browser/profiles/profile_impl_io_data.h
@@ -202,10 +202,6 @@
 
   mutable std::unique_ptr<net::URLRequestContext> media_request_context_;
 
-  // Owned by ChromeNetworkDelegate (which is owned by |network_delegate_|).
-  mutable domain_reliability::DomainReliabilityMonitor*
-      domain_reliability_monitor_;
-
   // Parameters needed for isolated apps.
   base::FilePath profile_path_;
   int app_cache_max_size_;
diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
index cfd221a..0afb0b13 100644
--- a/chrome/browser/profiles/profile_io_data.cc
+++ b/chrome/browser/profiles/profile_io_data.cc
@@ -63,6 +63,7 @@
 #include "components/cookie_config/cookie_store_util.h"
 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.h"
 #include "components/dom_distiller/core/url_constants.h"
+#include "components/domain_reliability/monitor.h"
 #include "components/metrics/metrics_pref_names.h"
 #include "components/metrics/metrics_service.h"
 #include "components/net_log/chrome_net_log.h"
@@ -623,6 +624,7 @@
 #endif
       main_request_context_(nullptr),
       resource_context_(new ResourceContext(this)),
+      domain_reliability_monitor_unowned_(nullptr),
       profile_type_(profile_type) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 }
@@ -673,6 +675,9 @@
            static_cast<void*>(it->second), sizeof(void*));
   }
 
+  if (domain_reliability_monitor_unowned_)
+    domain_reliability_monitor_unowned_->Shutdown();
+
   if (main_request_context_) {
     // Prevent the TreeStateTracker from getting any more notifications by
     // severing the link between it and the CTVerifier and unregistering it from
@@ -1050,6 +1055,9 @@
   chrome_network_delegate->set_data_use_aggregator(
       io_thread_globals->data_use_aggregator.get(), IsOffTheRecord());
 
+  ChromeNetworkDelegate* chrome_network_delegate_unowned =
+      chrome_network_delegate.get();
+
   std::unique_ptr<net::NetworkDelegate> network_delegate =
       ConfigureNetworkDelegate(profile_params_->io_thread,
                                std::move(chrome_network_delegate));
@@ -1155,6 +1163,19 @@
           std::move(profile_params_->main_network_context_params),
           std::move(builder), &main_request_context_);
 
+  if (chrome_network_delegate_unowned->domain_reliability_monitor()) {
+    // Save a pointer to shut down Domain Reliability cleanly before the
+    // URLRequestContext is dismantled.
+    domain_reliability_monitor_unowned_ =
+        chrome_network_delegate_unowned->domain_reliability_monitor();
+
+    domain_reliability_monitor_unowned_->InitURLRequestContext(
+        main_request_context_);
+    domain_reliability_monitor_unowned_->AddBakedInConfigs();
+    domain_reliability_monitor_unowned_->SetDiscardUploads(
+        !GetMetricsEnabledStateOnIOThread());
+  }
+
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   extension_cookie_notifier_ =
       std::move(profile_params_->extension_cookie_notifier);
diff --git a/chrome/browser/profiles/profile_io_data.h b/chrome/browser/profiles/profile_io_data.h
index 5f4d183..9eb9a0d 100644
--- a/chrome/browser/profiles/profile_io_data.h
+++ b/chrome/browser/profiles/profile_io_data.h
@@ -67,6 +67,10 @@
 class DataReductionProxyIOData;
 }
 
+namespace domain_reliability {
+class DomainReliabilityMonitor;
+}
+
 namespace extensions {
 class ExtensionThrottleManager;
 class InfoMap;
@@ -623,6 +627,12 @@
       ct_tree_tracker_;
   mutable base::Closure ct_tree_tracker_unregistration_;
 
+  // Owned by the ChromeNetworkDelegate, which is owned (possibly with one or
+  // more layers of LayeredNetworkDelegate) by the URLRequestContext, which is
+  // owned by main_network_context_.
+  mutable domain_reliability::DomainReliabilityMonitor*
+      domain_reliability_monitor_unowned_;
+
   const Profile::ProfileType profile_type_;
 
   DISALLOW_COPY_AND_ASSIGN(ProfileIOData);
diff --git a/chrome/browser/profiling_host/profiling_process_host.cc b/chrome/browser/profiling_host/profiling_process_host.cc
index 256dda1..4ed3b8013 100644
--- a/chrome/browser/profiling_host/profiling_process_host.cc
+++ b/chrome/browser/profiling_host/profiling_process_host.cc
@@ -148,7 +148,7 @@
   TraceCrashServiceUploader* uploader = new TraceCrashServiceUploader(
       g_browser_process->system_request_context());
 
-  uploader->DoUpload(file_contents, content::TraceUploader::UNCOMPRESSED_UPLOAD,
+  uploader->DoUpload(file_contents, content::TraceUploader::COMPRESSED_UPLOAD,
                      std::move(metadata),
                      content::TraceUploader::UploadProgressCallback(),
                      base::Bind(&OnTraceUploadComplete, base::Owned(uploader)));
diff --git a/chrome/browser/task_manager/sampling/shared_sampler.h b/chrome/browser/task_manager/sampling/shared_sampler.h
index 217d103..e651195 100644
--- a/chrome/browser/task_manager/sampling/shared_sampler.h
+++ b/chrome/browser/task_manager/sampling/shared_sampler.h
@@ -14,6 +14,7 @@
 #include "base/files/file_path.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/optional.h"
 #include "base/process/process_handle.h"
 #include "base/sequence_checker.h"
 #include "base/sequenced_task_runner.h"
@@ -37,29 +38,26 @@
   explicit SharedSampler(
       const scoped_refptr<base::SequencedTaskRunner>& blocking_pool_runner);
 
-  // Below are the types of callbacks that are invoked on the UI thread
-  // when the refresh is done on the worker thread.
-  // These callbacks are passed via RegisterCallbacks.
-  using OnIdleWakeupsCallback = base::Callback<void(int)>;
-  using OnPhysicalMemoryCallback = base::Callback<void(int64_t)>;
-  using OnStartTimeCallback = base::Callback<void(base::Time)>;
-  using OnCpuTimeCallback = base::Callback<void(base::TimeDelta)>;
+  struct SamplingResult {
+    int idle_wakeups_per_second;
+    int64_t physical_bytes;
+    base::Time start_time;
+    base::TimeDelta cpu_time;
+  };
+  using OnSamplingCompleteCallback =
+      base::Callback<void(base::Optional<SamplingResult>)>;
 
   // Returns a combination of refresh flags supported by the shared sampler.
   int64_t GetSupportedFlags() const;
 
   // Registers task group specific callbacks.
-  void RegisterCallbacks(base::ProcessId process_id,
-                         const OnIdleWakeupsCallback& on_idle_wakeups,
-                         const OnPhysicalMemoryCallback& on_physical_memory,
-                         const OnStartTimeCallback& on_start_time,
-                         const OnCpuTimeCallback& on_cpu_time);
+  void RegisterCallback(base::ProcessId process_id,
+                        OnSamplingCompleteCallback on_sampling_complete);
 
   // Unregisters task group specific callbacks.
-  void UnregisterCallbacks(base::ProcessId process_id);
+  void UnregisterCallback(base::ProcessId process_id);
 
-  // Refreshes the expensive process' stats (for now only idle wakeups per
-  // second) on the worker thread.
+  // Triggers a refresh of the expensive process' stats, on the worker thread.
   void Refresh(base::ProcessId process_id, int64_t refresh_flags);
 
 #if defined(OS_WIN)
@@ -74,41 +72,21 @@
   friend class base::RefCountedThreadSafe<SharedSampler>;
   ~SharedSampler();
 
+  typedef std::map<base::ProcessId, OnSamplingCompleteCallback> CallbacksMap;
+
 #if defined(OS_WIN)
-  // The UI-thread callbacks in TaskGroup registered with RegisterCallbacks and
-  // to be called when refresh on the worker thread is done.
-  struct Callbacks {
-    Callbacks();
-    Callbacks(Callbacks&& other);
-    ~Callbacks();
-
-    OnIdleWakeupsCallback on_idle_wakeups;
-    OnPhysicalMemoryCallback on_physical_memory;
-    OnStartTimeCallback on_start_time;
-    OnCpuTimeCallback on_cpu_time;
-
-   private:
-    DISALLOW_COPY_AND_ASSIGN(Callbacks);
-  };
-
-  typedef std::map<base::ProcessId, Callbacks> CallbacksMap;
-
   // Contains all results of refresh for a single process.
-  struct RefreshResult {
+  struct ProcessIdAndSamplingResult {
     base::ProcessId process_id;
-    int idle_wakeups_per_second;
-    int64_t physical_bytes;
-    base::Time start_time;
-    base::TimeDelta cpu_time;
+    SamplingResult data;
   };
-
-  typedef std::vector<RefreshResult> RefreshResults;
+  typedef std::vector<ProcessIdAndSamplingResult> AllSamplingResults;
 
   // Posted on the worker thread to do the actual refresh.
-  std::unique_ptr<RefreshResults> RefreshOnWorkerThread();
+  AllSamplingResults RefreshOnWorkerThread();
 
   // Called on UI thread when the refresh is done.
-  void OnRefreshDone(std::unique_ptr<RefreshResults> refresh_results);
+  void OnRefreshDone(AllSamplingResults sampling_results);
 
   // Clear cached data.
   void ClearState();
@@ -122,16 +100,14 @@
   std::unique_ptr<ProcessDataSnapshot> CaptureSnapshot();
 
   // Produce refresh results by diffing two snapshots.
-  static void MakeResultsFromTwoSnapshots(
+  static AllSamplingResults MakeResultsFromTwoSnapshots(
       const ProcessDataSnapshot& prev_snapshot,
-      const ProcessDataSnapshot& snapshot,
-      RefreshResults* results);
+      const ProcessDataSnapshot& snapshot);
 
   // Produce refresh results from one snapshot.
   // This is used only the first time when only one snapshot is available.
-  static void MakeResultsFromSnapshot(
-      const ProcessDataSnapshot& snapshot,
-      RefreshResults* results);
+  static AllSamplingResults MakeResultsFromSnapshot(
+      const ProcessDataSnapshot& snapshot);
 
   // Accumulates callbacks passed from TaskGroup objects passed via
   // RegisterCallbacks calls.
diff --git a/chrome/browser/task_manager/sampling/shared_sampler_posix.cc b/chrome/browser/task_manager/sampling/shared_sampler_posix.cc
index ac62fce..c5e5d60 100644
--- a/chrome/browser/task_manager/sampling/shared_sampler_posix.cc
+++ b/chrome/browser/task_manager/sampling/shared_sampler_posix.cc
@@ -15,14 +15,11 @@
 
 int64_t SharedSampler::GetSupportedFlags() const { return 0; }
 
-void SharedSampler::RegisterCallbacks(
+void SharedSampler::RegisterCallback(
     base::ProcessId process_id,
-    const OnIdleWakeupsCallback& on_idle_wakeups,
-    const OnPhysicalMemoryCallback& on_physical_memory,
-    const OnStartTimeCallback& on_start_time,
-    const OnCpuTimeCallback& on_cpu_time) {}
+    OnSamplingCompleteCallback on_sampling_complete) {}
 
-void SharedSampler::UnregisterCallbacks(base::ProcessId process_id) {}
+void SharedSampler::UnregisterCallback(base::ProcessId process_id) {}
 
 void SharedSampler::Refresh(base::ProcessId process_id,
                              int64_t refresh_flags) {}
diff --git a/chrome/browser/task_manager/sampling/shared_sampler_win.cc b/chrome/browser/task_manager/sampling/shared_sampler_win.cc
index fb880719..ff7695d 100644
--- a/chrome/browser/task_manager/sampling/shared_sampler_win.cc
+++ b/chrome/browser/task_manager/sampling/shared_sampler_win.cc
@@ -252,39 +252,21 @@
          REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME;
 }
 
-SharedSampler::Callbacks::Callbacks() {}
-
-SharedSampler::Callbacks::~Callbacks() {}
-
-SharedSampler::Callbacks::Callbacks(Callbacks&& other) {
-  on_idle_wakeups = std::move(other.on_idle_wakeups);
-  on_physical_memory = std::move(other.on_physical_memory);
-  on_start_time = std::move(other.on_start_time);
-  on_cpu_time = std::move(other.on_cpu_time);
-}
-
-void SharedSampler::RegisterCallbacks(
+void SharedSampler::RegisterCallback(
     base::ProcessId process_id,
-    const OnIdleWakeupsCallback& on_idle_wakeups,
-    const OnPhysicalMemoryCallback& on_physical_memory,
-    const OnStartTimeCallback& on_start_time,
-    const OnCpuTimeCallback& on_cpu_time) {
+    OnSamplingCompleteCallback on_sampling_complete) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   if (process_id == 0)
     return;
 
-  Callbacks callbacks;
-  callbacks.on_idle_wakeups = on_idle_wakeups;
-  callbacks.on_physical_memory = on_physical_memory;
-  callbacks.on_start_time = on_start_time;
-  callbacks.on_cpu_time = on_cpu_time;
-  bool result = callbacks_map_.insert(
-      std::make_pair(process_id, std::move(callbacks))).second;
+  bool result =
+      callbacks_map_.emplace(process_id, std::move(on_sampling_complete))
+          .second;
   DCHECK(result);
 }
 
-void SharedSampler::UnregisterCallbacks(base::ProcessId process_id) {
+void SharedSampler::UnregisterCallback(base::ProcessId process_id) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   if (process_id == 0)
@@ -329,19 +311,17 @@
   previous_snapshot_.reset();
 }
 
-std::unique_ptr<SharedSampler::RefreshResults>
-SharedSampler::RefreshOnWorkerThread() {
+SharedSampler::AllSamplingResults SharedSampler::RefreshOnWorkerThread() {
   DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence());
 
-  std::unique_ptr<RefreshResults> results(new RefreshResults);
+  AllSamplingResults results;
 
   std::unique_ptr<ProcessDataSnapshot> snapshot = CaptureSnapshot();
   if (snapshot) {
     if (previous_snapshot_) {
-      MakeResultsFromTwoSnapshots(
-          *previous_snapshot_, *snapshot, results.get());
+      results = MakeResultsFromTwoSnapshots(*previous_snapshot_, *snapshot);
     } else {
-      MakeResultsFromSnapshot(*snapshot, results.get());
+      results = MakeResultsFromSnapshot(*snapshot);
     }
 
     previous_snapshot_ = std::move(snapshot);
@@ -477,10 +457,9 @@
   return snapshot;
 }
 
-void SharedSampler::MakeResultsFromTwoSnapshots(
+SharedSampler::AllSamplingResults SharedSampler::MakeResultsFromTwoSnapshots(
     const ProcessDataSnapshot& prev_snapshot,
-    const ProcessDataSnapshot& snapshot,
-    RefreshResults* results) {
+    const ProcessDataSnapshot& snapshot) {
   // Time delta in seconds.
   double time_delta = (snapshot.timestamp - prev_snapshot.timestamp)
       .InSecondsF();
@@ -489,6 +468,8 @@
   // on map entries being ordered by Process ID.
   ProcessDataMap::const_iterator prev_iter = prev_snapshot.processes.begin();
 
+  AllSamplingResults results;
+  results.reserve(snapshot.processes.size());
   for (const auto& current_entry : snapshot.processes) {
     base::ProcessId process_id = current_entry.first;
     const ProcessData& process = current_entry.second;
@@ -509,34 +490,38 @@
       idle_wakeups_delta = CountContextSwitchesDelta(ProcessData(), process);
     }
 
-    RefreshResult result;
+    ProcessIdAndSamplingResult result;
     result.process_id = process_id;
-    result.idle_wakeups_per_second =
+    result.data.idle_wakeups_per_second =
         static_cast<int>(round(idle_wakeups_delta / time_delta));
-    result.physical_bytes = process.physical_bytes;
-    result.start_time = process.start_time;
-    result.cpu_time = process.cpu_time;
-    results->push_back(result);
+    result.data.physical_bytes = process.physical_bytes;
+    result.data.start_time = process.start_time;
+    result.data.cpu_time = process.cpu_time;
+    results.push_back(result);
   }
+
+  return results;
 }
 
-void SharedSampler::MakeResultsFromSnapshot(const ProcessDataSnapshot& snapshot,
-                                            RefreshResults* results) {
+SharedSampler::AllSamplingResults SharedSampler::MakeResultsFromSnapshot(
+    const ProcessDataSnapshot& snapshot) {
+  AllSamplingResults results;
+  results.reserve(snapshot.processes.size());
   for (const auto& pair : snapshot.processes) {
-    RefreshResult result;
+    ProcessIdAndSamplingResult result;
     result.process_id = pair.first;
     // Use 0 for Idle Wakeups / sec in this case. This is consistent with
     // ProcessMetrics::CalculateIdleWakeupsPerSecond implementation.
-    result.idle_wakeups_per_second = 0;
-    result.physical_bytes = pair.second.physical_bytes;
-    result.start_time = pair.second.start_time;
-    result.cpu_time = pair.second.cpu_time;
-    results->push_back(result);
+    result.data.idle_wakeups_per_second = 0;
+    result.data.physical_bytes = pair.second.physical_bytes;
+    result.data.start_time = pair.second.start_time;
+    result.data.cpu_time = pair.second.cpu_time;
+    results.push_back(result);
   }
+  return results;
 }
 
-void SharedSampler::OnRefreshDone(
-    std::unique_ptr<RefreshResults> refresh_results) {
+void SharedSampler::OnRefreshDone(AllSamplingResults refresh_results) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   DCHECK_NE(0, refresh_flags_);
 
@@ -544,12 +529,7 @@
 
   for (const auto& callback_entry : callbacks_map_) {
     base::ProcessId process_id = callback_entry.first;
-    // A sentinel value of -1 is used when the result isn't available.
-    // Task manager will use this to display '-'.
-    int idle_wakeups_per_second = -1;
-    int64_t physical_bytes = -1;
-    base::Time start_time;
-    base::TimeDelta cpu_time;
+    SamplingResult process_result;
 
     // Match refresh result by |process_id|.
     // This relies on refresh results being ordered by Process ID.
@@ -558,14 +538,11 @@
     // Chrome. It might be missing some entries too if there is a race condition
     // between getting process information on the worker thread and adding a
     // corresponding TaskGroup to the task manager.
-    for (; result_index < refresh_results->size(); ++result_index) {
-      const auto& result = (*refresh_results)[result_index];
+    for (; result_index < refresh_results.size(); ++result_index) {
+      const auto& result = refresh_results[result_index];
       if (result.process_id == process_id) {
         // Data matched in |refresh_results|.
-        idle_wakeups_per_second = result.idle_wakeups_per_second;
-        physical_bytes = result.physical_bytes;
-        start_time = result.start_time;
-        cpu_time = result.cpu_time;
+        process_result = std::move(result.data);
         ++result_index;
         break;
       }
@@ -576,29 +553,7 @@
       }
     }
 
-    if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_IDLE_WAKEUPS,
-                                                      refresh_flags_)) {
-      DCHECK(callback_entry.second.on_idle_wakeups);
-      callback_entry.second.on_idle_wakeups.Run(idle_wakeups_per_second);
-    }
-
-    if (TaskManagerObserver::IsResourceRefreshEnabled(
-            REFRESH_TYPE_PHYSICAL_MEMORY, refresh_flags_)) {
-      DCHECK(callback_entry.second.on_physical_memory);
-      callback_entry.second.on_physical_memory.Run(physical_bytes);
-    }
-
-    if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_START_TIME,
-                                                      refresh_flags_)) {
-      DCHECK(callback_entry.second.on_start_time);
-      callback_entry.second.on_start_time.Run(start_time);
-    }
-
-    if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_CPU_TIME,
-                                                      refresh_flags_)) {
-      DCHECK(callback_entry.second.on_cpu_time);
-      callback_entry.second.on_cpu_time.Run(cpu_time);
-    }
+    callback_entry.second.Run(std::move(process_result));
   }
 
   // Reset refresh_results_ to trigger RefreshOnWorkerThread next time Refresh
diff --git a/chrome/browser/task_manager/sampling/shared_sampler_win_unittest.cc b/chrome/browser/task_manager/sampling/shared_sampler_win_unittest.cc
index 60932a3..0fe02bb 100644
--- a/chrome/browser/task_manager/sampling/shared_sampler_win_unittest.cc
+++ b/chrome/browser/task_manager/sampling/shared_sampler_win_unittest.cc
@@ -32,15 +32,9 @@
   SharedSamplerTest()
       : blocking_pool_runner_(GetBlockingPoolRunner()),
         shared_sampler_(new SharedSampler(blocking_pool_runner_)) {
-    shared_sampler_->RegisterCallbacks(
+    shared_sampler_->RegisterCallback(
         base::GetCurrentProcId(),
-        base::Bind(&SharedSamplerTest::OnIdleWakeupsRefreshDone,
-                   base::Unretained(this)),
-        base::Bind(&SharedSamplerTest::OnPhysicalMemoryUsageRefreshDone,
-                   base::Unretained(this)),
-        base::Bind(&SharedSamplerTest::OnStartTimeRefreshDone,
-                   base::Unretained(this)),
-        base::Bind(&SharedSamplerTest::OnCpuTimeRefreshDone,
+        base::Bind(&SharedSamplerTest::OnSamplerRefreshDone,
                    base::Unretained(this)));
   }
 
@@ -76,29 +70,22 @@
 
   void OnRefreshTypeFinished(int64_t finished_refresh_type) {
     finished_refresh_type_ |= finished_refresh_type;
-
     if (finished_refresh_type_ == expected_refresh_type_)
       quit_closure_.Run();
   }
 
-  void OnPhysicalMemoryUsageRefreshDone(int64_t physical_bytes) {
-    physical_bytes_ = physical_bytes;
-    OnRefreshTypeFinished(REFRESH_TYPE_PHYSICAL_MEMORY);
-  }
-
-  void OnIdleWakeupsRefreshDone(int idle_wakeups_per_second) {
-    idle_wakeups_per_second_ = idle_wakeups_per_second;
-    OnRefreshTypeFinished(REFRESH_TYPE_IDLE_WAKEUPS);
-  }
-
-  void OnStartTimeRefreshDone(base::Time start_time) {
-    start_time_ = start_time;
-    OnRefreshTypeFinished(REFRESH_TYPE_START_TIME);
-  }
-
-  void OnCpuTimeRefreshDone(base::TimeDelta cpu_time) {
-    cpu_time_ = cpu_time;
-    OnRefreshTypeFinished(REFRESH_TYPE_CPU_TIME);
+  void OnSamplerRefreshDone(
+      base::Optional<SharedSampler::SamplingResult> results) {
+    if (results) {
+      physical_bytes_ = results->physical_bytes;
+      idle_wakeups_per_second_ = results->idle_wakeups_per_second;
+      start_time_ = results->start_time;
+      cpu_time_ = results->cpu_time;
+    }
+    OnRefreshTypeFinished(expected_refresh_type_ &
+                          (REFRESH_TYPE_PHYSICAL_MEMORY |
+                           REFRESH_TYPE_IDLE_WAKEUPS | REFRESH_TYPE_START_TIME |
+                           REFRESH_TYPE_CPU_TIME));
   }
 
   int64_t expected_refresh_type_ = 0;
diff --git a/chrome/browser/task_manager/sampling/task_group.cc b/chrome/browser/task_manager/sampling/task_group.cc
index 597e8ae5..875e81a 100644
--- a/chrome/browser/task_manager/sampling/task_group.cc
+++ b/chrome/browser/task_manager/sampling/task_group.cc
@@ -127,21 +127,14 @@
         base::Bind(&TaskGroup::OnProcessPriorityDone,
                    weak_ptr_factory_.GetWeakPtr()));
 
-    shared_sampler_->RegisterCallbacks(
+    shared_sampler_->RegisterCallback(
         process_id_,
-        base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone,
-                   weak_ptr_factory_.GetWeakPtr()),
-        base::Bind(&TaskGroup::OnPhysicalMemoryUsageRefreshDone,
-                   weak_ptr_factory_.GetWeakPtr()),
-        base::Bind(&TaskGroup::OnStartTimeRefreshDone,
-                   weak_ptr_factory_.GetWeakPtr()),
-        base::Bind(&TaskGroup::OnCpuTimeRefreshDone,
-                   weak_ptr_factory_.GetWeakPtr()));
+        base::Bind(&TaskGroup::OnSamplerRefreshDone, base::Unretained(this)));
   }
 }
 
 TaskGroup::~TaskGroup() {
-  shared_sampler_->UnregisterCallbacks(process_id_);
+  shared_sampler_->UnregisterCallback(process_id_);
 }
 
 void TaskGroup::AddTask(Task* task) {
@@ -290,6 +283,15 @@
 }
 #endif  // BUILDFLAG(ENABLE_NACL)
 
+#if defined(OS_LINUX)
+void TaskGroup::OnOpenFdCountRefreshDone(int open_fd_count) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+  open_fd_count_ = open_fd_count;
+  OnBackgroundRefreshTypeFinished(REFRESH_TYPE_FD_COUNT);
+}
+#endif  // defined(OS_LINUX)
+
 void TaskGroup::OnCpuRefreshDone(double cpu_usage) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
@@ -297,29 +299,6 @@
   OnBackgroundRefreshTypeFinished(REFRESH_TYPE_CPU);
 }
 
-void TaskGroup::OnStartTimeRefreshDone(base::Time start_time) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
-  start_time_ = start_time;
-  OnBackgroundRefreshTypeFinished(REFRESH_TYPE_START_TIME);
-}
-
-void TaskGroup::OnCpuTimeRefreshDone(base::TimeDelta cpu_time) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
-  cpu_time_ = cpu_time;
-  OnBackgroundRefreshTypeFinished(REFRESH_TYPE_CPU_TIME);
-}
-
-void TaskGroup::OnPhysicalMemoryUsageRefreshDone(int64_t physical_bytes) {
-#if defined(OS_WIN)
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
-  memory_usage_.physical_bytes = physical_bytes;
-  OnBackgroundRefreshTypeFinished(REFRESH_TYPE_PHYSICAL_MEMORY);
-#endif  // OS_WIN
-}
-
 void TaskGroup::OnMemoryUsageRefreshDone(MemoryUsageStats memory_usage) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
@@ -334,6 +313,13 @@
 #endif // OS_WIN
 }
 
+void TaskGroup::OnProcessPriorityDone(bool is_backgrounded) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+  is_backgrounded_ = is_backgrounded;
+  OnBackgroundRefreshTypeFinished(REFRESH_TYPE_PRIORITY);
+}
+
 void TaskGroup::OnIdleWakeupsRefreshDone(int idle_wakeups_per_second) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
@@ -341,20 +327,32 @@
   OnBackgroundRefreshTypeFinished(REFRESH_TYPE_IDLE_WAKEUPS);
 }
 
-#if defined(OS_LINUX)
-void TaskGroup::OnOpenFdCountRefreshDone(int open_fd_count) {
+void TaskGroup::OnSamplerRefreshDone(
+    base::Optional<SharedSampler::SamplingResult> results) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
-  open_fd_count_ = open_fd_count;
-  OnBackgroundRefreshTypeFinished(REFRESH_TYPE_FD_COUNT);
-}
-#endif  // defined(OS_LINUX)
+  // If any of the Optional<> fields have no value then replace them with
+  // sentinel values.
+  // TODO(wez): Migrate the TaskGroup fields to Optional<> so we can remove
+  // the need for all this sentinel-handling logic.
+  if (results) {
+    start_time_ = results->start_time;
+    cpu_time_ = results->cpu_time;
+    idle_wakeups_per_second_ = results->idle_wakeups_per_second;
+#if defined(OS_WIN)
+    memory_usage_.physical_bytes = results->physical_bytes;
+#endif
+  } else {
+    start_time_ = base::Time();
+    cpu_time_ = base::TimeDelta();
+    idle_wakeups_per_second_ = -1;
+#if defined(OS_WIN)
+    memory_usage_.physical_bytes = -1;
+#endif
+  }
 
-void TaskGroup::OnProcessPriorityDone(bool is_backgrounded) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
-  is_backgrounded_ = is_backgrounded;
-  OnBackgroundRefreshTypeFinished(REFRESH_TYPE_PRIORITY);
+  OnBackgroundRefreshTypeFinished(expected_on_bg_done_flags_ &
+                                  shared_sampler_->GetSupportedFlags());
 }
 
 void TaskGroup::OnBackgroundRefreshTypeFinished(int64_t finished_refresh_type) {
diff --git a/chrome/browser/task_manager/sampling/task_group.h b/chrome/browser/task_manager/sampling/task_group.h
index ecda3f7bf..c4296154 100644
--- a/chrome/browser/task_manager/sampling/task_group.h
+++ b/chrome/browser/task_manager/sampling/task_group.h
@@ -18,6 +18,7 @@
 #include "base/time/time.h"
 #include "build/build_config.h"
 #include "chrome/browser/task_manager/providers/task.h"
+#include "chrome/browser/task_manager/sampling/shared_sampler.h"
 #include "chrome/browser/task_manager/sampling/task_group_sampler.h"
 #include "chrome/browser/task_manager/task_manager_observer.h"
 #include "components/nacl/common/features.h"
@@ -120,23 +121,17 @@
   void RefreshNaClDebugStubPort(int child_process_unique_id);
   void OnRefreshNaClDebugStubPortDone(int port);
 #endif
-
-  void OnCpuRefreshDone(double cpu_usage);
-
-  void OnStartTimeRefreshDone(base::Time start_time);
-
-  void OnCpuTimeRefreshDone(base::TimeDelta cpu_time);
-
-  void OnPhysicalMemoryUsageRefreshDone(int64_t physical_bytes);
-  void OnMemoryUsageRefreshDone(MemoryUsageStats memory_usage);
-
-  void OnIdleWakeupsRefreshDone(int idle_wakeups_per_second);
-
 #if defined(OS_LINUX)
   void OnOpenFdCountRefreshDone(int open_fd_count);
 #endif  // defined(OS_LINUX)
 
+  void OnCpuRefreshDone(double cpu_usage);
+  void OnMemoryUsageRefreshDone(MemoryUsageStats memory_usage);
   void OnProcessPriorityDone(bool is_backgrounded);
+  void OnIdleWakeupsRefreshDone(int idle_wakeups_per_second);
+
+  void OnSamplerRefreshDone(
+      base::Optional<SharedSampler::SamplingResult> results);
 
   void OnBackgroundRefreshTypeFinished(int64_t finished_refresh_type);
 
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index c72cc89..400cce0 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -594,6 +594,8 @@
       "android/infobars/infobar_container_android.h",
       "android/infobars/instant_apps_infobar.cc",
       "android/infobars/instant_apps_infobar.h",
+      "android/infobars/near_oom_infobar.cc",
+      "android/infobars/near_oom_infobar.h",
       "android/infobars/permission_infobar.cc",
       "android/infobars/permission_infobar.h",
       "android/infobars/previews_infobar.cc",
diff --git a/chrome/browser/ui/android/infobars/near_oom_infobar.cc b/chrome/browser/ui/android/infobars/near_oom_infobar.cc
new file mode 100644
index 0000000..68a7792
--- /dev/null
+++ b/chrome/browser/ui/android/infobars/near_oom_infobar.cc
@@ -0,0 +1,85 @@
+// 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 "chrome/browser/ui/android/infobars/near_oom_infobar.h"
+
+#include <memory>
+#include <utility>
+
+#include "base/android/jni_string.h"
+#include "base/callback.h"
+#include "base/callback_helpers.h"
+#include "base/memory/ptr_util.h"
+#include "chrome/browser/android/tab_android.h"
+#include "chrome/browser/infobars/infobar_service.h"
+#include "components/infobars/core/infobar_delegate.h"
+#include "content/public/browser/web_contents.h"
+#include "jni/NearOomInfoBar_jni.h"
+
+namespace {
+
+class NearOomInfoBarDelegate : public infobars::InfoBarDelegate {
+ public:
+  explicit NearOomInfoBarDelegate(base::OnceClosure dismiss_callback)
+      : dismiss_callback_(std::move(dismiss_callback)) {}
+
+  infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override {
+    return infobars::InfoBarDelegate::InfoBarIdentifier::
+        NEAR_OOM_INFOBAR_ANDROID;
+  }
+
+  bool EqualsDelegate(infobars::InfoBarDelegate* delegate) const override {
+    return delegate->GetIdentifier() == GetIdentifier();
+  }
+
+  void InfoBarDismissed() override { std::move(dismiss_callback_).Run(); }
+
+  base::OnceClosure dismiss_callback_;
+};
+
+}  // namespace
+
+NearOomInfoBar::NearOomInfoBar()
+    : InfoBarAndroid(std::make_unique<NearOomInfoBarDelegate>(
+          base::BindOnce(&NearOomInfoBar::AcceptIntervention,
+                         base::Unretained(this)))) {}
+
+NearOomInfoBar::~NearOomInfoBar() = default;
+
+void NearOomInfoBar::AcceptIntervention() {
+  // TODO(bashi): Implement.
+  // delegate->AcceptIntervention();
+  DLOG(WARNING) << "Near-OOM Intervention accepted.";
+}
+
+void NearOomInfoBar::DeclineIntervention() {
+  // TODO(bashi): Implement.
+  // delegate->DeclineIntervention();
+  DLOG(WARNING) << "Near-OOM Intervention declined.";
+}
+
+void NearOomInfoBar::OnLinkClicked(
+    JNIEnv* env,
+    const base::android::JavaParamRef<jobject>& obj) {
+  if (!owner())
+    return;  // We're closing; don't call anything, it might access the owner.
+
+  DeclineIntervention();
+  RemoveSelf();
+}
+
+void NearOomInfoBar::ProcessButton(int action) {
+  NOTREACHED();  // No button on this infobar.
+}
+
+base::android::ScopedJavaLocalRef<jobject> NearOomInfoBar::CreateRenderInfoBar(
+    JNIEnv* env) {
+  return Java_NearOomInfoBar_create(env);
+}
+
+// static
+void NearOomInfoBar::Show(content::WebContents* web_contents) {
+  InfoBarService* service = InfoBarService::FromWebContents(web_contents);
+  service->AddInfoBar(base::WrapUnique(new NearOomInfoBar()));
+}
diff --git a/chrome/browser/ui/android/infobars/near_oom_infobar.h b/chrome/browser/ui/android/infobars/near_oom_infobar.h
new file mode 100644
index 0000000..c50b43c
--- /dev/null
+++ b/chrome/browser/ui/android/infobars/near_oom_infobar.h
@@ -0,0 +1,43 @@
+// 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 CHROME_BROWSER_UI_ANDROID_INFOBARS_NEAR_OOM_INFOBAR_H_
+#define CHROME_BROWSER_UI_ANDROID_INFOBARS_NEAR_OOM_INFOBAR_H_
+
+#include "base/android/jni_android.h"
+#include "base/android/scoped_java_ref.h"
+#include "base/macros.h"
+#include "chrome/browser/ui/android/infobars/infobar_android.h"
+
+namespace content {
+class WebContents;
+}
+
+class NearOomMessageDelegate;
+
+// Communicates to the user about the intervention performed by the browser to
+// limit the page's memory usage. See NearOomInfoBar.java for UI specifics, and
+// NearOomMessageDelegate for behavior specifics.
+class NearOomInfoBar : public InfoBarAndroid {
+ public:
+  ~NearOomInfoBar() override;
+
+  static void Show(content::WebContents* web_contents);
+
+ private:
+  NearOomInfoBar();
+  void AcceptIntervention();
+  void DeclineIntervention();
+
+  // InfoBarAndroid:
+  base::android::ScopedJavaLocalRef<jobject> CreateRenderInfoBar(
+      JNIEnv* env) override;
+  void OnLinkClicked(JNIEnv* env,
+                     const base::android::JavaParamRef<jobject>& obj) override;
+  void ProcessButton(int action) override;
+
+  DISALLOW_COPY_AND_ASSIGN(NearOomInfoBar);
+};
+
+#endif  // CHROME_BROWSER_UI_ANDROID_INFOBARS_NEAR_OOM_INFOBAR_H_
diff --git a/chrome/browser/ui/android/page_info/page_info_popup_android.cc b/chrome/browser/ui/android/page_info/page_info_popup_android.cc
index f2ad021..69503ce 100644
--- a/chrome/browser/ui/android/page_info/page_info_popup_android.cc
+++ b/chrome/browser/ui/android/page_info/page_info_popup_android.cc
@@ -52,7 +52,6 @@
     return;
 
   url_ = nav_entry->GetURL();
-  web_contents_ = web_contents;
 
   popup_jobject_.Reset(env, java_page_info_pop);
 
@@ -185,11 +184,6 @@
     // setting should show up in Page Info is in ShouldShowPermission in
     // page_info.cc.
     return permission.default_setting;
-  } else if (permission.type == CONTENT_SETTINGS_TYPE_SOUND) {
-    // The sound content setting should always show up when the tab is playing
-    // audio or has recently played audio.
-    if (web_contents_->WasRecentlyAudible())
-      return permission.default_setting;
   }
   return base::Optional<ContentSetting>();
 }
diff --git a/chrome/browser/ui/android/page_info/page_info_popup_android.h b/chrome/browser/ui/android/page_info/page_info_popup_android.h
index 547f623..21fc783 100644
--- a/chrome/browser/ui/android/page_info/page_info_popup_android.h
+++ b/chrome/browser/ui/android/page_info/page_info_popup_android.h
@@ -68,8 +68,6 @@
 
   GURL url_;
 
-  content::WebContents* web_contents_;
-
   DISALLOW_COPY_AND_ASSIGN(PageInfoPopupAndroid);
 };
 
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.cc b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.cc
index 3dced57..a9a8c3f2 100644
--- a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.cc
+++ b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.cc
@@ -12,7 +12,6 @@
 #include "ash/public/interfaces/window_actions.mojom.h"
 #include "ash/shell.h"                                  // mash-ok
 #include "ash/wm/tablet_mode/tablet_mode_controller.h"  // mash-ok
-#include "ash/wm/window_state.h"
 #include "base/auto_reset.h"
 #include "base/macros.h"
 #include "base/message_loop/message_loop.h"
@@ -515,7 +514,8 @@
       (owner == account_id && IsWindowOnDesktopOfUser(window, account_id)))
     return false;
 
-  bool minimized = ash::wm::GetWindowState(window)->IsMinimized();
+  bool minimized = window->GetProperty(aura::client::kShowStateKey) ==
+                   ui::SHOW_STATE_MINIMIZED;
   // Check that we are not trying to transfer ownership of a minimized window.
   if (account_id != owner && minimized)
     return false;
diff --git a/chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.cc b/chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.cc
index b43faac..0b296e6 100644
--- a/chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.cc
+++ b/chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.cc
@@ -8,12 +8,12 @@
 #include "ash/wallpaper/wallpaper_delegate.h"
 #include "ash/wm/mru_window_tracker.h"
 #include "ash/wm/window_positioner.h"
-#include "ash/wm/window_state.h"
 #include "base/macros.h"
 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h"
 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h"
 #include "ui/app_list/presenter/app_list.h"
+#include "ui/aura/client/aura_constants.h"
 #include "ui/compositor/layer_animation_observer.h"
 #include "ui/compositor/layer_tree_owner.h"
 #include "ui/display/display.h"
@@ -94,6 +94,18 @@
   window_list->push_back(*it);
 }
 
+void Unminimize(aura::Window* window) {
+  window->SetProperty(
+      aura::client::kShowStateKey,
+      window->GetProperty(aura::client::kPreMinimizedShowStateKey));
+  window->ClearProperty(aura::client::kPreMinimizedShowStateKey);
+}
+
+bool IsMinimized(aura::Window* window) {
+  return window->GetProperty(aura::client::kShowStateKey) ==
+         ui::SHOW_STATE_MINIMIZED;
+}
+
 }  // namespace
 
 UserSwitchAnimatorChromeOS::UserSwitchAnimatorChromeOS(
@@ -131,8 +143,10 @@
   // Full screen covers the screen naturally. Since a normal window can have the
   // same size as the work area, we only compare the bounds against the work
   // area.
-  if (ash::wm::GetWindowState(window)->IsFullscreen())
+  if (window->GetProperty(aura::client::kShowStateKey) ==
+      ui::SHOW_STATE_FULLSCREEN) {
     return true;
+  }
   gfx::Rect bounds = window->GetBoundsInScreen();
   gfx::Rect work_area =
       display::Screen::GetScreen()->GetDisplayNearestWindow(window).work_area();
@@ -246,8 +260,6 @@
         // window order (crbug.com/424307).
         PutMruWindowLast(&(user_pair.second));
         for (auto* window : user_pair.second) {
-          auto* window_state = ash::wm::GetWindowState(window);
-
           // Minimized visiting windows (minimized windows with an owner
           // different than that of the for_show_account_id) should retrun to
           // their
@@ -256,9 +268,9 @@
               owner_->window_to_entry().find(window);
           DCHECK(itr != owner_->window_to_entry().end());
           if (show_for_account_id != itr->second->owner() &&
-              window_state->IsMinimized()) {
+              IsMinimized(window)) {
             owner_->ShowWindowForUserIntern(window, itr->second->owner());
-            window_state->Unminimize();
+            Unminimize(window);
             continue;
           }
 
@@ -311,9 +323,8 @@
           ash::Shell::Get()->mru_window_tracker()->BuildMruWindowList();
       if (!mru_list.empty()) {
         aura::Window* window = mru_list[0];
-        ash::wm::WindowState* window_state = ash::wm::GetWindowState(window);
         if (owner_->IsWindowOnDesktopOfUser(window, new_account_id_) &&
-            !window_state->IsMinimized()) {
+            !IsMinimized(window)) {
           // Several unit tests come here without an activation client.
           wm::ActivationClient* client =
               wm::GetActivationClient(window->GetRootWindow());
diff --git a/chrome/browser/ui/cocoa/share_menu_controller.mm b/chrome/browser/ui/cocoa/share_menu_controller.mm
index 0de964fb..1f50d10c 100644
--- a/chrome/browser/ui/cocoa/share_menu_controller.mm
+++ b/chrome/browser/ui/cocoa/share_menu_controller.mm
@@ -6,6 +6,7 @@
 
 #include "base/mac/foundation_util.h"
 #include "base/mac/mac_util.h"
+#include "base/mac/sdk_forward_declarations.h"
 #include "base/strings/sys_string_conversions.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/browser/ui/browser.h"
@@ -43,6 +44,9 @@
   NSWindow* windowForShare_;  // weak
   NSRect rectForShare_;
   base::scoped_nsobject<NSImage> snapshotForShare_;
+  // The Reminders share extension reads title/URL from the currently active
+  // activity.
+  base::scoped_nsobject<NSUserActivity> activity_ API_AVAILABLE(macos(10.10));
 }
 
 + (BOOL)shouldShowMoreItem {
@@ -142,6 +146,10 @@
   windowForShare_ = nil;
   rectForShare_ = NSZeroRect;
   snapshotForShare_.reset();
+  if (@available(macOS 10.10, *)) {
+    [activity_ invalidate];
+    activity_.reset();
+  }
 }
 
 // Performs the share action using the sharing service represented by |sender|.
@@ -170,6 +178,13 @@
   } else {
     itemsToShare = @[ url ];
   }
+  if (@available(macOS 10.10, *)) {
+    activity_.reset([[NSUserActivity alloc]
+        initWithActivityType:NSUserActivityTypeBrowsingWeb]);
+    [activity_ setWebpageURL:url];
+    [activity_ setTitle:title];
+    [activity_ becomeCurrent];
+  }
   [service performWithItems:itemsToShare];
 }
 
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser_unittest.cc b/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser_unittest.cc
index 3d53a53..f76521f9 100644
--- a/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser_unittest.cc
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser_unittest.cc
@@ -79,8 +79,7 @@
 
   // Associate touchscreen device with display
   display_info[1].AddTouchDevice(
-      display::TouchCalibrationData::GenerateTouchDeviceIdentifier(
-          touchscreen));
+      display::TouchDeviceIdentifier::FromDevice(touchscreen));
   display_manager()->OnNativeDisplaysChanged(display_info);
   base::RunLoop().RunUntilIdle();
 
@@ -115,8 +114,7 @@
 
   // Associate touchscreen device with display
   display_info[1].AddTouchDevice(
-      display::TouchCalibrationData::GenerateTouchDeviceIdentifier(
-          touchscreen));
+      display::TouchDeviceIdentifier::FromDevice(touchscreen));
   display_manager()->OnNativeDisplaysChanged(display_info);
   base::RunLoop().RunUntilIdle();
 
diff --git a/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc b/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc
index 27724acb..e99d344 100644
--- a/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc
@@ -72,22 +72,21 @@
 // Callback to PWG raster conversion.
 // Posts a task to update print job with info about file containing converted
 // PWG raster data.
-void UpdateJobFileInfo(
-    std::unique_ptr<extensions::PrinterProviderPrintJob> job,
-    const ExtensionPrinterHandler::PrintJobCallback& callback,
-    bool success,
-    const base::FilePath& pwg_file_path) {
+void UpdateJobFileInfo(std::unique_ptr<extensions::PrinterProviderPrintJob> job,
+                       ExtensionPrinterHandler::PrintJobCallback callback,
+                       bool success,
+                       const base::FilePath& pwg_file_path) {
   if (!success) {
-    callback.Run(std::move(job));
+    std::move(callback).Run(std::move(job));
     return;
   }
 
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
       {base::MayBlock(), base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
-      base::Bind(&UpdateJobFileInfoOnWorkerThread, pwg_file_path,
-                 base::Passed(&job)),
-      callback);
+      base::BindOnce(&UpdateJobFileInfoOnWorkerThread, pwg_file_path,
+                     std::move(job)),
+      std::move(callback));
 }
 
 bool HasUsbPrinterProviderPermissions(const Extension* extension) {
@@ -138,10 +137,11 @@
 
 void ExtensionPrinterHandler::StartGetPrinters(
     const AddedPrintersCallback& callback,
-    const GetPrintersDoneCallback& done_callback) {
+    GetPrintersDoneCallback done_callback) {
   // Assume that there can only be one printer enumeration occuring at once.
   DCHECK_EQ(pending_enumeration_count_, 0);
   pending_enumeration_count_ = 1;
+  done_callback_ = std::move(done_callback);
 
   bool extension_supports_usb_printers = false;
   ExtensionRegistry* registry = ExtensionRegistry::Get(profile_);
@@ -158,25 +158,25 @@
     pending_enumeration_count_++;
     service->GetDevices(
         base::Bind(&ExtensionPrinterHandler::OnUsbDevicesEnumerated,
-                   weak_ptr_factory_.GetWeakPtr(), callback, done_callback));
+                   weak_ptr_factory_.GetWeakPtr(), callback));
   }
 
   extensions::PrinterProviderAPIFactory::GetInstance()
       ->GetForBrowserContext(profile_)
       ->DispatchGetPrintersRequested(
           base::Bind(&ExtensionPrinterHandler::WrapGetPrintersCallback,
-                     weak_ptr_factory_.GetWeakPtr(), callback, done_callback));
+                     weak_ptr_factory_.GetWeakPtr(), callback));
 }
 
 void ExtensionPrinterHandler::StartGetCapability(
     const std::string& destination_id,
-    const GetCapabilityCallback& callback) {
+    GetCapabilityCallback callback) {
   extensions::PrinterProviderAPIFactory::GetInstance()
       ->GetForBrowserContext(profile_)
       ->DispatchGetCapabilityRequested(
           destination_id,
-          base::Bind(&ExtensionPrinterHandler::WrapGetCapabilityCallback,
-                     weak_ptr_factory_.GetWeakPtr(), callback));
+          base::BindOnce(&ExtensionPrinterHandler::WrapGetCapabilityCallback,
+                         weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
 }
 
 void ExtensionPrinterHandler::StartPrint(
@@ -186,7 +186,7 @@
     const std::string& ticket_json,
     const gfx::Size& page_size,
     const scoped_refptr<base::RefCountedBytes>& print_data,
-    const PrintCallback& callback) {
+    PrintCallback callback) {
   auto print_job = base::MakeUnique<extensions::PrinterProviderPrintJob>();
   print_job->printer_id = destination_id;
   print_job->job_title = job_title;
@@ -206,37 +206,38 @@
     // the same way as it's done with PWG raster.
     print_job->content_type = kContentTypePdf;
     print_job->document_bytes = print_data;
-    DispatchPrintJob(callback, std::move(print_job));
+    DispatchPrintJob(std::move(callback), std::move(print_job));
     return;
   }
 
   cloud_devices::CloudDeviceDescription ticket;
   if (!ticket.InitFromString(ticket_json)) {
-    WrapPrintCallback(callback, base::Value(kInvalidTicketPrintError));
+    WrapPrintCallback(std::move(callback),
+                      base::Value(kInvalidTicketPrintError));
     return;
   }
 
   print_job->content_type = kContentTypePWGRaster;
-  ConvertToPWGRaster(print_data, printer_description, ticket, page_size,
-                     std::move(print_job),
-                     base::Bind(&ExtensionPrinterHandler::DispatchPrintJob,
-                                weak_ptr_factory_.GetWeakPtr(), callback));
+  ConvertToPWGRaster(
+      print_data, printer_description, ticket, page_size, std::move(print_job),
+      base::BindOnce(&ExtensionPrinterHandler::DispatchPrintJob,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
 }
 
 void ExtensionPrinterHandler::StartGrantPrinterAccess(
     const std::string& printer_id,
-    const GetPrinterInfoCallback& callback) {
+    GetPrinterInfoCallback callback) {
   std::string extension_id;
   std::string device_guid;
   if (!ParseProvisionalUsbPrinterId(printer_id, &extension_id, &device_guid)) {
-    callback.Run(base::DictionaryValue());
+    std::move(callback).Run(base::DictionaryValue());
     return;
   }
 
   device::UsbService* service = device::DeviceClient::Get()->GetUsbService();
   scoped_refptr<UsbDevice> device = service->GetDevice(device_guid);
   if (!device) {
-    callback.Run(base::DictionaryValue());
+    std::move(callback).Run(base::DictionaryValue());
     return;
   }
 
@@ -248,8 +249,8 @@
       ->GetForBrowserContext(profile_)
       ->DispatchGetUsbPrinterInfoRequested(
           extension_id, device,
-          base::Bind(&ExtensionPrinterHandler::WrapGetPrinterInfoCallback,
-                     weak_ptr_factory_.GetWeakPtr(), callback));
+          base::BindOnce(&ExtensionPrinterHandler::WrapGetPrinterInfoCallback,
+                         weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
 }
 
 void ExtensionPrinterHandler::SetPWGRasterConverterForTesting(
@@ -263,7 +264,7 @@
     const cloud_devices::CloudDeviceDescription& ticket,
     const gfx::Size& page_size,
     std::unique_ptr<extensions::PrinterProviderPrintJob> job,
-    const PrintJobCallback& callback) {
+    PrintJobCallback callback) {
   if (!pwg_raster_converter_) {
     pwg_raster_converter_ = PWGRasterConverter::CreateDefault();
   }
@@ -271,27 +272,27 @@
       data.get(),
       PWGRasterConverter::GetConversionSettings(printer_description, page_size),
       PWGRasterConverter::GetBitmapSettings(printer_description, ticket),
-      base::Bind(&UpdateJobFileInfo, base::Passed(&job), callback));
+      base::BindOnce(&UpdateJobFileInfo, std::move(job), std::move(callback)));
 }
 
 void ExtensionPrinterHandler::DispatchPrintJob(
-    const PrintCallback& callback,
+    PrintCallback callback,
     std::unique_ptr<extensions::PrinterProviderPrintJob> print_job) {
   if (print_job->document_path.empty() && !print_job->document_bytes) {
-    WrapPrintCallback(callback, base::Value(kInvalidDataPrintError));
+    WrapPrintCallback(std::move(callback), base::Value(kInvalidDataPrintError));
     return;
   }
 
   extensions::PrinterProviderAPIFactory::GetInstance()
       ->GetForBrowserContext(profile_)
       ->DispatchPrintRequested(
-          *print_job, base::Bind(&ExtensionPrinterHandler::WrapPrintCallback,
-                                 weak_ptr_factory_.GetWeakPtr(), callback));
+          *print_job,
+          base::BindOnce(&ExtensionPrinterHandler::WrapPrintCallback,
+                         weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
 }
 
 void ExtensionPrinterHandler::WrapGetPrintersCallback(
     const AddedPrintersCallback& callback,
-    const GetPrintersDoneCallback& done_callback,
     const base::ListValue& printers,
     bool done) {
   DCHECK_GT(pending_enumeration_count_, 0);
@@ -301,11 +302,11 @@
   if (done)
     pending_enumeration_count_--;
   if (pending_enumeration_count_ == 0)
-    done_callback.Run();
+    std::move(done_callback_).Run();
 }
 
 void ExtensionPrinterHandler::WrapGetCapabilityCallback(
-    const GetCapabilityCallback& callback,
+    GetCapabilityCallback callback,
     const base::DictionaryValue& capability) {
   auto capabilities = std::make_unique<base::DictionaryValue>();
   std::unique_ptr<base::DictionaryValue> cdd =
@@ -315,23 +316,22 @@
     capabilities->SetKey(printing::kSettingCapabilities,
                          base::Value::FromUniquePtrValue(std::move(cdd)));
   }
-  callback.Run(std::move(capabilities));
+  std::move(callback).Run(std::move(capabilities));
 }
 
-void ExtensionPrinterHandler::WrapPrintCallback(const PrintCallback& callback,
+void ExtensionPrinterHandler::WrapPrintCallback(PrintCallback callback,
                                                 const base::Value& status) {
-  callback.Run(status);
+  std::move(callback).Run(status);
 }
 
 void ExtensionPrinterHandler::WrapGetPrinterInfoCallback(
-    const GetPrinterInfoCallback& callback,
+    GetPrinterInfoCallback callback,
     const base::DictionaryValue& printer_info) {
-  callback.Run(printer_info);
+  std::move(callback).Run(printer_info);
 }
 
 void ExtensionPrinterHandler::OnUsbDevicesEnumerated(
     const AddedPrintersCallback& callback,
-    const GetPrintersDoneCallback& done_callback,
     const std::vector<scoped_refptr<UsbDevice>>& devices) {
   ExtensionRegistry* registry = ExtensionRegistry::Get(profile_);
   DevicePermissionsManager* permissions_manager =
@@ -382,5 +382,5 @@
   if (!list->empty())
     callback.Run(*list);
   if (pending_enumeration_count_ == 0)
-    done_callback.Run();
+    std::move(done_callback_).Run();
 }
diff --git a/chrome/browser/ui/webui/print_preview/extension_printer_handler.h b/chrome/browser/ui/webui/print_preview/extension_printer_handler.h
index c6e2150..7ec540ce 100644
--- a/chrome/browser/ui/webui/print_preview/extension_printer_handler.h
+++ b/chrome/browser/ui/webui/print_preview/extension_printer_handler.h
@@ -44,7 +44,7 @@
 // extension API.
 class ExtensionPrinterHandler : public PrinterHandler {
  public:
-  using PrintJobCallback = base::Callback<void(
+  using PrintJobCallback = base::OnceCallback<void(
       std::unique_ptr<extensions::PrinterProviderPrintJob>)>;
 
   explicit ExtensionPrinterHandler(Profile* profile);
@@ -54,9 +54,9 @@
   // PrinterHandler implementation:
   void Reset() override;
   void StartGetPrinters(const AddedPrintersCallback& added_printers_callback,
-                        const GetPrintersDoneCallback& done_callback) override;
+                        GetPrintersDoneCallback done_callback) override;
   void StartGetCapability(const std::string& destination_id,
-                          const GetCapabilityCallback& callback) override;
+                          GetCapabilityCallback callback) override;
   // TODO(tbarzic): It might make sense to have the strings in a single struct.
   void StartPrint(const std::string& destination_id,
                   const std::string& capability,
@@ -64,9 +64,9 @@
                   const std::string& ticket_json,
                   const gfx::Size& page_size,
                   const scoped_refptr<base::RefCountedBytes>& print_data,
-                  const PrintCallback& callback) override;
+                  PrintCallback callback) override;
   void StartGrantPrinterAccess(const std::string& printer_id,
-                               const GetPrinterInfoCallback& callback) override;
+                               GetPrinterInfoCallback callback) override;
 
  private:
   friend class ExtensionPrinterHandlerTest;
@@ -83,34 +83,32 @@
       const cloud_devices::CloudDeviceDescription& ticket,
       const gfx::Size& page_size,
       std::unique_ptr<extensions::PrinterProviderPrintJob> job,
-      const PrintJobCallback& callback);
+      PrintJobCallback callback);
 
   // Sets print job document data and dispatches it using printerProvider API.
   void DispatchPrintJob(
-      const PrintCallback& callback,
+      PrintCallback callback,
       std::unique_ptr<extensions::PrinterProviderPrintJob> print_job);
 
   // Methods used as wrappers to callbacks for extensions::PrinterProviderAPI
   // methods, primarily so the callbacks can be bound to this class' weak ptr.
   // They just propagate results to callbacks passed to them.
   void WrapGetPrintersCallback(const AddedPrintersCallback& callback,
-                               const GetPrintersDoneCallback& done_callback,
                                const base::ListValue& printers,
                                bool done);
-  void WrapGetCapabilityCallback(const GetCapabilityCallback& callback,
+  void WrapGetCapabilityCallback(GetCapabilityCallback callback,
                                  const base::DictionaryValue& capability);
-  void WrapPrintCallback(const PrintCallback& callback,
-                         const base::Value& status);
-  void WrapGetPrinterInfoCallback(const GetPrinterInfoCallback& callback,
+  void WrapPrintCallback(PrintCallback callback, const base::Value& status);
+  void WrapGetPrinterInfoCallback(GetPrinterInfoCallback callback,
                                   const base::DictionaryValue& printer_info);
 
   void OnUsbDevicesEnumerated(
       const AddedPrintersCallback& callback,
-      const GetPrintersDoneCallback& done_callback,
       const std::vector<scoped_refptr<device::UsbDevice>>& devices);
 
   Profile* const profile_;
-
+  GetPrintersDoneCallback done_callback_;
+  PrintJobCallback print_job_callback_;
   std::unique_ptr<printing::PWGRasterConverter> pwg_raster_converter_;
   int pending_enumeration_count_ = 0;
 
diff --git a/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc b/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc
index 0a09ba2..771236a7 100644
--- a/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc
+++ b/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc
@@ -287,15 +287,15 @@
   void Start(base::RefCountedMemory* data,
              const printing::PdfRenderSettings& conversion_settings,
              const printing::PwgRasterSettings& bitmap_settings,
-             const ResultCallback& callback) override {
+             ResultCallback callback) override {
     if (fail_conversion_) {
-      callback.Run(false, base::FilePath());
+      std::move(callback).Run(false, base::FilePath());
       return;
     }
 
     if (!initialized_ && !temp_dir_.CreateUniqueTempDir()) {
       ADD_FAILURE() << "Unable to create target dir for cenverter";
-      callback.Run(false, base::FilePath());
+      std::move(callback).Run(false, base::FilePath());
       return;
     }
 
@@ -306,14 +306,14 @@
     int written = WriteFile(path_, data_str.c_str(), data_str.size());
     if (written != static_cast<int>(data_str.size())) {
       ADD_FAILURE() << "Failed to write pwg raster file.";
-      callback.Run(false, base::FilePath());
+      std::move(callback).Run(false, base::FilePath());
       return;
     }
 
     conversion_settings_ = conversion_settings;
     bitmap_settings_ = bitmap_settings;
 
-    callback.Run(true, path_);
+    std::move(callback).Run(true, path_);
   }
 
   // Makes |Start| method always return an error.
@@ -361,27 +361,27 @@
 
   void DispatchGetCapabilityRequested(
       const std::string& destination_id,
-      const PrinterProviderAPI::GetCapabilityCallback& callback) override {
-    pending_capability_callbacks_.push(callback);
+      PrinterProviderAPI::GetCapabilityCallback callback) override {
+    pending_capability_callbacks_.push(std::move(callback));
   }
 
   void DispatchPrintRequested(
       const PrinterProviderPrintJob& job,
-      const PrinterProviderAPI::PrintCallback& callback) override {
+      PrinterProviderAPI::PrintCallback callback) override {
     PrintRequestInfo request_info;
-    request_info.callback = callback;
+    request_info.callback = std::move(callback);
     request_info.job = job;
 
-    pending_print_requests_.push(request_info);
+    pending_print_requests_.push(std::move(request_info));
   }
 
   void DispatchGetUsbPrinterInfoRequested(
       const std::string& extension_id,
       scoped_refptr<device::UsbDevice> device,
-      const PrinterProviderAPI::GetPrinterInfoCallback& callback) override {
+      PrinterProviderAPI::GetPrinterInfoCallback callback) override {
     EXPECT_EQ("fake extension id", extension_id);
     EXPECT_TRUE(device);
-    pending_usb_info_callbacks_.push(callback);
+    pending_usb_info_callbacks_.push(std::move(callback));
   }
 
   size_t pending_get_printers_count() const {
@@ -409,7 +409,7 @@
   void TriggerNextGetCapabilityCallback(
       const base::DictionaryValue& description) {
     ASSERT_GT(pending_get_capability_count(), 0u);
-    pending_capability_callbacks_.front().Run(description);
+    std::move(pending_capability_callbacks_.front()).Run(description);
     pending_capability_callbacks_.pop();
   }
 
@@ -427,7 +427,7 @@
     base::Value result_value;
     if (result != kPrintRequestSuccess)
       result_value = base::Value(result);
-    pending_print_requests_.front().callback.Run(result_value);
+    std::move(pending_print_requests_.front().callback).Run(result_value);
     pending_print_requests_.pop();
   }
 
@@ -438,7 +438,7 @@
   void TriggerNextUsbPrinterInfoCallback(
       const base::DictionaryValue& printer_info) {
     ASSERT_GT(pending_usb_info_count(), 0u);
-    pending_usb_info_callbacks_.front().Run(printer_info);
+    std::move(pending_usb_info_callbacks_.front()).Run(printer_info);
     pending_usb_info_callbacks_.pop();
   }
 
diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc
index 09e07b2b..3be7d9a 100644
--- a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc
+++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc
@@ -57,16 +57,16 @@
 }
 
 void FetchCapabilities(std::unique_ptr<chromeos::Printer> printer,
-                       const PrinterHandler::GetCapabilityCallback& cb) {
+                       LocalPrinterHandlerChromeos::GetCapabilityCallback cb) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   printing::PrinterBasicInfo basic_info = ToBasicInfo(*printer);
 
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
-      base::Bind(&printing::GetSettingsOnBlockingPool, printer->id(),
-                 basic_info),
-      cb);
+      base::BindOnce(&printing::GetSettingsOnBlockingPool, printer->id(),
+                     basic_info),
+      std::move(cb));
 }
 
 }  // namespace
@@ -89,18 +89,17 @@
   weak_factory_.InvalidateWeakPtrs();
 }
 
-void LocalPrinterHandlerChromeos::GetDefaultPrinter(
-    const DefaultPrinterCallback& cb) {
+void LocalPrinterHandlerChromeos::GetDefaultPrinter(DefaultPrinterCallback cb) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   // TODO(crbug.com/660898): Add default printers to ChromeOS.
 
   content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
-                                   base::Bind(cb, ""));
+                                   base::BindOnce(std::move(cb), ""));
 }
 
 void LocalPrinterHandlerChromeos::StartGetPrinters(
     const AddedPrintersCallback& added_printers_callback,
-    const GetPrintersDoneCallback& done_callback) {
+    GetPrintersDoneCallback done_callback) {
   // SyncedPrintersManager is not thread safe and must be called from the UI
   // thread.
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -116,13 +115,13 @@
       printers_manager_->GetPrinters(CupsPrintersManager::kAutomatic),
       &printer_list);
 
-  printing::ConvertPrinterListForCallback(added_printers_callback,
-                                          done_callback, printer_list);
+  printing::ConvertPrinterListForCallback(
+      added_printers_callback, std::move(done_callback), printer_list);
 }
 
 void LocalPrinterHandlerChromeos::StartGetCapability(
     const std::string& printer_name,
-    const GetCapabilityCallback& cb) {
+    GetCapabilityCallback cb) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   std::unique_ptr<chromeos::Printer> printer =
@@ -130,7 +129,7 @@
   if (!printer) {
     // If the printer was removed, the lookup will fail.
     content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
-                                     base::Bind(cb, nullptr));
+                                     base::BindOnce(std::move(cb), nullptr));
     return;
   }
 
@@ -141,15 +140,16 @@
 
   if (printers_manager_->IsPrinterInstalled(*printer)) {
     // Skip setup if the printer is already installed.
-    HandlePrinterSetup(std::move(printer), cb, chromeos::kSuccess);
+    HandlePrinterSetup(std::move(printer), std::move(cb), chromeos::kSuccess);
     return;
   }
 
   const chromeos::Printer& printer_ref = *printer;
   printer_configurer_->SetUpPrinter(
       printer_ref,
-      base::Bind(&LocalPrinterHandlerChromeos::HandlePrinterSetup,
-                 weak_factory_.GetWeakPtr(), base::Passed(&printer), cb));
+      base::BindOnce(&LocalPrinterHandlerChromeos::HandlePrinterSetup,
+                     weak_factory_.GetWeakPtr(), base::Passed(&printer),
+                     std::move(cb)));
 }
 
 void LocalPrinterHandlerChromeos::StartPrint(
@@ -159,13 +159,13 @@
     const std::string& ticket_json,
     const gfx::Size& page_size,
     const scoped_refptr<base::RefCountedBytes>& print_data,
-    const PrintCallback& callback) {
+    PrintCallback callback) {
   NOTREACHED();
 }
 
 void LocalPrinterHandlerChromeos::HandlePrinterSetup(
     std::unique_ptr<chromeos::Printer> printer,
-    const GetCapabilityCallback& cb,
+    GetCapabilityCallback cb,
     chromeos::PrinterSetupResult result) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
@@ -176,7 +176,7 @@
       printers_manager_->PrinterInstalled(*printer);
 
       // fetch settings on the blocking pool and invoke callback.
-      FetchCapabilities(std::move(printer), cb);
+      FetchCapabilities(std::move(printer), std::move(cb));
       return;
     case chromeos::PrinterSetupResult::kPpdNotFound:
       LOG(WARNING) << "Could not find PPD.  Check printer configuration.";
@@ -201,5 +201,5 @@
   }
 
   // TODO(skau): Open printer settings if this is resolvable.
-  cb.Run(nullptr);
+  std::move(cb).Run(nullptr);
 }
diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.h b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.h
index 79d26f89..263bd975 100644
--- a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.h
+++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.h
@@ -26,11 +26,11 @@
 
   // PrinterHandler implementation
   void Reset() override;
-  void GetDefaultPrinter(const DefaultPrinterCallback& cb) override;
+  void GetDefaultPrinter(DefaultPrinterCallback cb) override;
   void StartGetPrinters(const AddedPrintersCallback& added_printers_callback,
-                        const GetPrintersDoneCallback& done_callback) override;
+                        GetPrintersDoneCallback done_callback) override;
   void StartGetCapability(const std::string& printer_name,
-                          const GetCapabilityCallback& cb) override;
+                          GetCapabilityCallback cb) override;
   // Required by PrinterHandler interface but should never be called.
   void StartPrint(const std::string& destination_id,
                   const std::string& capability,
@@ -38,11 +38,11 @@
                   const std::string& ticket_json,
                   const gfx::Size& page_size,
                   const scoped_refptr<base::RefCountedBytes>& print_data,
-                  const PrintCallback& callback) override;
+                  PrintCallback callback) override;
 
  private:
   void HandlePrinterSetup(std::unique_ptr<chromeos::Printer> printer,
-                          const GetCapabilityCallback& cb,
+                          GetCapabilityCallback cb,
                           chromeos::PrinterSetupResult result);
   std::unique_ptr<chromeos::CupsPrintersManager> printers_manager_;
   scoped_refptr<chromeos::PpdProvider> ppd_provider_;
diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_default.cc b/chrome/browser/ui/webui/print_preview/local_printer_handler_default.cc
index 4409f239..ae37e9025 100644
--- a/chrome/browser/ui/webui/print_preview/local_printer_handler_default.cc
+++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_default.cc
@@ -67,36 +67,35 @@
 
 void LocalPrinterHandlerDefault::Reset() {}
 
-void LocalPrinterHandlerDefault::GetDefaultPrinter(
-    const DefaultPrinterCallback& cb) {
+void LocalPrinterHandlerDefault::GetDefaultPrinter(DefaultPrinterCallback cb) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
-      base::Bind(&GetDefaultPrinterAsync), cb);
+      base::BindOnce(&GetDefaultPrinterAsync), std::move(cb));
 }
 
 void LocalPrinterHandlerDefault::StartGetPrinters(
     const AddedPrintersCallback& callback,
-    const GetPrintersDoneCallback& done_callback) {
+    GetPrintersDoneCallback done_callback) {
   VLOG(1) << "Enumerate printers start";
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
-      base::Bind(&EnumeratePrintersAsync),
-      base::Bind(&printing::ConvertPrinterListForCallback, callback,
-                 done_callback));
+      base::BindOnce(&EnumeratePrintersAsync),
+      base::BindOnce(&printing::ConvertPrinterListForCallback, callback,
+                     std::move(done_callback)));
 }
 
 void LocalPrinterHandlerDefault::StartGetCapability(
     const std::string& device_name,
-    const GetCapabilityCallback& cb) {
+    GetCapabilityCallback cb) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
-      base::Bind(&FetchCapabilitiesAsync, device_name), cb);
+      base::BindOnce(&FetchCapabilitiesAsync, device_name), std::move(cb));
 }
 
 void LocalPrinterHandlerDefault::StartPrint(
@@ -106,6 +105,6 @@
     const std::string& ticket_json,
     const gfx::Size& page_size,
     const scoped_refptr<base::RefCountedBytes>& print_data,
-    const PrintCallback& callback) {
+    PrintCallback callback) {
   NOTREACHED();
 }
diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_default.h b/chrome/browser/ui/webui/print_preview/local_printer_handler_default.h
index c3086342..de22422 100644
--- a/chrome/browser/ui/webui/print_preview/local_printer_handler_default.h
+++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_default.h
@@ -22,11 +22,11 @@
 
   // PrinterHandler implementation.
   void Reset() override;
-  void GetDefaultPrinter(const DefaultPrinterCallback& cb) override;
+  void GetDefaultPrinter(DefaultPrinterCallback cb) override;
   void StartGetPrinters(const AddedPrintersCallback& added_printers_callback,
-                        const GetPrintersDoneCallback& done_callback) override;
+                        GetPrintersDoneCallback done_callback) override;
   void StartGetCapability(const std::string& destination_id,
-                          const GetCapabilityCallback& callback) override;
+                          GetCapabilityCallback callback) override;
   // Required by PrinterHandler interface but should never be called.
   void StartPrint(const std::string& destination_id,
                   const std::string& capability,
@@ -34,7 +34,7 @@
                   const std::string& ticket_json,
                   const gfx::Size& page_size,
                   const scoped_refptr<base::RefCountedBytes>& print_data,
-                  const PrintCallback& callback) override;
+                  PrintCallback callback) override;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(LocalPrinterHandlerDefault);
diff --git a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
index a43dde5..0e7fc8e 100644
--- a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
@@ -154,19 +154,18 @@
 
 void PdfPrinterHandler::StartGetPrinters(
     const AddedPrintersCallback& added_printers_callback,
-    const GetPrintersDoneCallback& done_callback) {
+    GetPrintersDoneCallback done_callback) {
   NOTREACHED();
 }
 
-void PdfPrinterHandler::StartGetCapability(
-    const std::string& destination_id,
-    const GetCapabilityCallback& callback) {
+void PdfPrinterHandler::StartGetCapability(const std::string& destination_id,
+                                           GetCapabilityCallback callback) {
   auto printer_info = base::MakeUnique<base::DictionaryValue>();
   printer_info->SetString(printing::kSettingDeviceName, destination_id);
   printer_info->Set(
       printing::kSettingCapabilities,
       GetPdfCapabilities(g_browser_process->GetApplicationLocale()));
-  callback.Run(std::move(printer_info));
+  std::move(callback).Run(std::move(printer_info));
 }
 
 void PdfPrinterHandler::StartPrint(
@@ -176,7 +175,7 @@
     const std::string& ticket_json,
     const gfx::Size& page_size,
     const scoped_refptr<base::RefCountedBytes>& print_data,
-    const PrintCallback& callback) {
+    PrintCallback callback) {
   print_data_ = print_data;
   if (!print_to_pdf_path_.empty()) {
     // User has already selected a path, no need to show the dialog again.
@@ -185,7 +184,7 @@
              !select_file_dialog_->IsRunning(platform_util::GetTopLevel(
                  preview_web_contents_->GetNativeView()))) {
     DCHECK(!print_callback_);
-    print_callback_ = callback;
+    print_callback_ = std::move(callback);
 #if defined(OS_WIN)
     base::FilePath::StringType print_job_title(job_title);
 #elif defined(OS_POSIX)
@@ -215,8 +214,7 @@
 }
 
 void PdfPrinterHandler::FileSelectionCanceled(void* params) {
-  print_callback_.Run(base::Value("PDFPrintCanceled"));
-  print_callback_.Reset();
+  std::move(print_callback_).Run(base::Value("PDFPrintCanceled"));
 }
 
 void PdfPrinterHandler::SetPdfSavedClosureForTesting(
@@ -235,8 +233,7 @@
     ChromeSelectFilePolicy policy(initiator);
     if (!policy.CanOpenSelectFileDialog()) {
       policy.SelectFileDenied();
-      print_callback_.Run(base::Value("PDFPrintCannotSelect"));
-      print_callback_.Reset();
+      std::move(print_callback_).Run(base::Value("PDFPrintCannotSelect"));
       return;
     }
   }
@@ -278,8 +275,7 @@
       base::BindOnce(&PrintToPdfCallback, print_data_, print_to_pdf_path_,
                      pdf_file_saved_closure_));
   print_to_pdf_path_.clear();
-  print_callback_.Run(base::Value());
-  print_callback_.Reset();
+  std::move(print_callback_).Run(base::Value());
 }
 
 void PdfPrinterHandler::OnGotUniqueFileName(const base::FilePath& path) {
diff --git a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.h b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.h
index 49b8638..50537bc 100644
--- a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.h
+++ b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.h
@@ -46,16 +46,16 @@
   void Reset() override;
   // Required by PrinterHandler implementation but should never be called.
   void StartGetPrinters(const AddedPrintersCallback& added_printers_callback,
-                        const GetPrintersDoneCallback& done_callback) override;
+                        GetPrintersDoneCallback done_callback) override;
   void StartGetCapability(const std::string& destination_id,
-                          const GetCapabilityCallback& callback) override;
+                          GetCapabilityCallback callback) override;
   void StartPrint(const std::string& destination_id,
                   const std::string& capability,
                   const base::string16& job_title,
                   const std::string& ticket_json,
                   const gfx::Size& page_size,
                   const scoped_refptr<base::RefCountedBytes>& print_data,
-                  const PrintCallback& callback) override;
+                  PrintCallback callback) override;
 
   // SelectFileDialog::Listener implementation.
   void FileSelected(const base::FilePath& path,
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
index 91eb617c..2c0598ad 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
@@ -544,8 +544,9 @@
   }
 
   handler->StartGetCapability(
-      printer_name, base::Bind(&PrintPreviewHandler::SendPrinterCapabilities,
-                               weak_factory_.GetWeakPtr(), callback_id));
+      printer_name,
+      base::BindOnce(&PrintPreviewHandler::SendPrinterCapabilities,
+                     weak_factory_.GetWeakPtr(), callback_id));
 }
 
 void PrintPreviewHandler::HandleGetPreview(const base::ListValue* args) {
@@ -736,10 +737,11 @@
     else if (print_with_privet)
       type = PrinterType::kPrivetPrinter;
     PrinterHandler* handler = GetPrinterHandler(type);
-    handler->StartPrint(destination_id, capabilities, title, print_ticket,
-                        gfx::Size(width, height), data,
-                        base::Bind(&PrintPreviewHandler::OnPrintResult,
-                                   weak_factory_.GetWeakPtr(), callback_id));
+    handler->StartPrint(
+        destination_id, capabilities, title, print_ticket,
+        gfx::Size(width, height), data,
+        base::BindOnce(&PrintPreviewHandler::OnPrintResult,
+                       weak_factory_.GetWeakPtr(), callback_id));
     return;
   }
 
@@ -846,9 +848,9 @@
 
   GetPrinterHandler(PrinterType::kLocalPrinter)
       ->StartGetCapability(
-          printer_name,
-          base::Bind(&PrintPreviewHandler::SendPrinterSetup,
-                     weak_factory_.GetWeakPtr(), callback_id, printer_name));
+          printer_name, base::BindOnce(&PrintPreviewHandler::SendPrinterSetup,
+                                       weak_factory_.GetWeakPtr(), callback_id,
+                                       printer_name));
 }
 
 void PrintPreviewHandler::OnSigninComplete(const std::string& callback_id) {
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
index ff516f0..3b0343b 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
@@ -141,26 +141,26 @@
 
   void Reset() override {}
 
-  void GetDefaultPrinter(const DefaultPrinterCallback& cb) override {
-    cb.Run(default_printer_);
+  void GetDefaultPrinter(DefaultPrinterCallback cb) override {
+    std::move(cb).Run(default_printer_);
   }
 
   void StartGetPrinters(const AddedPrintersCallback& added_printers_callback,
-                        const GetPrintersDoneCallback& done_callback) override {
+                        GetPrintersDoneCallback done_callback) override {
     if (!printers_.empty())
       added_printers_callback.Run(printers_);
-    done_callback.Run();
+    std::move(done_callback).Run();
   }
 
   void StartGetCapability(const std::string& destination_id,
-                          const GetCapabilityCallback& callback) override {
-    callback.Run(base::DictionaryValue::From(std::make_unique<base::Value>(
-        printer_capabilities_[destination_id]->Clone())));
+                          GetCapabilityCallback callback) override {
+    std::move(callback).Run(
+        base::DictionaryValue::From(std::make_unique<base::Value>(
+            printer_capabilities_[destination_id]->Clone())));
   }
 
-  void StartGrantPrinterAccess(
-      const std::string& printer_id,
-      const GetPrinterInfoCallback& callback) override {}
+  void StartGrantPrinterAccess(const std::string& printer_id,
+                               GetPrinterInfoCallback callback) override {}
 
   void StartPrint(const std::string& destination_id,
                   const std::string& capability,
@@ -168,8 +168,8 @@
                   const std::string& ticket_json,
                   const gfx::Size& page_size,
                   const scoped_refptr<base::RefCountedBytes>& print_data,
-                  const PrintCallback& callback) override {
-    callback.Run(base::Value());
+                  PrintCallback callback) override {
+    std::move(callback).Run(base::Value());
   }
 
   void SetPrinters(const std::vector<PrinterInfo>& printers) {
diff --git a/chrome/browser/ui/webui/print_preview/printer_capabilities.cc b/chrome/browser/ui/webui/print_preview/printer_capabilities.cc
index 8bd046e..33b8bef6 100644
--- a/chrome/browser/ui/webui/print_preview/printer_capabilities.cc
+++ b/chrome/browser/ui/webui/print_preview/printer_capabilities.cc
@@ -213,7 +213,7 @@
 
 void ConvertPrinterListForCallback(
     const PrinterHandler::AddedPrintersCallback& callback,
-    const PrinterHandler::GetPrintersDoneCallback& done_callback,
+    PrinterHandler::GetPrintersDoneCallback done_callback,
     const PrinterList& printer_list) {
   base::ListValue printers;
   PrintersToValues(printer_list, &printers);
@@ -222,7 +222,7 @@
           << " printers";
   if (!printers.empty())
     callback.Run(printers);
-  done_callback.Run();
+  std::move(done_callback).Run();
 }
 
 std::unique_ptr<base::DictionaryValue> ValidateCddForPrintPreview(
diff --git a/chrome/browser/ui/webui/print_preview/printer_capabilities.h b/chrome/browser/ui/webui/print_preview/printer_capabilities.h
index 19a600c..47bd80f 100644
--- a/chrome/browser/ui/webui/print_preview/printer_capabilities.h
+++ b/chrome/browser/ui/webui/print_preview/printer_capabilities.h
@@ -42,7 +42,7 @@
 // converted list as the argument if it is not empty, and runs |done_callback|.
 void ConvertPrinterListForCallback(
     const PrinterHandler::AddedPrintersCallback& callback,
-    const PrinterHandler::GetPrintersDoneCallback& done_callback,
+    PrinterHandler::GetPrintersDoneCallback done_callback,
     const printing::PrinterList& printer_list);
 
 // Returns a unique_ptr to a sanitized version of |cdd| to prevent possible JS
diff --git a/chrome/browser/ui/webui/print_preview/printer_handler.cc b/chrome/browser/ui/webui/print_preview/printer_handler.cc
index 9453617..43126964a 100644
--- a/chrome/browser/ui/webui/print_preview/printer_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/printer_handler.cc
@@ -52,12 +52,11 @@
 }
 #endif
 
-void PrinterHandler::GetDefaultPrinter(const DefaultPrinterCallback& cb) {
+void PrinterHandler::GetDefaultPrinter(DefaultPrinterCallback cb) {
   NOTREACHED();
 }
 
-void PrinterHandler::StartGrantPrinterAccess(
-    const std::string& printer_id,
-    const GetPrinterInfoCallback& callback) {
+void PrinterHandler::StartGrantPrinterAccess(const std::string& printer_id,
+                                             GetPrinterInfoCallback callback) {
   NOTREACHED();
 }
diff --git a/chrome/browser/ui/webui/print_preview/printer_handler.h b/chrome/browser/ui/webui/print_preview/printer_handler.h
index e9c96e2..96a2fcbc 100644
--- a/chrome/browser/ui/webui/print_preview/printer_handler.h
+++ b/chrome/browser/ui/webui/print_preview/printer_handler.h
@@ -41,10 +41,10 @@
 class PrinterHandler {
  public:
   using DefaultPrinterCallback =
-      base::Callback<void(const std::string& printer_name)>;
+      base::OnceCallback<void(const std::string& printer_name)>;
   using AddedPrintersCallback =
-      base::Callback<void(const base::ListValue& printers)>;
-  using GetPrintersDoneCallback = base::Closure;
+      base::RepeatingCallback<void(const base::ListValue& printers)>;
+  using GetPrintersDoneCallback = base::OnceClosure;
   // |capability| should contain a CDD with key printing::kSettingCapabilities.
   // It may also contain other information about the printer in a dictionary
   // with key printing::kPrinter.
@@ -54,11 +54,11 @@
   // If the dictionary with key printing::kSettingCapabilities is
   // empty, this indicates capabilities were retrieved but the printer does
   // not support any of the capability fields in a CDD.
-  using GetCapabilityCallback =
-      base::Callback<void(std::unique_ptr<base::DictionaryValue> capability)>;
-  using PrintCallback = base::Callback<void(const base::Value& error)>;
+  using GetCapabilityCallback = base::OnceCallback<void(
+      std::unique_ptr<base::DictionaryValue> capability)>;
+  using PrintCallback = base::OnceCallback<void(const base::Value& error)>;
   using GetPrinterInfoCallback =
-      base::Callback<void(const base::DictionaryValue& printer_info)>;
+      base::OnceCallback<void(const base::DictionaryValue& printer_info)>;
 
   // Creates an instance of a PrinterHandler for extension printers.
   static std::unique_ptr<PrinterHandler> CreateForExtensionPrinters(
@@ -86,7 +86,7 @@
 
   // Returns the name of the default printer through |cb|. Must be overridden
   // by implementations that expect this method to be called.
-  virtual void GetDefaultPrinter(const DefaultPrinterCallback& cb);
+  virtual void GetDefaultPrinter(DefaultPrinterCallback cb);
 
   // Starts getting available printers.
   // |added_printers_callback| should be called in the response when printers
@@ -95,13 +95,13 @@
   // |done_callback| must be called exactly once when the search is complete.
   virtual void StartGetPrinters(
       const AddedPrintersCallback& added_printers_callback,
-      const GetPrintersDoneCallback& done_callback) = 0;
+      GetPrintersDoneCallback done_callback) = 0;
 
   // Starts getting printing capability of the printer with the provided
   // destination ID.
   // |callback| should be called in the response to the request.
   virtual void StartGetCapability(const std::string& destination_id,
-                                  const GetCapabilityCallback& callback) = 0;
+                                  GetCapabilityCallback callback) = 0;
 
   // Starts granting access to the given provisional printer. The print handler
   // will respond with more information about the printer including its non-
@@ -109,7 +109,7 @@
   // this method to be called.
   // |callback| should be called in response to the request.
   virtual void StartGrantPrinterAccess(const std::string& printer_id,
-                                       const GetPrinterInfoCallback& callback);
+                                       GetPrinterInfoCallback callback);
 
   // Starts a print request.
   // |destination_id|: The printer to which print job should be sent.
@@ -127,7 +127,7 @@
       const std::string& ticket_json,
       const gfx::Size& page_size,
       const scoped_refptr<base::RefCountedBytes>& print_data,
-      const PrintCallback& callback) = 0;
+      PrintCallback callback) = 0;
 };
 
 #endif  // CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_PRINTER_HANDLER_H_
diff --git a/chrome/browser/ui/webui/print_preview/privet_printer_handler.cc b/chrome/browser/ui/webui/print_preview/privet_printer_handler.cc
index eba9d14..5816743 100644
--- a/chrome/browser/ui/webui/print_preview/privet_printer_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/privet_printer_handler.cc
@@ -54,31 +54,28 @@
   weak_ptr_factory_.InvalidateWeakPtrs();
   added_printers_callback_.Reset();
   if (done_callback_)
-    done_callback_.Run();
-  done_callback_.Reset();
+    std::move(done_callback_).Run();
 }
 
 void PrivetPrinterHandler::StartGetPrinters(
     const AddedPrintersCallback& added_printers_callback,
-    const GetPrintersDoneCallback& done_callback) {
+    GetPrintersDoneCallback done_callback) {
   using local_discovery::ServiceDiscoverySharedClient;
   scoped_refptr<ServiceDiscoverySharedClient> service_discovery =
       ServiceDiscoverySharedClient::GetInstance();
   DCHECK(!added_printers_callback_);
   DCHECK(!done_callback_);
   added_printers_callback_ = added_printers_callback;
-  done_callback_ = done_callback;
+  done_callback_ = std::move(done_callback);
   StartLister(service_discovery);
 }
 
-void PrivetPrinterHandler::StartGetCapability(
-    const std::string& destination_id,
-    const GetCapabilityCallback& callback) {
-  if (!CreateHTTP(destination_id,
-                  base::Bind(&PrivetPrinterHandler::CapabilitiesUpdateClient,
-                             weak_ptr_factory_.GetWeakPtr(), callback))) {
-    callback.Run(nullptr);
-  }
+void PrivetPrinterHandler::StartGetCapability(const std::string& destination_id,
+                                              GetCapabilityCallback callback) {
+  CreateHTTP(
+      destination_id,
+      base::BindOnce(&PrivetPrinterHandler::CapabilitiesUpdateClient,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
 }
 
 void PrivetPrinterHandler::StartPrint(
@@ -88,14 +85,12 @@
     const std::string& ticket_json,
     const gfx::Size& page_size,
     const scoped_refptr<base::RefCountedBytes>& print_data,
-    const PrintCallback& callback) {
-  if (!CreateHTTP(
-          destination_id,
-          base::Bind(&PrivetPrinterHandler::PrintUpdateClient,
-                     weak_ptr_factory_.GetWeakPtr(), callback, job_title,
-                     print_data, ticket_json, capability, page_size))) {
-    callback.Run(base::Value(-1));
-  }
+    PrintCallback callback) {
+  CreateHTTP(destination_id,
+             base::BindOnce(&PrivetPrinterHandler::PrintUpdateClient,
+                            weak_ptr_factory_.GetWeakPtr(), std::move(callback),
+                            job_title, print_data, ticket_json, capability,
+                            page_size));
 }
 
 void PrivetPrinterHandler::LocalPrinterChanged(
@@ -121,14 +116,14 @@
 void PrivetPrinterHandler::OnPrivetPrintingDone(
     const cloud_print::PrivetLocalPrintOperation* print_operation) {
   DCHECK(print_callback_);
-  print_callback_.Run(base::Value());
+  std::move(print_callback_).Run(base::Value());
 }
 
 void PrivetPrinterHandler::OnPrivetPrintingError(
     const cloud_print::PrivetLocalPrintOperation* print_operation,
     int http_code) {
   DCHECK(print_callback_);
-  print_callback_.Run(base::Value(http_code));
+  std::move(print_callback_).Run(base::Value(http_code));
 }
 
 void PrivetPrinterHandler::StartLister(
@@ -150,32 +145,31 @@
   privet_lister_timer_.reset();
   if (printer_lister_)
     printer_lister_->Stop();
-  done_callback_.Run();
+  std::move(done_callback_).Run();
   added_printers_callback_.Reset();
-  done_callback_.Reset();
 }
 
 void PrivetPrinterHandler::CapabilitiesUpdateClient(
-    const GetCapabilityCallback& callback,
+    GetCapabilityCallback callback,
     std::unique_ptr<cloud_print::PrivetHTTPClient> http_client) {
   if (!UpdateClient(std::move(http_client))) {
-    callback.Run(nullptr);
+    std::move(callback).Run(nullptr);
     return;
   }
 
   privet_capabilities_operation_ =
       privet_http_client_->CreateCapabilitiesOperation(
-          base::Bind(&PrivetPrinterHandler::OnGotCapabilities,
-                     weak_ptr_factory_.GetWeakPtr(), callback));
+          base::BindOnce(&PrivetPrinterHandler::OnGotCapabilities,
+                         weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
   privet_capabilities_operation_->Start();
 }
 
 void PrivetPrinterHandler::OnGotCapabilities(
-    const GetCapabilityCallback& callback,
+    GetCapabilityCallback callback,
     const base::DictionaryValue* capabilities) {
   if (!capabilities || capabilities->HasKey(cloud_print::kPrivetKeyError) ||
       !printer_lister_) {
-    callback.Run(nullptr);
+    std::move(callback).Run(nullptr);
     return;
   }
 
@@ -184,7 +178,7 @@
       printer_lister_->GetDeviceDescription(name);
 
   if (!description) {
-    callback.Run(nullptr);
+    std::move(callback).Run(nullptr);
     return;
   }
 
@@ -198,12 +192,13 @@
       capabilities->CreateDeepCopy();
   printer_info_and_caps.SetDictionary(printing::kSettingCapabilities,
                                       std::move(capabilities_copy));
-  callback.Run(printing::ValidateCddForPrintPreview(printer_info_and_caps));
+  std::move(callback).Run(
+      printing::ValidateCddForPrintPreview(printer_info_and_caps));
   privet_capabilities_operation_.reset();
 }
 
 void PrivetPrinterHandler::PrintUpdateClient(
-    const PrintCallback& callback,
+    PrintCallback callback,
     const base::string16& job_title,
     const scoped_refptr<base::RefCountedBytes>& print_data,
     const std::string& print_ticket,
@@ -211,10 +206,10 @@
     const gfx::Size& page_size,
     std::unique_ptr<cloud_print::PrivetHTTPClient> http_client) {
   if (!UpdateClient(std::move(http_client))) {
-    callback.Run(base::Value(-1));
+    std::move(callback).Run(base::Value(-1));
     return;
   }
-  print_callback_ = callback;
+  print_callback_ = std::move(callback);
   StartPrint(job_title, print_data, print_ticket, capabilities, page_size);
 }
 
@@ -260,21 +255,21 @@
   privet_local_print_operation_->Start();
 }
 
-bool PrivetPrinterHandler::CreateHTTP(
+void PrivetPrinterHandler::CreateHTTP(
     const std::string& name,
-    const cloud_print::PrivetHTTPAsynchronousFactory::ResultCallback&
-        callback) {
+    cloud_print::PrivetHTTPAsynchronousFactory::ResultCallback callback) {
   const cloud_print::DeviceDescription* device_description =
       printer_lister_ ? printer_lister_->GetDeviceDescription(name) : nullptr;
 
-  if (!device_description)
-    return false;
+  if (!device_description) {
+    std::move(callback).Run(nullptr);
+    return;
+  }
 
   privet_http_factory_ =
       cloud_print::PrivetHTTPAsynchronousFactory::CreateInstance(
           profile_->GetRequestContext());
   privet_http_resolution_ = privet_http_factory_->CreatePrivetHTTP(name);
-  privet_http_resolution_->Start(device_description->address, callback);
-
-  return true;
+  privet_http_resolution_->Start(device_description->address,
+                                 std::move(callback));
 }
diff --git a/chrome/browser/ui/webui/print_preview/privet_printer_handler.h b/chrome/browser/ui/webui/print_preview/privet_printer_handler.h
index e2f0f572..a919e13 100644
--- a/chrome/browser/ui/webui/print_preview/privet_printer_handler.h
+++ b/chrome/browser/ui/webui/print_preview/privet_printer_handler.h
@@ -39,9 +39,9 @@
   // PrinterHandler implementation:
   void Reset() override;
   void StartGetPrinters(const AddedPrintersCallback& added_printers_callback,
-                        const GetPrintersDoneCallback& done_callback) override;
+                        GetPrintersDoneCallback done_callback) override;
   void StartGetCapability(const std::string& destination_id,
-                          const GetCapabilityCallback& calback) override;
+                          GetCapabilityCallback calback) override;
   // TODO(tbarzic): It might make sense to have the strings in a single struct.
   void StartPrint(const std::string& destination_id,
                   const std::string& capability,
@@ -49,7 +49,7 @@
                   const std::string& ticket_json,
                   const gfx::Size& page_size,
                   const scoped_refptr<base::RefCountedBytes>& print_data,
-                  const PrintCallback& callback) override;
+                  PrintCallback callback) override;
 
   // PrivetLocalPrinterLister::Delegate implementation.
   void LocalPrinterChanged(
@@ -72,12 +72,12 @@
           client);
   void StopLister();
   void CapabilitiesUpdateClient(
-      const GetCapabilityCallback& callback,
+      GetCapabilityCallback callback,
       std::unique_ptr<cloud_print::PrivetHTTPClient> http_client);
-  void OnGotCapabilities(const GetCapabilityCallback& callback,
+  void OnGotCapabilities(GetCapabilityCallback callback,
                          const base::DictionaryValue* capabilities);
   void PrintUpdateClient(
-      const PrintCallback& callback,
+      PrintCallback callback,
       const base::string16& job_title,
       const scoped_refptr<base::RefCountedBytes>& print_data,
       const std::string& print_ticket,
@@ -90,10 +90,9 @@
                   const std::string& print_ticket,
                   const std::string& capabilities,
                   const gfx::Size& page_size);
-  bool CreateHTTP(
+  void CreateHTTP(
       const std::string& name,
-      const cloud_print::PrivetHTTPAsynchronousFactory::ResultCallback&
-          callback);
+      cloud_print::PrivetHTTPAsynchronousFactory::ResultCallback callback);
 
   Profile* profile_;
   scoped_refptr<local_discovery::ServiceDiscoverySharedClient>
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index 0ca1c046..2484b51 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -309,7 +309,8 @@
 // Enables the use of native notification centers instead of using the Message
 // Center for displaying the toasts.
 #if BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS)
-#if defined(OS_MACOSX) || defined(OS_ANDROID)
+#if defined(OS_MACOSX) || defined(OS_ANDROID) || \
+    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
 const base::Feature kNativeNotifications{"NativeNotifications",
                                          base::FEATURE_ENABLED_BY_DEFAULT};
 #else
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 4f157a9..c6c1682e 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -3234,6 +3234,7 @@
     "../browser/metrics/antivirus_metrics_provider_win_unittest.cc",
     "../browser/metrics/chrome_browser_main_extra_parts_metrics_unittest.cc",
     "../browser/metrics/chrome_metrics_service_accessor_unittest.cc",
+    "../browser/metrics/chrome_metrics_service_client_unittest.cc",
     "../browser/metrics/perf/perf_provider_chromeos_unittest.cc",
     "../browser/metrics/process_memory_metrics_emitter_unittest.cc",
     "../browser/metrics/subprocess_metrics_provider_unittest.cc",
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
index 388030b..de21d7a 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -165,6 +165,8 @@
         'ChromeDriverTest.testCanClickAlertInIframes',
         # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2081
         'ChromeDriverTest.testCloseWindowUsingJavascript',
+        # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2106
+        'ChromeDriverTest.testShadowDomFindElementFailsBetweenShadowRoots'
     ]
 )
 _ANDROID_NEGATIVE_FILTER['chrome_stable'] = (
diff --git a/chrome/utility/safe_browsing/mac/hfs.cc b/chrome/utility/safe_browsing/mac/hfs.cc
index 0258a7e..654a12f 100644
--- a/chrome/utility/safe_browsing/mac/hfs.cc
+++ b/chrome/utility/safe_browsing/mac/hfs.cc
@@ -246,6 +246,12 @@
     return false;
   }
 
+  if (volume_header_.blockSize == 0) {
+    DLOG(ERROR) << "Invalid volume header block size "
+                << volume_header_.blockSize;
+    return false;
+  }
+
   if (!ReadCatalogFile())
     return false;
 
diff --git a/chromecast/app/android/crash_handler.cc b/chromecast/app/android/crash_handler.cc
index 9297b057..365964d 100644
--- a/chromecast/app/android/crash_handler.cc
+++ b/chromecast/app/android/crash_handler.cc
@@ -87,25 +87,24 @@
 }
 
 void CrashHandler::InitializeUploader() {
-  JNIEnv* env = base::android::AttachCurrentThread();
-  base::android::ScopedJavaLocalRef<jstring> crash_dump_path_java =
-      base::android::ConvertUTF8ToJavaString(env, crash_dump_path_.value());
-  base::android::ScopedJavaLocalRef<jstring> uuid_java =
-      base::android::ConvertUTF8ToJavaString(env, "");
-  Java_CastCrashHandler_initializeUploader(env, crash_dump_path_java, uuid_java,
-                                           UploadCrashToStaging(), true);
+  CrashHandler::UploadDumps(crash_dump_path_, "", "", true);
 }
 
 // static
 void CrashHandler::UploadDumps(const base::FilePath& crash_dump_path,
-                               std::string uuid) {
+                               const std::string& uuid,
+                               const std::string& application_feedback,
+                               bool periodic_upload) {
   JNIEnv* env = base::android::AttachCurrentThread();
   base::android::ScopedJavaLocalRef<jstring> crash_dump_path_java =
       base::android::ConvertUTF8ToJavaString(env, crash_dump_path.value());
   base::android::ScopedJavaLocalRef<jstring> uuid_java =
       base::android::ConvertUTF8ToJavaString(env, uuid);
-  Java_CastCrashHandler_initializeUploader(env, crash_dump_path_java, uuid_java,
-                                           UploadCrashToStaging(), false);
+  base::android::ScopedJavaLocalRef<jstring> application_feedback_java =
+      base::android::ConvertUTF8ToJavaString(env, application_feedback);
+  Java_CastCrashHandler_initializeUploader(
+      env, crash_dump_path_java, uuid_java, application_feedback_java,
+      UploadCrashToStaging(), periodic_upload);
 }
 
 }  // namespace chromecast
diff --git a/chromecast/app/android/crash_handler.h b/chromecast/app/android/crash_handler.h
index 7c6c4cd..73006627 100644
--- a/chromecast/app/android/crash_handler.h
+++ b/chromecast/app/android/crash_handler.h
@@ -27,7 +27,9 @@
   // Returns the directory location for crash dumps.
   static bool GetCrashDumpLocation(base::FilePath* crash_dir);
   static void UploadDumps(const base::FilePath& crash_dump_path,
-                          std::string uuid);
+                          const std::string& uuid,
+                          const std::string& application_feedback,
+                          bool periodic_upload);
 
  private:
   CrashHandler(const std::string& process_type,
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashHandler.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashHandler.java
index 9636c688..51a7101 100644
--- a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashHandler.java
+++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashHandler.java
@@ -18,9 +18,9 @@
 
     @CalledByNative
     public static void initializeUploader(String crashDumpPath, String uuid,
-            boolean uploadCrashToStaging, boolean periodicUpload) {
+            String applicationFeedback, boolean uploadCrashToStaging, boolean periodicUpload) {
         CastCrashUploader uploader = CastCrashUploaderFactory.createCastCrashUploader(
-                crashDumpPath, uuid, uploadCrashToStaging);
+                crashDumpPath, uuid, applicationFeedback, uploadCrashToStaging);
         if (ChromecastConfigAndroid.canSendUsageStats()) {
             if (periodicUpload) {
                 uploader.startPeriodicUpload();
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashUploader.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashUploader.java
index 5e5866b..829fdc2 100644
--- a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashUploader.java
+++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashUploader.java
@@ -44,12 +44,15 @@
     private final String mCrashDumpPath;
     private final String mCrashReportUploadUrl;
     private final String mUuid;
+    private final String mApplicationFeedback;
 
     public CastCrashUploader(ScheduledExecutorService executorService, String crashDumpPath,
-            String uuid, boolean uploadCrashToStaging) {
+            String uuid, String applicationFeedback, boolean uploadCrashToStaging) {
         mExecutorService = executorService;
         mCrashDumpPath = crashDumpPath;
         mUuid = uuid;
+        mApplicationFeedback = applicationFeedback;
+
         mCrashReportUploadUrl = uploadCrashToStaging
                 ? "https://clients2.google.com/cr/staging_report"
                 : "https://clients2.google.com/cr/report";
@@ -147,6 +150,7 @@
         try {
             InputStream uploadCrashDumpStream = new FileInputStream(dumpFile);
             InputStream logFileStream = null;
+            InputStream feedbackStream = null;
 
             // Dump file is already in multipart MIME format and has a boundary throughout.
             // Scrape the first line, remove two dashes, call that the "boundary" and add it
@@ -161,11 +165,10 @@
                 logHeader.append(dumpFirstLine);
                 logHeader.append("\n");
                 logHeader.append(
-                        "Content-Disposition: form-data; name=\"log\"; filename=\"log\"\n");
+                        "Content-Disposition: form-data; name=\"log.txt\"; filename=\"log.txt\"\n");
                 logHeader.append("Content-Type: text/plain\n\n");
                 InputStream logHeaderStream =
                         new ByteArrayInputStream(logHeader.toString().getBytes());
-                // logFileStream = new FileInputStream(logFile);
                 logFileStream = new ByteArrayInputStream(log.getBytes());
                 // Upload: prepend the log file for uploading
                 uploadCrashDumpStream = new SequenceInputStream(
@@ -186,6 +189,23 @@
                         uploadCrashDumpStream);
             }
 
+            if (!mApplicationFeedback.equals("")) {
+                Log.i(TAG, "Including feedback");
+                StringBuilder feedbackHeader = new StringBuilder();
+                feedbackHeader.append(dumpFirstLine);
+                feedbackHeader.append("\n");
+                feedbackHeader.append(
+                        "Content-Disposition: form-data; name=\"application_feedback.txt\"; filename=\"application.txt\"\n");
+                feedbackHeader.append("Content-Type: text/plain\n\n");
+                InputStream feedbackHeaderStream =
+                        new ByteArrayInputStream(feedbackHeader.toString().getBytes());
+                feedbackStream = new ByteArrayInputStream(mApplicationFeedback.getBytes());
+                // Upload: prepend the log file for uploading
+                uploadCrashDumpStream = new SequenceInputStream(
+                        new SequenceInputStream(feedbackHeaderStream, feedbackStream),
+                        uploadCrashDumpStream);
+            }
+
             HttpURLConnection connection =
                     (HttpURLConnection) new URL(mCrashReportUploadUrl).openConnection();
 
@@ -225,6 +245,9 @@
                 if (logFileStream != null) {
                     logFileStream.close();
                 }
+                if (feedbackStream != null) {
+                    feedbackStream.close();
+                }
             }
 
             // Delete the file so we don't re-upload it next time.
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashUploaderFactory.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashUploaderFactory.java
index 687181f..25a4665 100644
--- a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashUploaderFactory.java
+++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastCrashUploaderFactory.java
@@ -14,11 +14,12 @@
 public final class CastCrashUploaderFactory {
     private static ScheduledExecutorService sExecutorService = null;
 
-    public static CastCrashUploader createCastCrashUploader(
-            String crashDumpPath, String uuid, boolean uploadCrashToStaging) {
+    public static CastCrashUploader createCastCrashUploader(String crashDumpPath, String uuid,
+            String applicationFeedback, boolean uploadCrashToStaging) {
         if (sExecutorService == null) {
             sExecutorService = Executors.newScheduledThreadPool(1);
         }
-        return new CastCrashUploader(sExecutorService, crashDumpPath, uuid, uploadCrashToStaging);
+        return new CastCrashUploader(
+                sExecutorService, crashDumpPath, uuid, applicationFeedback, uploadCrashToStaging);
     }
 }
diff --git a/chromecast/media/cma/backend/fuchsia/BUILD.gn b/chromecast/media/cma/backend/fuchsia/BUILD.gn
index 5a32751..384ad369 100644
--- a/chromecast/media/cma/backend/fuchsia/BUILD.gn
+++ b/chromecast/media/cma/backend/fuchsia/BUILD.gn
@@ -24,6 +24,8 @@
     "//chromecast/public/media",
     "//media",
   ]
+
+  libs = [ "media_client" ]
 }
 
 source_set("unit_tests") {
diff --git a/chromecast/public/avsettings.h b/chromecast/public/avsettings.h
index 6d55bec7..3ada73f 100644
--- a/chromecast/public/avsettings.h
+++ b/chromecast/public/avsettings.h
@@ -151,6 +151,9 @@
     // specification (CEC Table 30 in the HDMI 1.4a specification).
     virtual void OnKeyPressed(int key_code) = 0;
 
+    // This should be invoked when a key is released.
+    virtual void OnKeyReleased(int key_code) = 0;
+
    protected:
     ~Delegate() override {}
   };
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index a3d86a39..371b60c 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-10041.0.0
+10070.0.0
diff --git a/chromeos/dbus/fake_image_loader_client.cc b/chromeos/dbus/fake_image_loader_client.cc
index 6e22504..1af9ea7f 100644
--- a/chromeos/dbus/fake_image_loader_client.cc
+++ b/chromeos/dbus/fake_image_loader_client.cc
@@ -10,7 +10,6 @@
 
 namespace chromeos {
 
-// ImageLoaderClient override:
 void FakeImageLoaderClient::RegisterComponent(
     const std::string& name,
     const std::string& version,
@@ -18,11 +17,18 @@
     DBusMethodCallback<bool> callback) {
   std::move(callback).Run(base::nullopt);
 }
+
 void FakeImageLoaderClient::LoadComponent(
     const std::string& name,
     DBusMethodCallback<std::string> callback) {
   std::move(callback).Run(base::nullopt);
 }
+
+void FakeImageLoaderClient::RemoveComponent(const std::string& name,
+                                            DBusMethodCallback<bool> callback) {
+  std::move(callback).Run(base::nullopt);
+}
+
 void FakeImageLoaderClient::RequestComponentVersion(
     const std::string& name,
     DBusMethodCallback<std::string> callback) {
diff --git a/chromeos/dbus/fake_image_loader_client.h b/chromeos/dbus/fake_image_loader_client.h
index e9a60fd..81c58c8 100644
--- a/chromeos/dbus/fake_image_loader_client.h
+++ b/chromeos/dbus/fake_image_loader_client.h
@@ -28,6 +28,8 @@
                          DBusMethodCallback<bool> callback) override;
   void LoadComponent(const std::string& name,
                      DBusMethodCallback<std::string> callback) override;
+  void RemoveComponent(const std::string& name,
+                       DBusMethodCallback<bool> callback) override;
   void RequestComponentVersion(
       const std::string& name,
       DBusMethodCallback<std::string> callback) override;
diff --git a/chromeos/dbus/image_loader_client.cc b/chromeos/dbus/image_loader_client.cc
index 2ac9b972..5454b080 100644
--- a/chromeos/dbus/image_loader_client.cc
+++ b/chromeos/dbus/image_loader_client.cc
@@ -51,6 +51,17 @@
                                       std::move(callback)));
   }
 
+  void RemoveComponent(const std::string& name,
+                       DBusMethodCallback<bool> callback) override {
+    dbus::MethodCall method_call(imageloader::kImageLoaderServiceInterface,
+                                 imageloader::kRemoveComponent);
+    dbus::MessageWriter writer(&method_call);
+    writer.AppendString(name);
+    proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
+                       base::BindOnce(&ImageLoaderClientImpl::OnBoolMethod,
+                                      std::move(callback)));
+  }
+
   void RequestComponentVersion(
       const std::string& name,
       DBusMethodCallback<std::string> callback) override {
diff --git a/chromeos/dbus/image_loader_client.h b/chromeos/dbus/image_loader_client.h
index 594ed89..aa76add 100644
--- a/chromeos/dbus/image_loader_client.h
+++ b/chromeos/dbus/image_loader_client.h
@@ -38,6 +38,10 @@
       const std::string& name,
       DBusMethodCallback<std::string> callback) = 0;
 
+  // Removes a component and returns true (if call is successful).
+  virtual void RemoveComponent(const std::string& name,
+                               DBusMethodCallback<bool> callback) = 0;
+
   // Factory function, creates a new instance and returns ownership.
   // For normal usage, access the singleton via DBusThreadManager::Get().
   static ImageLoaderClient* Create();
diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUma.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUma.java
index 34778d6..4b40d1d 100644
--- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUma.java
+++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUma.java
@@ -29,8 +29,9 @@
     static final int BACKGROUND_TASK_DOWNLOAD_CLEANUP = 9;
     static final int BACKGROUND_TASK_WEBVIEW_VARIATIONS = 10;
     static final int BACKGROUND_TASK_OFFLINE_CONTENT_NOTIFICATION = 11;
+    static final int BACKGROUND_TASK_WEBAPK_UPDATE = 12;
     // Keep this one at the end and increment appropriately when adding new tasks.
-    static final int BACKGROUND_TASK_COUNT = 12;
+    static final int BACKGROUND_TASK_COUNT = 13;
 
     static final String KEY_CACHED_UMA = "bts_cached_uma";
 
@@ -234,6 +235,8 @@
                 return BACKGROUND_TASK_WEBVIEW_VARIATIONS;
             case TaskIds.OFFLINE_PAGES_PREFETCH_NOTIFICATION_JOB_ID:
                 return BACKGROUND_TASK_OFFLINE_CONTENT_NOTIFICATION;
+            case TaskIds.WEBAPK_UPDATE_JOB_ID:
+                return BACKGROUND_TASK_WEBAPK_UPDATE;
             default:
                 assert false;
         }
diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/TaskIds.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/TaskIds.java
index 790c42e..157ab19 100644
--- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/TaskIds.java
+++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/TaskIds.java
@@ -24,6 +24,7 @@
     public static final int DOWNLOAD_SERVICE_JOB_ID = 53;
     public static final int DOWNLOAD_CLEANUP_JOB_ID = 54;
     public static final int WEBVIEW_VARIATIONS_SEED_FETCH_JOB_ID = 83;
+    public static final int WEBAPK_UPDATE_JOB_ID = 91;
 
     private TaskIds() {}
 }
diff --git a/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUmaTest.java b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUmaTest.java
index 98002212..ce6cfd8 100644
--- a/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUmaTest.java
+++ b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUmaTest.java
@@ -79,7 +79,9 @@
         assertEquals(BackgroundTaskSchedulerUma.BACKGROUND_TASK_OFFLINE_CONTENT_NOTIFICATION,
                 BackgroundTaskSchedulerUma.toUmaEnumValueFromTaskId(
                         TaskIds.OFFLINE_PAGES_PREFETCH_NOTIFICATION_JOB_ID));
-        assertEquals(BackgroundTaskSchedulerUma.BACKGROUND_TASK_COUNT, 12);
+        assertEquals(BackgroundTaskSchedulerUma.BACKGROUND_TASK_WEBAPK_UPDATE,
+                BackgroundTaskSchedulerUma.toUmaEnumValueFromTaskId(TaskIds.WEBAPK_UPDATE_JOB_ID));
+        assertEquals(BackgroundTaskSchedulerUma.BACKGROUND_TASK_COUNT, 13);
     }
 
     @Test
diff --git a/components/domain_reliability/monitor.cc b/components/domain_reliability/monitor.cc
index 0276618..87c969d 100644
--- a/components/domain_reliability/monitor.cc
+++ b/components/domain_reliability/monitor.cc
@@ -139,6 +139,7 @@
 
 void DomainReliabilityMonitor::InitURLRequestContext(
     net::URLRequestContext* url_request_context) {
+  DCHECK(url_request_context);
   DCHECK(OnNetworkThread());
   DCHECK(moved_to_network_thread_);
 
diff --git a/components/download/internal/debugging_client.h b/components/download/internal/debugging_client.h
index 70e8832..8e76947 100644
--- a/components/download/internal/debugging_client.h
+++ b/components/download/internal/debugging_client.h
@@ -2,6 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#ifndef COMPONENTS_DOWNLOAD_INTERNAL_DEBUGGING_CLIENT_H_
+#define COMPONENTS_DOWNLOAD_INTERNAL_DEBUGGING_CLIENT_H_
+
 #include "base/macros.h"
 #include "components/download/public/client.h"
 
@@ -36,3 +39,5 @@
 };
 
 }  // namespace download
+
+#endif  // COMPONENTS_DOWNLOAD_INTERNAL_DEBUGGING_CLIENT_H_
diff --git a/components/feature_engagement/README.md b/components/feature_engagement/README.md
index ad61f67..f5c8008b 100644
--- a/components/feature_engagement/README.md
+++ b/components/feature_engagement/README.md
@@ -219,6 +219,20 @@
 *   `NOT_READY`: `Tracker` not fully initialized yet, so it is unable to
     inspect the state.
 
+#### Inspecting whether IPH would have been triggered for a feature
+
+Another way to check the internal state of the `Tracker` is to invoke
+`feature_engagement::Tracker::WouldTriggerHelpUI` which is basically the same as
+invoking `feature_engagement::Tracker::ShouldTriggerHelpUI`, but being allowed
+to ignore the state. It is still required to invoke
+`feature_engagement::Tracker::ShouldTriggerHelpUI` if in-product help should be
+shown.
+
+> **WARNING: It is not guaranteed that invoking `ShouldTriggerHelpUI(...)`
+> after this would yield the same result.** The state might change
+> in-between the calls because time has passed, other events might have been
+> triggered, and other state might have changed.
+
 ### Configuring UMA
 
 To enable UMA tracking, you need to make the following changes to the metrics
diff --git a/components/feature_engagement/internal/android/java/src/org/chromium/components/feature_engagement/internal/TrackerImpl.java b/components/feature_engagement/internal/android/java/src/org/chromium/components/feature_engagement/internal/TrackerImpl.java
index 9823df4..cb38094 100644
--- a/components/feature_engagement/internal/android/java/src/org/chromium/components/feature_engagement/internal/TrackerImpl.java
+++ b/components/feature_engagement/internal/android/java/src/org/chromium/components/feature_engagement/internal/TrackerImpl.java
@@ -43,6 +43,12 @@
     }
 
     @Override
+    public boolean wouldTriggerHelpUI(String feature) {
+        assert mNativePtr != 0;
+        return nativeWouldTriggerHelpUI(mNativePtr, feature);
+    }
+
+    @Override
     @TriggerState
     public int getTriggerState(String feature) {
         assert mNativePtr != 0;
@@ -80,6 +86,7 @@
 
     private native void nativeNotifyEvent(long nativeTrackerImplAndroid, String event);
     private native boolean nativeShouldTriggerHelpUI(long nativeTrackerImplAndroid, String feature);
+    private native boolean nativeWouldTriggerHelpUI(long nativeTrackerImplAndroid, String feature);
     @TriggerState
     private native int nativeGetTriggerState(long nativeTrackerImplAndroid, String feature);
     private native void nativeDismissed(long nativeTrackerImplAndroid, String feature);
diff --git a/components/feature_engagement/internal/android/tracker_impl_android.cc b/components/feature_engagement/internal/android/tracker_impl_android.cc
index 0dc6aab..d8da12a5 100644
--- a/components/feature_engagement/internal/android/tracker_impl_android.cc
+++ b/components/feature_engagement/internal/android/tracker_impl_android.cc
@@ -100,6 +100,16 @@
   return tracker_impl_->ShouldTriggerHelpUI(*features_[feature]);
 }
 
+bool TrackerImplAndroid::WouldTriggerHelpUI(
+    JNIEnv* env,
+    const base::android::JavaRef<jobject>& jobj,
+    const base::android::JavaParamRef<jstring>& jfeature) {
+  std::string feature = ConvertJavaStringToUTF8(env, jfeature);
+  DCHECK(features_.find(feature) != features_.end());
+
+  return tracker_impl_->WouldTriggerHelpUI(*features_[feature]);
+}
+
 jint TrackerImplAndroid::GetTriggerState(
     JNIEnv* env,
     const base::android::JavaRef<jobject>& jobj,
diff --git a/components/feature_engagement/internal/android/tracker_impl_android.h b/components/feature_engagement/internal/android/tracker_impl_android.h
index f429a1f..4fd9746 100644
--- a/components/feature_engagement/internal/android/tracker_impl_android.h
+++ b/components/feature_engagement/internal/android/tracker_impl_android.h
@@ -46,6 +46,10 @@
       JNIEnv* env,
       const base::android::JavaRef<jobject>& jobj,
       const base::android::JavaParamRef<jstring>& jfeature);
+  virtual bool WouldTriggerHelpUI(
+      JNIEnv* env,
+      const base::android::JavaRef<jobject>& jobj,
+      const base::android::JavaParamRef<jstring>& jfeature);
   virtual jint GetTriggerState(
       JNIEnv* env,
       const base::android::JavaRef<jobject>& jobj,
diff --git a/components/feature_engagement/internal/tracker_impl.cc b/components/feature_engagement/internal/tracker_impl.cc
index 44ff3f9..664dd17 100644
--- a/components/feature_engagement/internal/tracker_impl.cc
+++ b/components/feature_engagement/internal/tracker_impl.cc
@@ -191,8 +191,20 @@
   return result.NoErrors() && !feature_config.tracking_only;
 }
 
+bool TrackerImpl::WouldTriggerHelpUI(const base::Feature& feature) const {
+  FeatureConfig feature_config = configuration_->GetFeatureConfig(feature);
+  ConditionValidator::Result result = condition_validator_->MeetsConditions(
+      feature, feature_config, *event_model_, *availability_model_,
+      time_provider_->GetCurrentDay());
+  DVLOG(2) << "Would trigger result for " << feature.name
+           << ": trigger=" << result.NoErrors()
+           << " tracking_only=" << feature_config.tracking_only << " "
+           << result;
+  return result.NoErrors() && !feature_config.tracking_only;
+}
+
 Tracker::TriggerState TrackerImpl::GetTriggerState(
-    const base::Feature& feature) {
+    const base::Feature& feature) const {
   if (!IsInitialized()) {
     DVLOG(2) << "TriggerState for " << feature.name << ": "
              << static_cast<int>(Tracker::TriggerState::NOT_READY);
@@ -220,7 +232,7 @@
   stats::RecordUserDismiss();
 }
 
-bool TrackerImpl::IsInitialized() {
+bool TrackerImpl::IsInitialized() const {
   return event_model_->IsReady() && availability_model_->IsReady();
 }
 
diff --git a/components/feature_engagement/internal/tracker_impl.h b/components/feature_engagement/internal/tracker_impl.h
index c9d37023..6b85a43 100644
--- a/components/feature_engagement/internal/tracker_impl.h
+++ b/components/feature_engagement/internal/tracker_impl.h
@@ -5,6 +5,7 @@
 #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_TRACKER_IMPL_H_
 #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_TRACKER_IMPL_H_
 
+#include <memory>
 #include <string>
 #include <vector>
 
@@ -34,9 +35,11 @@
   // Tracker implementation.
   void NotifyEvent(const std::string& event) override;
   bool ShouldTriggerHelpUI(const base::Feature& feature) override;
-  Tracker::TriggerState GetTriggerState(const base::Feature& feature) override;
+  bool WouldTriggerHelpUI(const base::Feature& feature) const override;
+  Tracker::TriggerState GetTriggerState(
+      const base::Feature& feature) const override;
   void Dismissed(const base::Feature& feature) override;
-  bool IsInitialized() override;
+  bool IsInitialized() const override;
   void AddOnInitializedCallback(OnInitializedCallback callback) override;
 
  private:
diff --git a/components/feature_engagement/internal/tracker_impl_unittest.cc b/components/feature_engagement/internal/tracker_impl_unittest.cc
index 8544ebdb..8d3fc84 100644
--- a/components/feature_engagement/internal/tracker_impl_unittest.cc
+++ b/components/feature_engagement/internal/tracker_impl_unittest.cc
@@ -273,9 +273,11 @@
         expected_bar_success_tracking_only_count +
         expected_baz_success_tracking_only_count +
         expected_qux_success_tracking_only_count;
-    VerifyHistogramsForFeature(
-        "InProductHelp.ShouldTriggerHelpUI", true, expected_total_successes,
-        expected_total_failures, expected_total_success_tracking_onlys);
+    bool should_check = check_foo || check_bar || check_baz || check_qux;
+    VerifyHistogramsForFeature("InProductHelp.ShouldTriggerHelpUI",
+                               should_check, expected_total_successes,
+                               expected_total_failures,
+                               expected_total_success_tracking_onlys);
   }
 
   void VerifyUserActionsTriggerChecks(
@@ -684,6 +686,62 @@
                    0);
 }
 
+TEST_F(TrackerImplTest, TestWouldTriggerInspection) {
+  // Ensure all initialization is finished.
+  StoringInitializedCallback callback;
+  tracker_->AddOnInitializedCallback(base::Bind(
+      &StoringInitializedCallback::OnInitialized, base::Unretained(&callback)));
+  base::RunLoop().RunUntilIdle();
+  base::UserActionTester user_action_tester;
+
+  // Initially, both foo and bar would have been shown.
+  EXPECT_TRUE(tracker_->WouldTriggerHelpUI(kTestFeatureFoo));
+  EXPECT_TRUE(tracker_->WouldTriggerHelpUI(kTestFeatureBar));
+  EXPECT_FALSE(tracker_->WouldTriggerHelpUI(kTestFeatureQux));
+  VerifyEventTriggerEvents(kTestFeatureFoo, 0u);
+  VerifyEventTriggerEvents(kTestFeatureBar, 0u);
+  VerifyEventTriggerEvents(kTestFeatureQux, 0u);
+  VerifyUserActionsTriggerChecks(user_action_tester, 0, 0, 0, 0);
+  VerifyUserActionsTriggered(user_action_tester, 0, 0, 0, 0);
+  VerifyUserActionsNotTriggered(user_action_tester, 0, 0, 0, 0);
+  VerifyUserActionsWouldHaveTriggered(user_action_tester, 0, 0, 0, 0);
+  VerifyUserActionsDismissed(user_action_tester, 0);
+  VerifyHistograms(false, 0, 0, 0, false, 0, 0, 0, false, 0, 0, 0, false, 0, 0,
+                   0);
+
+  // While foo shows, nothing else would have been shown.
+  EXPECT_TRUE(tracker_->ShouldTriggerHelpUI(kTestFeatureFoo));
+  EXPECT_FALSE(tracker_->WouldTriggerHelpUI(kTestFeatureFoo));
+  EXPECT_FALSE(tracker_->WouldTriggerHelpUI(kTestFeatureBar));
+  EXPECT_FALSE(tracker_->WouldTriggerHelpUI(kTestFeatureQux));
+  VerifyEventTriggerEvents(kTestFeatureFoo, 1);
+  VerifyUserActionsTriggerChecks(user_action_tester, 1, 0, 0, 0);
+  VerifyUserActionsTriggered(user_action_tester, 1, 0, 0, 0);
+  VerifyUserActionsNotTriggered(user_action_tester, 0, 0, 0, 0);
+  VerifyUserActionsWouldHaveTriggered(user_action_tester, 0, 0, 0, 0);
+  VerifyUserActionsDismissed(user_action_tester, 0);
+  VerifyHistograms(true, 1, 0, 0, false, 0, 0, 0, false, 0, 0, 0, false, 0, 0,
+                   0);
+
+  // After foo has been dismissed, it would not have triggered again, but bar
+  // would have.
+  tracker_->Dismissed(kTestFeatureFoo);
+  EXPECT_FALSE(tracker_->WouldTriggerHelpUI(kTestFeatureFoo));
+  EXPECT_FALSE(tracker_->ShouldTriggerHelpUI(kTestFeatureFoo));
+  EXPECT_TRUE(tracker_->WouldTriggerHelpUI(kTestFeatureBar));
+  EXPECT_TRUE(tracker_->ShouldTriggerHelpUI(kTestFeatureBar));
+  EXPECT_FALSE(tracker_->WouldTriggerHelpUI(kTestFeatureQux));
+  VerifyEventTriggerEvents(kTestFeatureFoo, 1);
+  VerifyEventTriggerEvents(kTestFeatureBar, 1);
+  VerifyUserActionsTriggerChecks(user_action_tester, 2, 1, 0, 0);
+  VerifyUserActionsTriggered(user_action_tester, 1, 1, 0, 0);
+  VerifyUserActionsNotTriggered(user_action_tester, 1, 0, 0, 0);
+  VerifyUserActionsWouldHaveTriggered(user_action_tester, 0, 0, 0, 0);
+  VerifyUserActionsDismissed(user_action_tester, 1);
+  VerifyHistograms(true, 1, 1, 0, true, 1, 0, 0, false, 0, 0, 0, false, 0, 0,
+                   0);
+}
+
 TEST_F(TrackerImplTest, TestTriggerStateInspection) {
   // Before initialization has finished, NOT_READY should always be returned.
   EXPECT_EQ(Tracker::TriggerState::NOT_READY,
diff --git a/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/Tracker.java b/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/Tracker.java
index 5e7795d3..7cadbc5 100644
--- a/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/Tracker.java
+++ b/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/Tracker.java
@@ -23,14 +23,33 @@
     /**
      * This function must be called whenever the triggering condition for a specific feature
      * happens. Returns true iff the display of the in-product help must happen.
-     * If {@code true} is returned, the caller *must* call {@link #dismissed()} when display
+     * If {@code true} is returned, the caller *must* call {@link #dismissed(String)} when display
      * of feature enlightenment ends.
+     *
      * @return whether feature enlightenment should be displayed.
      */
     @CheckResult
     boolean shouldTriggerHelpUI(String feature);
 
     /**
+     * Invoking this is basically the same as being allowed to invoke {@link
+     * #shouldTriggerHelpUI(String)} without requiring to show the in-product help. This function
+     * may be called to inspect if the current state would allow the given {@code feature} to pass
+     * all its conditions and display the feature enlightenment.
+     *
+     * NOTE: It is still required to invoke ShouldTriggerHelpUI(...) if feature enlightenment should
+     * be shown.
+     *
+     * NOTE: It is not guaranteed that invoking {@link #shouldTriggerHelpUI(String)} after this
+     * would yield the same result. The state might change in-between the calls because time has
+     * passed, other events might have been triggered, and other state might have changed.
+     *
+     * @return whether feature enlightenment would be displayed if {@link
+     * #shouldTriggerHelpUI(String)} had been invoked instead.
+     */
+    boolean wouldTriggerHelpUI(String feature);
+
+    /**
      * This function can be called to query if a particular |feature| meets its particular
      * precondition for triggering within the bounds of the current feature configuration.
      * Calling this method requires the {@link Tracker} to already have been initialized.
diff --git a/components/feature_engagement/public/tracker.h b/components/feature_engagement/public/tracker.h
index 22040a5..7819417 100644
--- a/components/feature_engagement/public/tracker.h
+++ b/components/feature_engagement/public/tracker.h
@@ -64,11 +64,26 @@
   // This function must be called whenever the triggering condition for a
   // specific feature happens. Returns true iff the display of the in-product
   // help must happen.
-  // If |true| is returned, the caller *must* call Dismissed() when display
+  // If |true| is returned, the caller *must* call Dismissed(...) when display
   // of feature enlightenment ends.
   virtual bool ShouldTriggerHelpUI(const base::Feature& feature)
       WARN_UNUSED_RESULT = 0;
 
+  // Invoking this is basically the same as being allowed to invoke
+  // ShouldTriggerHelpUI(...) without requiring to show the in-product help.
+  // This function may be called to inspect if the current state would allow the
+  // given |feature| to pass all its conditions and display the feature
+  // enlightenment.
+  //
+  // NOTE: It is still required to invoke ShouldTriggerHelpUI(...) if feature
+  // enlightenment should be shown.
+  //
+  // NOTE: It is not guaranteed that invoking ShouldTriggerHelpUI(...)
+  // after this would yield the same result. The state might change
+  // in-between the calls because time has passed, other events might have been
+  // triggered, and other state might have changed.
+  virtual bool WouldTriggerHelpUI(const base::Feature& feature) const = 0;
+
   // This function can be called to query if a particular |feature| meets its
   // particular precondition for triggering within the bounds of the current
   // feature configuration.
@@ -78,7 +93,7 @@
   // This function can typically be used to ensure that expensive operations
   // for tracking other state related to in-product help do not happen if
   // in-product help has already been displayed for the given |feature|.
-  virtual TriggerState GetTriggerState(const base::Feature& feature) = 0;
+  virtual TriggerState GetTriggerState(const base::Feature& feature) const = 0;
 
   // Must be called after display of feature enlightenment finishes for a
   // particular |feature|.
@@ -90,7 +105,7 @@
   // state will never change from initialized to uninitialized.
   // Callers can invoke AddOnInitializedCallback(...) to be notified when the
   // result of the initialization is ready.
-  virtual bool IsInitialized() = 0;
+  virtual bool IsInitialized() const = 0;
 
   // For features that trigger on startup, they can register a callback to
   // ensure that they are informed when the tracker has finished the
diff --git a/components/feature_engagement/test/BUILD.gn b/components/feature_engagement/test/BUILD.gn
index 1c9986b..c9ce1d6 100644
--- a/components/feature_engagement/test/BUILD.gn
+++ b/components/feature_engagement/test/BUILD.gn
@@ -6,6 +6,8 @@
   testonly = true
 
   sources = [
+    "mock_tracker.cc",
+    "mock_tracker.h",
     "test_tracker.cc",
     "test_tracker.h",
   ]
@@ -14,5 +16,6 @@
     "//base",
     "//components/feature_engagement/internal",
     "//components/feature_engagement/public",
+    "//testing/gmock",
   ]
 }
diff --git a/components/feature_engagement/test/mock_tracker.cc b/components/feature_engagement/test/mock_tracker.cc
new file mode 100644
index 0000000..46840d1d
--- /dev/null
+++ b/components/feature_engagement/test/mock_tracker.cc
@@ -0,0 +1,14 @@
+// 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/feature_engagement/test/mock_tracker.h"
+
+namespace feature_engagement {
+namespace test {
+
+MockTracker::MockTracker() = default;
+MockTracker::~MockTracker() = default;
+
+}  // namespace test
+}  // namespace feature_engagement
diff --git a/components/feature_engagement/test/mock_tracker.h b/components/feature_engagement/test/mock_tracker.h
new file mode 100644
index 0000000..a368241c
--- /dev/null
+++ b/components/feature_engagement/test/mock_tracker.h
@@ -0,0 +1,37 @@
+// 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_FEATURE_ENGAGEMENT_TEST_MOCK_TRACKER_H_
+#define COMPONENTS_FEATURE_ENGAGEMENT_TEST_MOCK_TRACKER_H_
+
+#include "base/macros.h"
+#include "components/feature_engagement/public/tracker.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace feature_engagement {
+namespace test {
+
+class MockTracker : public Tracker {
+ public:
+  MockTracker();
+  ~MockTracker() override;
+
+  // Tracker implememtation.
+  MOCK_METHOD1(NotifyEvent, void(const std::string& event));
+  MOCK_METHOD1(ShouldTriggerHelpUI, bool(const base::Feature& feature));
+  MOCK_CONST_METHOD1(WouldTriggerHelpUI, bool(const base::Feature& feature));
+  MOCK_CONST_METHOD1(GetTriggerState,
+                     Tracker::TriggerState(const base::Feature& feature));
+  MOCK_METHOD1(Dismissed, void(const base::Feature& feature));
+  MOCK_CONST_METHOD0(IsInitialized, bool());
+  MOCK_METHOD1(AddOnInitializedCallback, void(OnInitializedCallback callback));
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(MockTracker);
+};
+
+}  // namespace test
+}  // namespace feature_engagement
+
+#endif  // COMPONENTS_FEATURE_ENGAGEMENT_TEST_MOCK_TRACKER_H_
diff --git a/components/infobars/core/infobar_delegate.h b/components/infobars/core/infobar_delegate.h
index c1d3a81a..823dd3c 100644
--- a/components/infobars/core/infobar_delegate.h
+++ b/components/infobars/core/infobar_delegate.h
@@ -146,6 +146,7 @@
     VR_FEEDBACK_INFOBAR_ANDROID = 76,
     FRAMEBUST_BLOCK_INFOBAR_ANDROID = 77,
     SURVEY_INFOBAR_ANDROID = 78,
+    NEAR_OOM_INFOBAR_ANDROID = 79,
   };
 
   // Describes navigation events, used to decide whether infobars should be
diff --git a/components/metrics/file_metrics_provider.cc b/components/metrics/file_metrics_provider.cc
index a0f5cef7..b647bc3 100644
--- a/components/metrics/file_metrics_provider.cc
+++ b/components/metrics/file_metrics_provider.cc
@@ -342,7 +342,8 @@
     }
 
     // Record the result. Success will be recorded by the caller.
-    RecordAccessResult(result);
+    if (result != ACCESS_RESULT_THIS_PID)
+      RecordAccessResult(result);
     found_files.erase(found_files.begin());
   }
 
@@ -387,7 +388,8 @@
 
     // Some results are not reported in order to keep the dashboard clean.
     if (result != ACCESS_RESULT_DOESNT_EXIST &&
-        result != ACCESS_RESULT_NOT_MODIFIED) {
+        result != ACCESS_RESULT_NOT_MODIFIED &&
+        result != ACCESS_RESULT_THIS_PID) {
       RecordAccessResult(result);
     }
 
@@ -540,16 +542,24 @@
   // Alternatively, pass a Params object to the filter like what was originally
   // used to configure the source.
   // Params params(path, source->type, source->association, source->prefs_key);
-  switch (source->filter.Run(path)) {
+  FilterAction action = source->filter.Run(path);
+  switch (action) {
     case FILTER_PROCESS_FILE:
       // Process the file.
       return ACCESS_RESULT_SUCCESS;
 
+    case FILTER_ACTIVE_THIS_PID:
+    // Even the file for the current process has to be touched or its stamp
+    // will be less than "last processed" and thus skipped on future runs,
+    // even those done by new instances of the browser if a pref key is
+    // provided so that the last-uploaded stamp is recorded.
     case FILTER_TRY_LATER: {
       // Touch the file with the current timestamp making it (presumably) the
       // newest file in the directory.
       base::Time now = base::Time::Now();
       base::TouchFile(path, /*accessed=*/now, /*modified=*/now);
+      if (action == FILTER_ACTIVE_THIS_PID)
+        return ACCESS_RESULT_THIS_PID;
       return ACCESS_RESULT_FILTER_TRY_LATER;
     }
 
diff --git a/components/metrics/file_metrics_provider.h b/components/metrics/file_metrics_provider.h
index 6927829..e25eb03 100644
--- a/components/metrics/file_metrics_provider.h
+++ b/components/metrics/file_metrics_provider.h
@@ -103,6 +103,12 @@
     // Process this file normally.
     FILTER_PROCESS_FILE,
 
+    // This file is the active metrics file for the current process.  Don't
+    // do anything with it. This is effectively "try later" but isn't
+    // added to the results histogram because the file has to be ignored
+    // throughout the life of the browser and that skews the distribution.
+    FILTER_ACTIVE_THIS_PID,
+
     // Try again. This could happen within milliseconds or minutes but no other
     // files from the same source will get processed in between. The process
     // must have permission to "touch" the file and alter its last-modified
@@ -213,6 +219,9 @@
     // File was skipped because too many bytes in directory.
     ACCESS_RESULT_TOO_MANY_BYTES,
 
+    // The file was skipped because it's being written by this process.
+    ACCESS_RESULT_THIS_PID,
+
     ACCESS_RESULT_MAX
   };
 
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc
index d698b5b..8f44c97 100644
--- a/components/password_manager/core/browser/password_form_manager.cc
+++ b/components/password_manager/core/browser/password_form_manager.cc
@@ -649,6 +649,12 @@
 void PasswordFormManager::ProcessFrame(
     const base::WeakPtr<PasswordManagerDriver>& driver) {
   DCHECK_EQ(PasswordForm::SCHEME_HTML, observed_form_.scheme);
+
+  // Don't keep processing the same form.
+  if (autofills_left_ <= 0)
+    return;
+  autofills_left_--;
+
   if (form_fetcher_->GetState() == FormFetcher::State::NOT_WAITING)
     ProcessFrameInternal(driver);
 
diff --git a/components/password_manager/core/browser/password_form_manager.h b/components/password_manager/core/browser/password_form_manager.h
index 3b9e3f0..1b0ab1b 100644
--- a/components/password_manager/core/browser/password_form_manager.h
+++ b/components/password_manager/core/browser/password_form_manager.h
@@ -95,6 +95,10 @@
     IGNORE_OTHER_POSSIBLE_USERNAMES
   };
 
+  // The upper limit on how many times Chrome will try to autofill the same
+  // form.
+  static constexpr int kMaxTimesAutofill = 5;
+
   // Chooses between the current and new password value which one to save. This
   // is whichever is non-empty, with the preference being given to the new one.
   static base::string16 PasswordToSave(const autofill::PasswordForm& form);
@@ -598,6 +602,12 @@
   // forms.
   bool blacklisted_origin_found_ = false;
 
+  // If Chrome has already autofilled a few times, it is probable that autofill
+  // is triggered by programmatic changes in the page. We set a maximum number
+  // of times that Chrome will autofill to avoid being stuck in an infinite
+  // loop.
+  int autofills_left_ = kMaxTimesAutofill;
+
   DISALLOW_COPY_AND_ASSIGN(PasswordFormManager);
 };
 
diff --git a/components/password_manager/core/browser/password_form_manager_unittest.cc b/components/password_manager/core/browser/password_form_manager_unittest.cc
index 95410aaa..9b84089 100644
--- a/components/password_manager/core/browser/password_form_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
@@ -2594,6 +2594,20 @@
   form_manager()->ProcessFrame(client()->mock_driver()->AsWeakPtr());
 }
 
+// Test that Chrome stops autofilling if triggered too many times.
+TEST_F(PasswordFormManagerTest, ProcessFrame_MaxTimes) {
+  constexpr int kMaxAutofills = PasswordFormManager::kMaxTimesAutofill;
+  constexpr int kExtraProcessRequests = 3;
+  // Expect one call for each ProcessFrame() and one for SetNonFederated().
+  EXPECT_CALL(*client()->mock_driver(), FillPasswordForm(_))
+      .Times(kMaxAutofills + 1);
+  fake_form_fetcher()->SetNonFederated({saved_match()}, 0u);
+  // Process more times to exceed the limit.
+  for (int i = 0; i < kMaxAutofills + kExtraProcessRequests; i++) {
+    form_manager()->ProcessFrame(client()->mock_driver()->AsWeakPtr());
+  }
+}
+
 // Test that when ProcessFrame is called on a driver added after receiving
 // matches, such driver is still told to call FillPasswordForm.
 TEST_F(PasswordFormManagerTest, ProcessFrame_TwoDrivers) {
diff --git a/components/payments/content/android/java/src/org/chromium/components/payments/PaymentManifestDownloader.java b/components/payments/content/android/java/src/org/chromium/components/payments/PaymentManifestDownloader.java
index b37e97200..6d8dbfb 100644
--- a/components/payments/content/android/java/src/org/chromium/components/payments/PaymentManifestDownloader.java
+++ b/components/payments/content/android/java/src/org/chromium/components/payments/PaymentManifestDownloader.java
@@ -5,7 +5,6 @@
 package org.chromium.components.payments;
 
 import org.chromium.base.ThreadUtils;
-import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.content_public.browser.WebContents;
@@ -61,14 +60,6 @@
         return mNativeObject != 0;
     }
 
-    /** Allows HTTP URLs. Should be used for testing only. */
-    @VisibleForTesting
-    public void allowHttpForTest() {
-        ThreadUtils.assertOnUiThread();
-        assert mNativeObject != 0;
-        nativeAllowHttpForTest(mNativeObject);
-    }
-
     /**
      * Downloads the payment method manifest file asynchronously.
      *
@@ -107,7 +98,6 @@
     }
 
     private static native long nativeInit(WebContents webContents);
-    private native void nativeAllowHttpForTest(long nativePaymentManifestDownloaderAndroid);
     private native void nativeDownloadPaymentMethodManifest(
             long nativePaymentManifestDownloaderAndroid, URI methodName,
             ManifestDownloadCallback callback);
diff --git a/components/payments/content/android/payment_manifest_downloader_android.cc b/components/payments/content/android/payment_manifest_downloader_android.cc
index d6503d9..b8fbcb1 100644
--- a/components/payments/content/android/payment_manifest_downloader_android.cc
+++ b/components/payments/content/android/payment_manifest_downloader_android.cc
@@ -19,7 +19,8 @@
 
 class DownloadCallback {
  public:
-  DownloadCallback(const base::android::JavaParamRef<jobject>& jcallback)
+  explicit DownloadCallback(
+      const base::android::JavaParamRef<jobject>& jcallback)
       : jcallback_(jcallback) {}
 
   ~DownloadCallback() {}
@@ -92,12 +93,6 @@
   delete this;
 }
 
-void PaymentManifestDownloaderAndroid::AllowHttpForTest(
-    JNIEnv* env,
-    const base::android::JavaParamRef<jobject>& jcaller) {
-  downloader_.AllowHttpForTest();
-}
-
 // Static free function declared and called directly from java.
 // Caller owns the result. Returns 0 on error.
 static jlong Init(JNIEnv* env,
diff --git a/components/payments/content/android/payment_manifest_downloader_android.h b/components/payments/content/android/payment_manifest_downloader_android.h
index 8143429f..78422863 100644
--- a/components/payments/content/android/payment_manifest_downloader_android.h
+++ b/components/payments/content/android/payment_manifest_downloader_android.h
@@ -41,10 +41,6 @@
   void Destroy(JNIEnv* env,
                const base::android::JavaParamRef<jobject>& jcaller);
 
-  // Allows HTTP URLs. Should be used for testing only.
-  void AllowHttpForTest(JNIEnv* env,
-                        const base::android::JavaParamRef<jobject>& jcaller);
-
  private:
   PaymentManifestDownloader downloader_;
 
diff --git a/components/payments/content/manifest_verifier.cc b/components/payments/content/manifest_verifier.cc
index 80d3ba3..765da17 100644
--- a/components/payments/content/manifest_verifier.cc
+++ b/components/payments/content/manifest_verifier.cc
@@ -87,10 +87,13 @@
     std::vector<std::string> verified_method_names;
     for (const auto& method : app.second->enabled_methods) {
       // For non-URL payment method names, only names published by W3C should be
-      // supported.
+      // supported. Keep this in sync with AndroidPaymentAppFinder.java.
       // https://w3c.github.io/payment-method-basic-card/
       // https://w3c.github.io/webpayments/proposals/interledger-payment-method.html
-      if (method == "basic-card" || method == "interledger") {
+      // https://w3c.github.io/webpayments-methods-credit-transfer-direct-debit/
+      if (method == "basic-card" || method == "interledger" ||
+          method == "payee-credit-transfer" ||
+          method == "payer-credit-transfer") {
         verified_method_names.emplace_back(method);
         continue;
       }
diff --git a/components/payments/content/utility/BUILD.gn b/components/payments/content/utility/BUILD.gn
index 8bc168b..84d14aa9 100644
--- a/components/payments/content/utility/BUILD.gn
+++ b/components/payments/content/utility/BUILD.gn
@@ -15,6 +15,7 @@
     "//base",
     "//components/payments/content:content_common",
     "//content/public/common",
+    "//net",
     "//services/data_decoder/public/cpp",
     "//url",
   ]
diff --git a/components/payments/content/utility/payment_manifest_parser.cc b/components/payments/content/utility/payment_manifest_parser.cc
index e362a54..b90bd55 100644
--- a/components/payments/content/utility/payment_manifest_parser.cc
+++ b/components/payments/content/utility/payment_manifest_parser.cc
@@ -16,6 +16,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "components/payments/content/utility/fingerprint_parser.h"
 #include "content/public/common/service_manager_connection.h"
+#include "net/base/url_util.h"
 #include "services/data_decoder/public/cpp/safe_json_parser.h"
 #include "url/url_constants.h"
 
@@ -25,18 +26,9 @@
 const size_t kMaximumNumberOfItems = 100U;
 
 const char* const kDefaultApplications = "default_applications";
-const char* const kSupportedOrigins = "supported_origins";
+const char* const kHttpPrefix = "http://";
 const char* const kHttpsPrefix = "https://";
-
-void RunPaymentMethodCallbackForError(
-    PaymentManifestParser::PaymentMethodCallback callback) {
-  std::move(callback).Run(std::vector<GURL>(), std::vector<url::Origin>(),
-                          /*all_origins_supported=*/false);
-}
-
-void RunWebAppCallbackForError(PaymentManifestParser::WebAppCallback callback) {
-  std::move(callback).Run(std::vector<WebAppManifestSection>());
-}
+const char* const kSupportedOrigins = "supported_origins";
 
 // Parses the "default_applications": ["https://some/url"] from |dict| into
 // |web_app_manifest_urls|. Returns 'false' for invalid data.
@@ -62,18 +54,22 @@
     std::string item;
     if (!list->GetString(i, &item) || item.empty() ||
         !base::IsStringUTF8(item) ||
-        !base::StartsWith(item, kHttpsPrefix, base::CompareCase::SENSITIVE)) {
+        !(base::StartsWith(item, kHttpsPrefix, base::CompareCase::SENSITIVE) ||
+          base::StartsWith(item, kHttpPrefix, base::CompareCase::SENSITIVE))) {
       LOG(ERROR) << "Each entry in \"" << kDefaultApplications
                  << "\" must be UTF8 string that starts with \"" << kHttpsPrefix
-                 << "\".";
+                 << "\" or \"" << kHttpPrefix << "\" (for localhost).";
       web_app_manifest_urls->clear();
       return false;
     }
 
     GURL url(item);
-    if (!url.is_valid() || !url.SchemeIs(url::kHttpsScheme)) {
+    if (!url.is_valid() || !(url.SchemeIs(url::kHttpsScheme) ||
+                             (url.SchemeIs(url::kHttpScheme) &&
+                              net::IsLocalhost(url.HostNoBracketsPiece())))) {
       LOG(ERROR) << "\"" << item << "\" entry in \"" << kDefaultApplications
-                 << "\" is not a valid URL with HTTPS scheme.";
+                 << "\" is not a valid URL with HTTPS scheme and is not a "
+                    "valid localhost URL with HTTP scheme.";
       web_app_manifest_urls->clear();
       return false;
     }
@@ -130,20 +126,25 @@
     std::string item;
     if (!list->GetString(i, &item) || item.empty() ||
         !base::IsStringUTF8(item) ||
-        !base::StartsWith(item, kHttpsPrefix, base::CompareCase::SENSITIVE)) {
+        !(base::StartsWith(item, kHttpsPrefix, base::CompareCase::SENSITIVE) ||
+          base::StartsWith(item, kHttpPrefix, base::CompareCase::SENSITIVE))) {
       LOG(ERROR) << "Each entry in \"" << kSupportedOrigins
                  << "\" must be UTF8 string that starts with \"" << kHttpsPrefix
-                 << "\".";
+                 << "\" or \"" << kHttpPrefix << "\" (for localhost).";
       supported_origins->clear();
       return false;
     }
 
     GURL url(item);
-    if (!url.is_valid() || !url.SchemeIs(url::kHttpsScheme) ||
+    if (!url.is_valid() ||
+        !(url.SchemeIs(url::kHttpsScheme) ||
+          (url.SchemeIs(url::kHttpScheme) &&
+           net::IsLocalhost(url.HostNoBracketsPiece()))) ||
         url.path() != "/" || url.has_query() || url.has_ref() ||
         url.has_username() || url.has_password()) {
       LOG(ERROR) << "\"" << item << "\" entry in \"" << kSupportedOrigins
-                 << "\" is not a valid origin with HTTPS scheme.";
+                 << "\" is not a valid origin with HTTPS scheme and is not a "
+                    "valid localhost origin with HTTP scheme.";
       supported_origins->clear();
       return false;
     }
@@ -233,82 +234,6 @@
                  parser_callback));
 }
 
-void PaymentManifestParser::OnPaymentMethodParse(
-    PaymentMethodCallback callback,
-    std::unique_ptr<base::Value> value) {
-  parse_payment_callback_counter_--;
-
-  std::vector<GURL> web_app_manifest_urls;
-  std::vector<url::Origin> supported_origins;
-  bool all_origins_supported = false;
-  ParsePaymentMethodManifestIntoVectors(
-      std::move(value), &web_app_manifest_urls, &supported_origins,
-      &all_origins_supported);
-
-  const size_t kMaximumNumberOfSupportedOrigins = 100000;
-  if (web_app_manifest_urls.size() > kMaximumNumberOfItems ||
-      supported_origins.size() > kMaximumNumberOfSupportedOrigins) {
-    // If more than 100 web app manifests URLs or more than 100,000 supported
-    // origins, then something went wrong.
-    RunPaymentMethodCallbackForError(std::move(callback));
-    return;
-  }
-
-  for (const auto& url : web_app_manifest_urls) {
-    if (!url.is_valid() || !url.SchemeIs(url::kHttpsScheme)) {
-      // If not a valid URL with HTTPS scheme, then something went wrong.
-      RunPaymentMethodCallbackForError(std::move(callback));
-      return;
-    }
-  }
-
-  if (all_origins_supported && !supported_origins.empty()) {
-    // The format of the payment method manifest does not allow for both of
-    // these conditions to be true.
-    RunPaymentMethodCallbackForError(std::move(callback));
-    return;
-  }
-
-  for (const auto& origin : supported_origins) {
-    if (!origin.GetURL().is_valid() || origin.scheme() != url::kHttpsScheme) {
-      // If not a valid origin with HTTPS scheme, then something went wrong.
-      RunPaymentMethodCallbackForError(std::move(callback));
-      return;
-    }
-  }
-
-  // Can trigger synchronous deletion of this object, so can't access any of the
-  // member variables after this block.
-  std::move(callback).Run(web_app_manifest_urls, supported_origins,
-                          all_origins_supported);
-}
-
-void PaymentManifestParser::OnWebAppParse(WebAppCallback callback,
-                                          std::unique_ptr<base::Value> value) {
-  parse_webapp_callback_counter_--;
-
-  std::vector<WebAppManifestSection> manifest;
-  ParseWebAppManifestIntoVector(std::move(value), &manifest);
-
-  if (manifest.size() > kMaximumNumberOfItems) {
-    // If more than 100 items, then something went wrong.
-    RunWebAppCallbackForError(std::move(callback));
-    return;
-  }
-
-  for (size_t i = 0; i < manifest.size(); ++i) {
-    if (manifest[i].fingerprints.size() > kMaximumNumberOfItems) {
-      // If more than 100 items, then something went wrong.
-      RunWebAppCallbackForError(std::move(callback));
-      return;
-    }
-  }
-
-  // Can trigger synchronous deletion of this object, so can't access any of the
-  // member variables after this block.
-  std::move(callback).Run(manifest);
-}
-
 // static
 void PaymentManifestParser::ParsePaymentMethodManifestIntoVectors(
     std::unique_ptr<base::Value> value,
@@ -459,4 +384,34 @@
   return true;
 }
 
+void PaymentManifestParser::OnPaymentMethodParse(
+    PaymentMethodCallback callback,
+    std::unique_ptr<base::Value> value) {
+  parse_payment_callback_counter_--;
+
+  std::vector<GURL> web_app_manifest_urls;
+  std::vector<url::Origin> supported_origins;
+  bool all_origins_supported = false;
+  ParsePaymentMethodManifestIntoVectors(
+      std::move(value), &web_app_manifest_urls, &supported_origins,
+      &all_origins_supported);
+
+  // Can trigger synchronous deletion of this object, so can't access any of the
+  // member variables after this block.
+  std::move(callback).Run(web_app_manifest_urls, supported_origins,
+                          all_origins_supported);
+}
+
+void PaymentManifestParser::OnWebAppParse(WebAppCallback callback,
+                                          std::unique_ptr<base::Value> value) {
+  parse_webapp_callback_counter_--;
+
+  std::vector<WebAppManifestSection> manifest;
+  ParseWebAppManifestIntoVector(std::move(value), &manifest);
+
+  // Can trigger synchronous deletion of this object, so can't access any of the
+  // member variables after this block.
+  std::move(callback).Run(manifest);
+}
+
 }  // namespace payments
diff --git a/components/payments/content/utility/payment_manifest_parser_unittest.cc b/components/payments/content/utility/payment_manifest_parser_unittest.cc
index 6278845..dd9daa0 100644
--- a/components/payments/content/utility/payment_manifest_parser_unittest.cc
+++ b/components/payments/content/utility/payment_manifest_parser_unittest.cc
@@ -89,6 +89,11 @@
       "{\"default_applications\": [\"\"]}");
 }
 
+TEST(PaymentManifestParserTest, RelativeURLDefaultApplicationIsMalformed) {
+  ExpectUnableToParsePaymentMethodManifest(
+      "{\"default_applications\": [\"manifest.json\"]}");
+}
+
 TEST(PaymentManifestParserTest, DefaultApplicationsShouldNotHaveNulCharacters) {
   ExpectUnableToParsePaymentMethodManifest(
       "{\"default_applications\": [\"https://bobpay.com/app\0json\"]}");
@@ -184,6 +189,17 @@
 }
 
 TEST(PaymentManifestParserTest,
+     WellFormedPaymentMethodManifestWithHttpLocalhostApps) {
+  ExpectParsedPaymentMethodManifest(
+      "{\"default_applications\": ["
+      "\"http://127.0.0.1:8080/app.json\","
+      "\"http://localhost:8081/app.json\"]}",
+      {GURL("http://127.0.0.1:8080/app.json"),
+       GURL("http://localhost:8081/app.json")},
+      std::vector<url::Origin>(), false);
+}
+
+TEST(PaymentManifestParserTest,
      WellFormedPaymentMethodManifestWithAppsAndAllSupportedOrigins) {
   ExpectParsedPaymentMethodManifest(
       "{\"default_applications\": [\"https://bobpay.com/app.json\", "
@@ -227,6 +243,17 @@
 }
 
 TEST(PaymentManifestParserTest,
+     WellFormedPaymentMethodManifestWithHttpLocalhostSupportedOrigins) {
+  ExpectParsedPaymentMethodManifest(
+      "{\"supported_origins\": [\"http://localhost:8080\", "
+      "\"http://127.0.0.1:8081\"]}",
+      std::vector<GURL>(),
+      {url::Origin::Create(GURL("http://localhost:8080")),
+       url::Origin::Create(GURL("http://127.0.0.1:8081"))},
+      false);
+}
+
+TEST(PaymentManifestParserTest,
      WellFormedPaymentMethodManifestWithSomeSupportedOrigins) {
   ExpectParsedPaymentMethodManifest(
       "{\"supported_origins\": [\"https://charliepay.com\", "
diff --git a/components/payments/core/payment_manifest_downloader.cc b/components/payments/core/payment_manifest_downloader.cc
index 3f4eee4..6d08745f 100644
--- a/components/payments/core/payment_manifest_downloader.cc
+++ b/components/payments/core/payment_manifest_downloader.cc
@@ -15,6 +15,7 @@
 #include "components/data_use_measurement/core/data_use_user_data.h"
 #include "components/link_header_util/link_header_util.h"
 #include "net/base/load_flags.h"
+#include "net/base/url_util.h"
 #include "net/http/http_response_headers.h"
 #include "net/http/http_status_code.h"
 #include "net/http/http_util.h"
@@ -91,7 +92,7 @@
 
 PaymentManifestDownloader::PaymentManifestDownloader(
     const scoped_refptr<net::URLRequestContextGetter>& context)
-    : context_(context), allow_http_for_test_(false) {}
+    : context_(context) {}
 
 PaymentManifestDownloader::~PaymentManifestDownloader() {}
 
@@ -109,10 +110,6 @@
   InitiateDownload(url, net::URLFetcher::GET, std::move(callback));
 }
 
-void PaymentManifestDownloader::AllowHttpForTest() {
-  allow_http_for_test_ = true;
-}
-
 PaymentManifestDownloader::Download::Download() {}
 
 PaymentManifestDownloader::Download::~Download() {}
@@ -187,10 +184,9 @@
 }
 
 bool PaymentManifestDownloader::IsValidManifestUrl(const GURL& url) {
-  return url.is_valid() &&
-         (url.SchemeIs(url::kHttpsScheme) ||
-          (allow_http_for_test_ && url.SchemeIs(url::kHttpScheme) &&
-           url.host() == "127.0.0.1"));
+  return url.is_valid() && (url.SchemeIs(url::kHttpsScheme) ||
+                            (url.SchemeIs(url::kHttpScheme) &&
+                             net::IsLocalhost(url.HostNoBracketsPiece())));
 }
 
 }  // namespace payments
diff --git a/components/payments/core/payment_manifest_downloader.h b/components/payments/core/payment_manifest_downloader.h
index 6dc354c..a6a4d24 100644
--- a/components/payments/core/payment_manifest_downloader.h
+++ b/components/payments/core/payment_manifest_downloader.h
@@ -29,7 +29,7 @@
 //  - HTTP response code is not 200. (204 is also allowed for HEAD request.)
 //  - HTTP GET on the manifest URL returns empty content.
 //
-// In the case of a payment method manifest download, can also be called when:
+// In the case of a payment method manifest download, can also fail when:
 //  - HTTP response headers are absent.
 //  - HTTP response headers do not contain Link headers.
 //  - Link header does not contain rel="payment-method-manifest".
@@ -104,9 +104,6 @@
   void DownloadWebAppManifest(const GURL& url,
                               PaymentManifestDownloadCallback callback);
 
-  // Allows HTTP URLs. Should be used only for testing.
-  void AllowHttpForTest();
-
  private:
   // Information about an ongoing download request.
   struct Download {
@@ -127,7 +124,6 @@
   bool IsValidManifestUrl(const GURL& url);
 
   scoped_refptr<net::URLRequestContextGetter> context_;
-  bool allow_http_for_test_;
 
   // Downloads are identified by net::URLFetcher pointers, because that's the
   // only unique piece of information that OnURLFetchComplete() receives. Can't
diff --git a/content/app/android/content_main.cc b/content/app/android/content_main.cc
index bb5c870..c487cb6 100644
--- a/content/app/android/content_main.cc
+++ b/content/app/android/content_main.cc
@@ -33,7 +33,7 @@
 
   DCHECK(!g_service_manager_main_delegate.Get());
   g_service_manager_main_delegate.Get() =
-      base::MakeUnique<ContentServiceManagerMainDelegate>(
+      std::make_unique<ContentServiceManagerMainDelegate>(
           ContentMainParams(g_content_main_delegate.Get().get()));
 
   service_manager::MainParams main_params(
diff --git a/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc b/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc
index 09bf15b..3a15523 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc
@@ -67,7 +67,7 @@
     dict->SetString("description", std::string(description));
 
   AtkStateSet* state_set = atk_object_ref_state_set(atk_object);
-  auto states = base::MakeUnique<base::ListValue>();
+  auto states = std::make_unique<base::ListValue>();
   for (int i = ATK_STATE_INVALID; i < ATK_STATE_LAST_DEFINED; i++) {
     AtkStateType state_type = static_cast<AtkStateType>(i);
     if (atk_state_set_contains_state(state_set, state_type))
diff --git a/content/browser/accessibility/accessibility_tree_formatter_blink.cc b/content/browser/accessibility/accessibility_tree_formatter_blink.cc
index 8cd91f6..f1feb4a8 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_blink.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_blink.cc
@@ -203,7 +203,7 @@
     if (node.HasIntListAttribute(attr)) {
       std::vector<int32_t> values;
       node.GetIntListAttribute(attr, &values);
-      auto value_list = base::MakeUnique<base::ListValue>();
+      auto value_list = std::make_unique<base::ListValue>();
       for (size_t i = 0; i < values.size(); ++i) {
         if (ui::IsNodeIdIntListAttribute(attr)) {
           BrowserAccessibility* target = node.manager()->GetFromID(values[i]);
diff --git a/content/browser/accessibility/accessibility_tree_formatter_browser.cc b/content/browser/accessibility/accessibility_tree_formatter_browser.cc
index a5577dc..f62e4d4 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_browser.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_browser.cc
@@ -36,7 +36,7 @@
     base::DictionaryValue* dict) {
   AddProperties(node, dict);
 
-  auto children = base::MakeUnique<base::ListValue>();
+  auto children = std::make_unique<base::ListValue>();
 
   for (size_t i = 0; i < ChildCount(node); ++i) {
     BrowserAccessibility* child_node = GetChild(node, i);
diff --git a/content/browser/accessibility/accessibility_tree_formatter_win.cc b/content/browser/accessibility/accessibility_tree_formatter_win.cc
index 481545b..a6bfd679 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_win.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_win.cc
@@ -274,7 +274,7 @@
     LONG root_y) {
   AddProperties(node, dict, root_x, root_y);
 
-  auto children = base::MakeUnique<base::ListValue>();
+  auto children = std::make_unique<base::ListValue>();
 
   LONG child_count;
   if (S_OK != node->get_accChildCount(&child_count))
@@ -460,12 +460,12 @@
 
   LONG x, y, width, height;
   if (SUCCEEDED(node->accLocation(&x, &y, &width, &height, variant_self))) {
-    auto location = base::MakeUnique<base::DictionaryValue>();
+    auto location = std::make_unique<base::DictionaryValue>();
     location->SetInteger("x", x - root_x);
     location->SetInteger("y", y - root_y);
     dict->Set("location", std::move(location));
 
-    auto size = base::MakeUnique<base::DictionaryValue>();
+    auto size = std::make_unique<base::DictionaryValue>();
     size->SetInteger("width", width);
     size->SetInteger("height", height);
     dict->Set("size", std::move(size));
diff --git a/content/browser/android/content_view_core.cc b/content/browser/android/content_view_core.cc
index 575acdf..66baf48 100644
--- a/content/browser/android/content_view_core.cc
+++ b/content/browser/android/content_view_core.cc
@@ -269,7 +269,7 @@
       ->SetContentViewCore(this);
   DCHECK(!web_contents_->GetUserData(kContentViewUserDataKey));
   web_contents_->SetUserData(kContentViewUserDataKey,
-                             base::MakeUnique<ContentViewUserData>(this));
+                             std::make_unique<ContentViewUserData>(this));
 }
 
 void ContentViewCore::RenderViewReady() {
diff --git a/content/browser/android/java/gin_java_bridge_dispatcher_host.cc b/content/browser/android/java/gin_java_bridge_dispatcher_host.cc
index fd3edd3e..466dc018 100644
--- a/content/browser/android/java/gin_java_bridge_dispatcher_host.cc
+++ b/content/browser/android/java/gin_java_bridge_dispatcher_host.cc
@@ -325,13 +325,13 @@
   DCHECK(routing_id != MSG_ROUTING_NONE);
   scoped_refptr<GinJavaBoundObject> object = FindObject(object_id);
   if (!object.get()) {
-    wrapped_result->Append(base::MakeUnique<base::Value>());
+    wrapped_result->Append(std::make_unique<base::Value>());
     *error_code = kGinJavaBridgeUnknownObjectId;
     return;
   }
   scoped_refptr<GinJavaMethodInvocationHelper> result =
       new GinJavaMethodInvocationHelper(
-          base::MakeUnique<GinJavaBoundObjectDelegate>(object), method_name,
+          std::make_unique<GinJavaBoundObjectDelegate>(object), method_name,
           arguments);
   result->Init(this);
   result->Invoke();
@@ -354,7 +354,7 @@
     wrapped_result->Append(
         GinJavaBridgeValue::CreateObjectIDValue(returned_object_id));
   } else {
-    wrapped_result->Append(base::MakeUnique<base::Value>());
+    wrapped_result->Append(std::make_unique<base::Value>());
   }
 }
 
diff --git a/content/browser/android/java/gin_java_bridge_message_filter.cc b/content/browser/android/java/gin_java_bridge_message_filter.cc
index 9838877bc..84eb032 100644
--- a/content/browser/android/java/gin_java_bridge_message_filter.cc
+++ b/content/browser/android/java/gin_java_bridge_message_filter.cc
@@ -96,7 +96,7 @@
     rph->AddFilter(filter.get());
     rph->SetUserData(
         kGinJavaBridgeMessageFilterKey,
-        base::MakeUnique<base::UserDataAdapter<GinJavaBridgeMessageFilter>>(
+        std::make_unique<base::UserDataAdapter<GinJavaBridgeMessageFilter>>(
             filter.get()));
   }
   return filter;
@@ -157,7 +157,7 @@
     host->OnInvokeMethod(current_routing_id_, object_id, method_name, arguments,
                          wrapped_result, error_code);
   } else {
-    wrapped_result->Append(base::MakeUnique<base::Value>());
+    wrapped_result->Append(std::make_unique<base::Value>());
     *error_code = kGinJavaBridgeRenderFrameDeleted;
   }
 }
diff --git a/content/browser/android/java/gin_java_method_invocation_helper.cc b/content/browser/android/java/gin_java_method_invocation_helper.cc
index 6c5edab7..4c2e33d 100644
--- a/content/browser/android/java/gin_java_method_invocation_helper.cc
+++ b/content/browser/android/java/gin_java_method_invocation_helper.cc
@@ -321,7 +321,7 @@
       }
       ScopedJavaLocalRef<jobject> scoped_java_object(env, java_object);
       if (!scoped_java_object.obj()) {
-        result_wrapper.Append(base::MakeUnique<base::Value>());
+        result_wrapper.Append(std::make_unique<base::Value>());
         break;
       }
       SetObjectResult(scoped_java_object, object_->GetSafeAnnotationClass());
diff --git a/content/browser/android/java/gin_java_method_invocation_helper_unittest.cc b/content/browser/android/java/gin_java_method_invocation_helper_unittest.cc
index dfc96ff7..d6689dc 100644
--- a/content/browser/android/java/gin_java_method_invocation_helper_unittest.cc
+++ b/content/browser/android/java/gin_java_method_invocation_helper_unittest.cc
@@ -129,21 +129,21 @@
   base::ListValue objects;
   objects.AppendInteger(100);
   objects.Append(GinJavaBridgeValue::CreateObjectIDValue(1));
-  auto sub_list = base::MakeUnique<base::ListValue>();
+  auto sub_list = std::make_unique<base::ListValue>();
   sub_list->AppendInteger(200);
   sub_list->Append(GinJavaBridgeValue::CreateObjectIDValue(2));
   objects.Append(std::move(sub_list));
-  auto sub_dict = base::MakeUnique<base::DictionaryValue>();
+  auto sub_dict = std::make_unique<base::DictionaryValue>();
   sub_dict->SetInteger("1", 300);
   sub_dict->Set("2", GinJavaBridgeValue::CreateObjectIDValue(3));
   objects.Append(std::move(sub_dict));
-  auto sub_list_with_dict = base::MakeUnique<base::ListValue>();
-  auto sub_sub_dict = base::MakeUnique<base::DictionaryValue>();
+  auto sub_list_with_dict = std::make_unique<base::ListValue>();
+  auto sub_sub_dict = std::make_unique<base::DictionaryValue>();
   sub_sub_dict->Set("1", GinJavaBridgeValue::CreateObjectIDValue(4));
   sub_list_with_dict->Append(std::move(sub_sub_dict));
   objects.Append(std::move(sub_list_with_dict));
-  auto sub_dict_with_list = base::MakeUnique<base::DictionaryValue>();
-  auto sub_sub_list = base::MakeUnique<base::ListValue>();
+  auto sub_dict_with_list = std::make_unique<base::DictionaryValue>();
+  auto sub_sub_list = std::make_unique<base::ListValue>();
   sub_sub_list->Append(GinJavaBridgeValue::CreateObjectIDValue(5));
   sub_dict_with_list->Set("1", std::move(sub_sub_list));
   objects.Append(std::move(sub_dict_with_list));
diff --git a/content/browser/android/java/gin_java_script_to_java_types_coercion.cc b/content/browser/android/java/gin_java_script_to_java_types_coercion.cc
index a7fdc62..59a76742d 100644
--- a/content/browser/android/java/gin_java_script_to_java_types_coercion.cc
+++ b/content/browser/android/java/gin_java_script_to_java_types_coercion.cc
@@ -466,7 +466,7 @@
   if (!result) {
     return NULL;
   }
-  auto null_value = base::MakeUnique<base::Value>();
+  auto null_value = std::make_unique<base::Value>();
   for (jsize i = 0; i < length; ++i) {
     const base::Value* value_element = null_value.get();
     list_value->Get(i, &value_element);
@@ -538,7 +538,7 @@
   if (!result) {
     return NULL;
   }
-  auto null_value = base::MakeUnique<base::Value>();
+  auto null_value = std::make_unique<base::Value>();
   for (jsize i = 0; i < length; ++i) {
     const std::string key(base::IntToString(i));
     const base::Value* value_element = null_value.get();
diff --git a/content/browser/android/overscroll_controller_android.cc b/content/browser/android/overscroll_controller_android.cc
index 939d5e2..41f3cf0 100644
--- a/content/browser/android/overscroll_controller_android.cc
+++ b/content/browser/android/overscroll_controller_android.cc
@@ -81,7 +81,7 @@
     return nullptr;
   }
 
-  return base::MakeUnique<OverscrollGlow>(client);
+  return std::make_unique<OverscrollGlow>(client);
 }
 
 std::unique_ptr<OverscrollRefresh> CreateRefreshEffect(
@@ -91,7 +91,7 @@
     return nullptr;
   }
 
-  return base::MakeUnique<OverscrollRefresh>(overscroll_refresh_handler);
+  return std::make_unique<OverscrollRefresh>(overscroll_refresh_handler);
 }
 
 }  // namespace
diff --git a/content/browser/android/overscroll_controller_android_unittest.cc b/content/browser/android/overscroll_controller_android_unittest.cc
index 7db0123..0f7262f8 100644
--- a/content/browser/android/overscroll_controller_android_unittest.cc
+++ b/content/browser/android/overscroll_controller_android_unittest.cc
@@ -71,9 +71,9 @@
 class OverscrollControllerAndroidUnitTest : public testing::Test {
  public:
   OverscrollControllerAndroidUnitTest() {
-    std::unique_ptr<MockGlow> glow_ptr = base::MakeUnique<MockGlow>();
-    std::unique_ptr<MockRefresh> refresh_ptr = base::MakeUnique<MockRefresh>();
-    compositor_ = base::MakeUnique<MockCompositor>();
+    std::unique_ptr<MockGlow> glow_ptr = std::make_unique<MockGlow>();
+    std::unique_ptr<MockRefresh> refresh_ptr = std::make_unique<MockRefresh>();
+    compositor_ = std::make_unique<MockCompositor>();
     glow_ = glow_ptr.get();
     refresh_ = refresh_ptr.get();
     controller_ = OverscrollControllerAndroid::CreateForTests(
diff --git a/content/browser/android/smart_selection_client.cc b/content/browser/android/smart_selection_client.cc
index 95497ef..93937f1 100644
--- a/content/browser/android/smart_selection_client.cc
+++ b/content/browser/android/smart_selection_client.cc
@@ -55,7 +55,7 @@
       weak_ptr_factory_(this) {
   DCHECK(!web_contents_->GetUserData(kSmartSelectionClientUDKey));
   web_contents_->SetUserData(kSmartSelectionClientUDKey,
-                             base::MakeUnique<UserData>(this));
+                             std::make_unique<UserData>(this));
 }
 
 SmartSelectionClient::~SmartSelectionClient() {
diff --git a/content/browser/android/synchronous_compositor_browser_filter.cc b/content/browser/android/synchronous_compositor_browser_filter.cc
index 3352a64d..2faac6f 100644
--- a/content/browser/android/synchronous_compositor_browser_filter.cc
+++ b/content/browser/android/synchronous_compositor_browser_filter.cc
@@ -84,7 +84,7 @@
       future_map_.erase(itr);
   }
 
-  auto frame_ptr = base::MakeUnique<SynchronousCompositor::Frame>();
+  auto frame_ptr = std::make_unique<SynchronousCompositor::Frame>();
   frame_ptr->layer_tree_frame_sink_id = std::get<0>(param);
   base::Optional<viz::CompositorFrame>& compositor_frame = std::get<1>(param);
   if (compositor_frame) {
diff --git a/content/browser/android/synchronous_compositor_host.cc b/content/browser/android/synchronous_compositor_host.cc
index e9273677..974571d 100644
--- a/content/browser/android/synchronous_compositor_host.cc
+++ b/content/browser/android/synchronous_compositor_host.cc
@@ -89,7 +89,7 @@
   scoped_refptr<FrameFuture> frame_future = new FrameFuture();
   if (compute_scroll_needs_synchronous_draw_) {
     compute_scroll_needs_synchronous_draw_ = false;
-    auto frame_ptr = base::MakeUnique<Frame>();
+    auto frame_ptr = std::make_unique<Frame>();
     *frame_ptr = DemandDrawHw(viewport_size, viewport_rect_for_tile_priority,
                               transform_for_tile_priority);
     frame_future->SetFrame(std::move(frame_ptr));
diff --git a/content/browser/android/text_suggestion_host_mojo_impl_android.cc b/content/browser/android/text_suggestion_host_mojo_impl_android.cc
index 9105c2a..c16d8c0c 100644
--- a/content/browser/android/text_suggestion_host_mojo_impl_android.cc
+++ b/content/browser/android/text_suggestion_host_mojo_impl_android.cc
@@ -18,7 +18,7 @@
     TextSuggestionHostAndroid* text_suggestion_host,
     blink::mojom::TextSuggestionHostRequest request) {
   mojo::MakeStrongBinding(
-      base::MakeUnique<TextSuggestionHostMojoImplAndroid>(text_suggestion_host),
+      std::make_unique<TextSuggestionHostMojoImplAndroid>(text_suggestion_host),
       std::move(request));
 }
 
diff --git a/content/browser/appcache/appcache_backend_impl.cc b/content/browser/appcache/appcache_backend_impl.cc
index 5e135e7..ea6ab791 100644
--- a/content/browser/appcache/appcache_backend_impl.cc
+++ b/content/browser/appcache/appcache_backend_impl.cc
@@ -39,7 +39,7 @@
   if (GetHost(id))
     return false;
 
-  hosts_[id] = base::MakeUnique<AppCacheHost>(id, frontend_, service_);
+  hosts_[id] = std::make_unique<AppCacheHost>(id, frontend_, service_);
   return true;
 }
 
@@ -143,7 +143,7 @@
   std::unique_ptr<AppCacheHost> transferree = std::move(found->second);
 
   // Put a new empty host in its place.
-  found->second = base::MakeUnique<AppCacheHost>(host_id, frontend_, service_);
+  found->second = std::make_unique<AppCacheHost>(host_id, frontend_, service_);
 
   // We give up ownership.
   transferree->PrepareForTransfer();
diff --git a/content/browser/appcache/appcache_request_handler_unittest.cc b/content/browser/appcache/appcache_request_handler_unittest.cc
index 1afebe84..fb0c365 100644
--- a/content/browser/appcache/appcache_request_handler_unittest.cc
+++ b/content/browser/appcache/appcache_request_handler_unittest.cc
@@ -441,7 +441,7 @@
         net::HttpUtil::AssembleRawHeaders(headers.c_str(), headers.length()));
 
     if (request_handler_type_ == URLREQUEST) {
-      job_factory_->SetJob(base::MakeUnique<MockURLRequestJob>(
+      job_factory_->SetJob(std::make_unique<MockURLRequestJob>(
           url_request_.get(), nullptr, info));
       request_->AsURLRequest()->GetURLRequest()->Start();
       // All our simulation needs to satisfy are the DCHECK's for the request
@@ -457,7 +457,7 @@
 
   void SimulateResponseInfo(const net::HttpResponseInfo& info) {
     if (request_handler_type_ == URLREQUEST) {
-      job_factory_->SetJob(base::MakeUnique<MockURLRequestJob>(
+      job_factory_->SetJob(std::make_unique<MockURLRequestJob>(
           url_request_.get(), nullptr, info));
       request_->AsURLRequest()->GetURLRequest()->Start();
     } else {
diff --git a/content/browser/appcache/appcache_storage_impl_unittest.cc b/content/browser/appcache/appcache_storage_impl_unittest.cc
index ed8d7e0..f16dede 100644
--- a/content/browser/appcache/appcache_storage_impl_unittest.cc
+++ b/content/browser/appcache/appcache_storage_impl_unittest.cc
@@ -171,8 +171,8 @@
     std::unique_ptr<net::URLRequestJobFactoryImpl> factory(
         new net::URLRequestJobFactoryImpl());
     factory->SetProtocolHandler("http",
-                                base::MakeUnique<MockHttpServerJobFactory>(
-                                    base::MakeUnique<AppCacheInterceptor>()));
+                                std::make_unique<MockHttpServerJobFactory>(
+                                    std::make_unique<AppCacheInterceptor>()));
     job_factory_ = std::move(factory);
     request_context_.reset(new net::TestURLRequestContext());
     request_context_->set_job_factory(job_factory_.get());
diff --git a/content/browser/appcache/appcache_update_job_unittest.cc b/content/browser/appcache/appcache_update_job_unittest.cc
index 9ad9077..7bd144d7 100644
--- a/content/browser/appcache/appcache_update_job_unittest.cc
+++ b/content/browser/appcache/appcache_update_job_unittest.cc
@@ -3418,7 +3418,7 @@
 
   AppCacheHost* MakeHost(int host_id, AppCacheFrontend* frontend) {
     hosts_.push_back(
-        base::MakeUnique<AppCacheHost>(host_id, frontend, service_.get()));
+        std::make_unique<AppCacheHost>(host_id, frontend, service_.get()));
     return hosts_.back().get();
   }
 
@@ -3436,7 +3436,7 @@
   }
 
   MockFrontend* MakeMockFrontend() {
-    frontends_.push_back(base::MakeUnique<MockFrontend>());
+    frontends_.push_back(std::make_unique<MockFrontend>());
     return frontends_.back().get();
   }
 
diff --git a/content/browser/background_fetch/background_fetch_data_manager_unittest.cc b/content/browser/background_fetch/background_fetch_data_manager_unittest.cc
index 727da19..e1588ee 100644
--- a/content/browser/background_fetch/background_fetch_data_manager_unittest.cc
+++ b/content/browser/background_fetch/background_fetch_data_manager_unittest.cc
@@ -80,7 +80,7 @@
   // Re-creates the data manager. Useful for testing that data was persisted.
   void RestartDataManagerFromPersistentStorage() {
     background_fetch_data_manager_ =
-        base::MakeUnique<BackgroundFetchDataManager>(
+        std::make_unique<BackgroundFetchDataManager>(
             browser_context(),
             embedded_worker_test_helper()->context_wrapper());
   }
diff --git a/content/browser/background_fetch/background_fetch_service_impl.cc b/content/browser/background_fetch/background_fetch_service_impl.cc
index 0618e2a3..22c1161 100644
--- a/content/browser/background_fetch/background_fetch_service_impl.cc
+++ b/content/browser/background_fetch/background_fetch_service_impl.cc
@@ -38,7 +38,7 @@
     blink::mojom::BackgroundFetchServiceRequest request) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   mojo::MakeStrongBinding(
-      base::MakeUnique<BackgroundFetchServiceImpl>(
+      std::make_unique<BackgroundFetchServiceImpl>(
           render_process_id, std::move(background_fetch_context)),
       std::move(request));
 }
diff --git a/content/browser/background_fetch/background_fetch_service_unittest.cc b/content/browser/background_fetch/background_fetch_service_unittest.cc
index 09a4f31..2f8bf98 100644
--- a/content/browser/background_fetch/background_fetch_service_unittest.cc
+++ b/content/browser/background_fetch/background_fetch_service_unittest.cc
@@ -146,7 +146,7 @@
         browser_context(),
         base::WrapRefCounted(embedded_worker_test_helper()->context_wrapper()));
 
-    service_ = base::MakeUnique<BackgroundFetchServiceImpl>(
+    service_ = std::make_unique<BackgroundFetchServiceImpl>(
         0 /* render_process_id */, context_);
   }
 
diff --git a/content/browser/background_fetch/mock_background_fetch_delegate.cc b/content/browser/background_fetch/mock_background_fetch_delegate.cc
index 79ab09b..1971ff9 100644
--- a/content/browser/background_fetch/mock_background_fetch_delegate.cc
+++ b/content/browser/background_fetch/mock_background_fetch_delegate.cc
@@ -20,7 +20,7 @@
 
 MockBackgroundFetchDelegate::TestResponseBuilder::TestResponseBuilder(
     int response_code)
-    : response_(base::MakeUnique<TestResponse>()) {
+    : response_(std::make_unique<TestResponse>()) {
   response_->succeeded_ = (response_code >= 200 && response_code < 300);
   response_->headers = base::MakeRefCounted<net::HttpResponseHeaders>(
       "HTTP/1.1 " + std::to_string(response_code));
diff --git a/content/browser/background_sync/background_sync_manager.cc b/content/browser/background_sync/background_sync_manager.cc
index 06bcd97..6b9aa9e 100644
--- a/content/browser/background_sync/background_sync_manager.cc
+++ b/content/browser/background_sync/background_sync_manager.cc
@@ -324,7 +324,7 @@
   BrowserThread::PostTaskAndReplyWithResult(
       BrowserThread::UI, FROM_HERE,
       base::BindOnce(&GetControllerParameters, service_worker_context_,
-                     base::Passed(base::MakeUnique<BackgroundSyncParameters>(
+                     base::Passed(std::make_unique<BackgroundSyncParameters>(
                          *parameters_))),
       base::BindOnce(&BackgroundSyncManager::InitDidGetControllerParameters,
                      weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
@@ -532,7 +532,7 @@
         FROM_HERE,
         base::BindOnce(
             std::move(callback), BACKGROUND_SYNC_STATUS_OK,
-            base::Passed(base::MakeUnique<BackgroundSyncRegistration>(
+            base::Passed(std::make_unique<BackgroundSyncRegistration>(
                 *existing_registration))));
     return;
   }
@@ -705,7 +705,7 @@
   base::ThreadTaskRunnerHandle::Get()->PostTask(
       FROM_HERE,
       base::BindOnce(std::move(callback), BACKGROUND_SYNC_STATUS_OK,
-                     base::Passed(base::MakeUnique<BackgroundSyncRegistration>(
+                     base::Passed(std::make_unique<BackgroundSyncRegistration>(
                          new_registration))));
 }
 
@@ -822,7 +822,7 @@
       const BackgroundSyncRegistration& registration =
           tag_and_registration.second;
       out_registrations.push_back(
-          base::MakeUnique<BackgroundSyncRegistration>(registration));
+          std::make_unique<BackgroundSyncRegistration>(registration));
     }
   }
 
diff --git a/content/browser/battery_monitor_browsertest.cc b/content/browser/battery_monitor_browsertest.cc
index 500a8167..b68bf4b 100644
--- a/content/browser/battery_monitor_browsertest.cc
+++ b/content/browser/battery_monitor_browsertest.cc
@@ -74,7 +74,7 @@
   BatteryMonitorTest() = default;
 
   void SetUpOnMainThread() override {
-    mock_battery_monitor_ = base::MakeUnique<MockBatteryMonitor>();
+    mock_battery_monitor_ = std::make_unique<MockBatteryMonitor>();
     // Because Device Service also runs in this process(browser process), here
     // we can directly set our binder to intercept interface requests against
     // it.
diff --git a/content/browser/blob_storage/blob_registry_wrapper.cc b/content/browser/blob_storage/blob_registry_wrapper.cc
index cdb1a92..9057879 100644
--- a/content/browser/blob_storage/blob_registry_wrapper.cc
+++ b/content/browser/blob_storage/blob_registry_wrapper.cc
@@ -62,7 +62,7 @@
                                blink::mojom::BlobRegistryRequest request) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   blob_registry_->Bind(std::move(request),
-                       base::MakeUnique<BindingDelegate>(process_id));
+                       std::make_unique<BindingDelegate>(process_id));
 }
 
 BlobRegistryWrapper::~BlobRegistryWrapper() {}
@@ -71,7 +71,7 @@
     scoped_refptr<ChromeBlobStorageContext> blob_storage_context,
     scoped_refptr<storage::FileSystemContext> file_system_context) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  blob_registry_ = base::MakeUnique<storage::BlobRegistryImpl>(
+  blob_registry_ = std::make_unique<storage::BlobRegistryImpl>(
       blob_storage_context->context(), std::move(file_system_context));
 }
 
diff --git a/content/browser/blob_storage/blob_url_unittest.cc b/content/browser/blob_storage/blob_url_unittest.cc
index dbfa815..04a4e70 100644
--- a/content/browser/blob_storage/blob_url_unittest.cc
+++ b/content/browser/blob_storage/blob_url_unittest.cc
@@ -181,7 +181,7 @@
         disk_cache_backend_.get(), kTestDiskCacheKey1, kTestDiskCacheData1);
 
     url_request_job_factory_.SetProtocolHandler(
-        "blob", base::MakeUnique<MockProtocolHandler>(this));
+        "blob", std::make_unique<MockProtocolHandler>(this));
     url_request_context_.set_job_factory(&url_request_job_factory_);
   }
 
diff --git a/content/browser/blob_storage/chrome_blob_storage_context.cc b/content/browser/blob_storage/chrome_blob_storage_context.cc
index d14a615..2795360 100644
--- a/content/browser/blob_storage/chrome_blob_storage_context.cc
+++ b/content/browser/blob_storage/chrome_blob_storage_context.cc
@@ -85,7 +85,7 @@
         new ChromeBlobStorageContext();
     context->SetUserData(
         kBlobStorageContextKeyName,
-        base::MakeUnique<UserDataAdapter<ChromeBlobStorageContext>>(
+        std::make_unique<UserDataAdapter<ChromeBlobStorageContext>>(
             blob.get()));
 
     // Check first to avoid memory leak in unittests.
diff --git a/content/browser/bluetooth/bluetooth_device_chooser_controller.cc b/content/browser/bluetooth/bluetooth_device_chooser_controller.cc
index bf06bbd..1f54fa0f 100644
--- a/content/browser/bluetooth/bluetooth_device_chooser_controller.cc
+++ b/content/browser/bluetooth/bluetooth_device_chooser_controller.cc
@@ -223,7 +223,7 @@
   // devices so performing a Dual scan will find devices that the API is not
   // able to interact with. To avoid wasting power and confusing users with
   // devices they are not able to interact with, we only perform an LE Scan.
-  auto discovery_filter = base::MakeUnique<device::BluetoothDiscoveryFilter>(
+  auto discovery_filter = std::make_unique<device::BluetoothDiscoveryFilter>(
       device::BLUETOOTH_TRANSPORT_LE);
   for (const BluetoothUUID& service : services) {
     discovery_filter->AddUUID(service);
diff --git a/content/browser/bluetooth/frame_connected_bluetooth_devices.cc b/content/browser/bluetooth/frame_connected_bluetooth_devices.cc
index f36b44c..e64676e 100644
--- a/content/browser/bluetooth/frame_connected_bluetooth_devices.cc
+++ b/content/browser/bluetooth/frame_connected_bluetooth_devices.cc
@@ -64,7 +64,7 @@
   }
   device_address_to_id_map_[connection->GetDeviceAddress()] = device_id;
   auto gatt_connection_and_client =
-      base::MakeUnique<GATTConnectionAndServerClient>(std::move(connection),
+      std::make_unique<GATTConnectionAndServerClient>(std::move(connection),
                                                       std::move(client));
   device_id_to_connection_map_[device_id] =
       std::move(gatt_connection_and_client);
diff --git a/content/browser/bluetooth/frame_connected_bluetooth_devices_unittest.cc b/content/browser/bluetooth/frame_connected_bluetooth_devices_unittest.cc
index 4c78421..5ac4c8a 100644
--- a/content/browser/bluetooth/frame_connected_bluetooth_devices_unittest.cc
+++ b/content/browser/bluetooth/frame_connected_bluetooth_devices_unittest.cc
@@ -101,7 +101,7 @@
 
   std::unique_ptr<NiceMockBluetoothGattConnection> GetConnection(
       const std::string& address) {
-    return base::MakeUnique<NiceMockBluetoothGattConnection>(adapter_.get(),
+    return std::make_unique<NiceMockBluetoothGattConnection>(adapter_.get(),
                                                              address);
   }
 
diff --git a/content/browser/bluetooth/web_bluetooth_service_impl.cc b/content/browser/bluetooth/web_bluetooth_service_impl.cc
index 13d802fa..e5c7291d 100644
--- a/content/browser/bluetooth/web_bluetooth_service_impl.cc
+++ b/content/browser/bluetooth/web_bluetooth_service_impl.cc
@@ -1029,7 +1029,7 @@
   std::move(callback).Run(blink::mojom::WebBluetoothResult::SUCCESS);
   // Saving the BluetoothGattNotifySession keeps notifications active.
   auto gatt_notify_session_and_client =
-      base::MakeUnique<GATTNotifySessionAndCharacteristicClient>(
+      std::make_unique<GATTNotifySessionAndCharacteristicClient>(
           std::move(notify_session), std::move(client));
   characteristic_id_to_notify_session_[characteristic_instance_id] =
       std::move(gatt_notify_session_and_client);
diff --git a/content/browser/browser_context.cc b/content/browser/browser_context.cc
index fa8b0b7f1..5932fec 100644
--- a/content/browser/browser_context.cc
+++ b/content/browser/browser_context.cc
@@ -106,7 +106,7 @@
           browser_context->GetUserData(kStoragePartitionMapKeyName));
   if (!partition_map) {
     auto partition_map_owned =
-        base::MakeUnique<StoragePartitionImplMap>(browser_context);
+        std::make_unique<StoragePartitionImplMap>(browser_context);
     partition_map = partition_map_owned.get();
     browser_context->SetUserData(kStoragePartitionMapKeyName,
                                  std::move(partition_map_owned));
@@ -230,7 +230,7 @@
         storage::ExternalMountPoints::CreateRefCounted();
     context->SetUserData(
         kMountPointsKey,
-        base::MakeUnique<UserDataAdapter<storage::ExternalMountPoints>>(
+        std::make_unique<UserDataAdapter<storage::ExternalMountPoints>>(
             mount_points.get()));
   }
 
@@ -248,7 +248,7 @@
 
   if (!context->GetUserData(kBrowsingDataRemoverKey)) {
     std::unique_ptr<BrowsingDataRemoverImpl> remover =
-        base::MakeUnique<BrowsingDataRemoverImpl>(context);
+        std::make_unique<BrowsingDataRemoverImpl>(context);
     remover->SetEmbedderDelegate(context->GetBrowsingDataRemoverDelegate());
     context->SetUserData(kBrowsingDataRemoverKey, std::move(remover));
   }
@@ -461,10 +461,10 @@
   RemoveBrowserContextFromUserIdMap(browser_context);
   g_user_id_to_context.Get()[new_id] = browser_context;
   browser_context->SetUserData(kServiceUserId,
-                               base::MakeUnique<ServiceUserIdHolder>(new_id));
+                               std::make_unique<ServiceUserIdHolder>(new_id));
 
   browser_context->SetUserData(
-      kMojoWasInitialized, base::MakeUnique<base::SupportsUserData::Data>());
+      kMojoWasInitialized, std::make_unique<base::SupportsUserData::Data>());
 
   ServiceManagerConnection* service_manager_connection =
       ServiceManagerConnection::GetForProcess();
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
index 5144b68..89ea988 100644
--- a/content/browser/browser_main_loop.cc
+++ b/content/browser/browser_main_loop.cc
@@ -408,12 +408,12 @@
       base::StringToInt(thresholds[1], &critical_threshold_mb) &&
       moderate_threshold_mb >= critical_threshold_mb &&
       critical_threshold_mb >= 0) {
-    return base::MakeUnique<base::win::MemoryPressureMonitor>(
+    return std::make_unique<base::win::MemoryPressureMonitor>(
         moderate_threshold_mb, critical_threshold_mb);
   }
 
   // In absence of valid switches use the automatic defaults.
-  return base::MakeUnique<base::win::MemoryPressureMonitor>();
+  return std::make_unique<base::win::MemoryPressureMonitor>();
 }
 #endif  // defined(OS_WIN)
 
@@ -429,7 +429,7 @@
 GetDefaultTaskSchedulerInitParams() {
 #if defined(OS_ANDROID)
   // Mobile config, for iOS see ios/web/app/web_main_loop.cc.
-  return base::MakeUnique<base::TaskScheduler::InitParams>(
+  return std::make_unique<base::TaskScheduler::InitParams>(
       base::SchedulerWorkerPoolParams(
           base::RecommendedMaxNumberOfThreadsInPool(2, 8, 0.1, 0),
           base::TimeDelta::FromSeconds(30)),
@@ -444,7 +444,7 @@
           base::TimeDelta::FromSeconds(60)));
 #else
   // Desktop config.
-  return base::MakeUnique<base::TaskScheduler::InitParams>(
+  return std::make_unique<base::TaskScheduler::InitParams>(
       base::SchedulerWorkerPoolParams(
           base::RecommendedMaxNumberOfThreadsInPool(3, 8, 0.1, 0),
           base::TimeDelta::FromSeconds(30)),
@@ -770,7 +770,7 @@
 
   if (parameters_.create_discardable_memory) {
     discardable_shared_memory_manager_ =
-        base::MakeUnique<discardable_memory::DiscardableSharedMemoryManager>();
+        std::make_unique<discardable_memory::DiscardableSharedMemoryManager>();
     // TODO(boliu): kSingleProcess check is a temporary workaround for
     // in-process Android WebView. crbug.com/503724 tracks proper fix.
     if (!parsed_command_line_.HasSwitch(switches::kSingleProcess)) {
@@ -940,10 +940,10 @@
 
   DCHECK(!startup_task_runner_);
 #if defined(OS_ANDROID)
-  startup_task_runner_ = base::MakeUnique<StartupTaskRunner>(
+  startup_task_runner_ = std::make_unique<StartupTaskRunner>(
       base::Bind(&BrowserStartupComplete), base::ThreadTaskRunnerHandle::Get());
 #else
-  startup_task_runner_ = base::MakeUnique<StartupTaskRunner>(
+  startup_task_runner_ = std::make_unique<StartupTaskRunner>(
       base::Callback<void(int)>(), base::ThreadTaskRunnerHandle::Get());
 #endif
   StartupTask pre_create_threads =
@@ -1481,7 +1481,7 @@
   }
 
   if (!is_mus) {
-    host_frame_sink_manager_ = base::MakeUnique<viz::HostFrameSinkManager>();
+    host_frame_sink_manager_ = std::make_unique<viz::HostFrameSinkManager>();
 
     BrowserGpuChannelHostFactory::Initialize(established_gpu_channel);
 
@@ -1644,12 +1644,12 @@
 #if defined(OS_CHROMEOS)
   if (chromeos::switches::MemoryPressureHandlingEnabled()) {
     memory_pressure_monitor_ =
-        base::MakeUnique<base::chromeos::MemoryPressureMonitor>(
+        std::make_unique<base::chromeos::MemoryPressureMonitor>(
             chromeos::switches::GetMemoryPressureThresholds());
   }
 #elif defined(OS_MACOSX)
   memory_pressure_monitor_ =
-    base::MakeUnique<base::mac::MemoryPressureMonitor>();
+      std::make_unique<base::mac::MemoryPressureMonitor>();
 #elif defined(OS_WIN)
   memory_pressure_monitor_ =
       CreateWinMemoryPressureMonitor(parsed_command_line_);
@@ -1747,7 +1747,7 @@
   GetContentClient()->OnServiceManagerConnected(
       ServiceManagerConnection::GetForProcess());
 
-  tracing_controller_ = base::MakeUnique<content::TracingControllerImpl>();
+  tracing_controller_ = std::make_unique<content::TracingControllerImpl>();
   content::BackgroundTracingManagerImpl::GetInstance()
       ->AddMetadataGeneratorFunction();
 
@@ -1866,9 +1866,9 @@
   audio_manager_ = GetContentClient()->browser()->CreateAudioManager(
       MediaInternals::GetInstance());
   if (!audio_manager_) {
-    audio_manager_ = media::AudioManager::Create(
-        base::MakeUnique<media::AudioThreadImpl>(),
-        MediaInternals::GetInstance());
+    audio_manager_ =
+        media::AudioManager::Create(std::make_unique<media::AudioThreadImpl>(),
+                                    MediaInternals::GetInstance());
   }
   CHECK(audio_manager_);
   audio_system_ = media::AudioSystem::CreateInstance();
diff --git a/content/browser/browser_plugin/browser_plugin_guest.cc b/content/browser/browser_plugin/browser_plugin_guest.cc
index 54c72f7..fb880b4 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.cc
+++ b/content/browser/browser_plugin/browser_plugin_guest.cc
@@ -256,7 +256,7 @@
     return;
   current_tooltip_text_ = tooltip_text;
 
-  SendMessageToEmbedder(base::MakeUnique<BrowserPluginMsg_SetTooltipText>(
+  SendMessageToEmbedder(std::make_unique<BrowserPluginMsg_SetTooltipText>(
       browser_plugin_instance_id_, tooltip_text));
 }
 
@@ -427,7 +427,7 @@
 }
 
 void BrowserPluginGuest::PointerLockPermissionResponse(bool allow) {
-  SendMessageToEmbedder(base::MakeUnique<BrowserPluginMsg_SetMouseLock>(
+  SendMessageToEmbedder(std::make_unique<BrowserPluginMsg_SetMouseLock>(
       browser_plugin_instance_id(), allow));
 }
 
@@ -435,7 +435,7 @@
     const viz::SurfaceInfo& surface_info,
     const viz::SurfaceSequence& sequence) {
   has_attached_since_surface_set_ = false;
-  SendMessageToEmbedder(base::MakeUnique<BrowserPluginMsg_SetChildFrameSurface>(
+  SendMessageToEmbedder(std::make_unique<BrowserPluginMsg_SetChildFrameSurface>(
       browser_plugin_instance_id(), surface_info, sequence));
 }
 
@@ -703,7 +703,7 @@
   if (attached()) {
     RenderWidgetHostViewGuest* rwhv = static_cast<RenderWidgetHostViewGuest*>(
         web_contents()->GetRenderWidgetHostView());
-    SendMessageToEmbedder(base::MakeUnique<BrowserPluginMsg_GuestReady>(
+    SendMessageToEmbedder(std::make_unique<BrowserPluginMsg_GuestReady>(
         browser_plugin_instance_id(), rwhv->GetFrameSinkId()));
   }
 
@@ -713,7 +713,7 @@
 }
 
 void BrowserPluginGuest::RenderProcessGone(base::TerminationStatus status) {
-  SendMessageToEmbedder(base::MakeUnique<BrowserPluginMsg_GuestGone>(
+  SendMessageToEmbedder(std::make_unique<BrowserPluginMsg_GuestGone>(
       browser_plugin_instance_id()));
   switch (status) {
 #if defined(OS_CHROMEOS)
@@ -1048,7 +1048,7 @@
 }
 
 void BrowserPluginGuest::OnUnlockMouse() {
-  SendMessageToEmbedder(base::MakeUnique<BrowserPluginMsg_SetMouseLock>(
+  SendMessageToEmbedder(std::make_unique<BrowserPluginMsg_SetMouseLock>(
       browser_plugin_instance_id(), false));
 }
 
@@ -1092,7 +1092,7 @@
 
 void BrowserPluginGuest::OnHasTouchEventHandlers(bool accept) {
   SendMessageToEmbedder(
-      base::MakeUnique<BrowserPluginMsg_ShouldAcceptTouchEvents>(
+      std::make_unique<BrowserPluginMsg_ShouldAcceptTouchEvents>(
           browser_plugin_instance_id(), accept));
 }
 
@@ -1128,7 +1128,7 @@
 }
 
 void BrowserPluginGuest::OnTakeFocus(bool reverse) {
-  SendMessageToEmbedder(base::MakeUnique<BrowserPluginMsg_AdvanceFocus>(
+  SendMessageToEmbedder(std::make_unique<BrowserPluginMsg_AdvanceFocus>(
       browser_plugin_instance_id(), reverse));
 }
 
diff --git a/content/browser/browsing_data/browsing_data_filter_builder_impl.cc b/content/browser/browsing_data/browsing_data_filter_builder_impl.cc
index f354f09..e77b3a49 100644
--- a/content/browser/browsing_data/browsing_data_filter_builder_impl.cc
+++ b/content/browser/browsing_data/browsing_data_filter_builder_impl.cc
@@ -115,7 +115,7 @@
 // static
 std::unique_ptr<BrowsingDataFilterBuilder>
 BrowsingDataFilterBuilder::Create(Mode mode) {
-  return base::MakeUnique<BrowsingDataFilterBuilderImpl>(mode);
+  return std::make_unique<BrowsingDataFilterBuilderImpl>(mode);
 }
 
 // static
@@ -199,7 +199,7 @@
 std::unique_ptr<BrowsingDataFilterBuilder>
 BrowsingDataFilterBuilderImpl::Copy() const {
   std::unique_ptr<BrowsingDataFilterBuilderImpl> copy =
-      base::MakeUnique<BrowsingDataFilterBuilderImpl>(mode_);
+      std::make_unique<BrowsingDataFilterBuilderImpl>(mode_);
   copy->origins_ = origins_;
   copy->domains_ = domains_;
   return std::move(copy);
diff --git a/content/browser/browsing_data/browsing_data_remover_impl_unittest.cc b/content/browser/browsing_data/browsing_data_remover_impl_unittest.cc
index 3ec36b8..c21d994 100644
--- a/content/browser/browsing_data/browsing_data_remover_impl_unittest.cc
+++ b/content/browser/browsing_data/browsing_data_remover_impl_unittest.cc
@@ -118,7 +118,7 @@
 
 net::CanonicalCookie CreateCookieWithHost(const GURL& source) {
   std::unique_ptr<net::CanonicalCookie> cookie(
-      base::MakeUnique<net::CanonicalCookie>(
+      std::make_unique<net::CanonicalCookie>(
           "A", "1", source.host(), "/", base::Time::Now(), base::Time::Now(),
           base::Time(), false, false, net::CookieSameSite::DEFAULT_MODE,
           net::COOKIE_PRIORITY_MEDIUM));
@@ -345,7 +345,7 @@
   void AddChannelIDWithTimes(const std::string& server_identifier,
                              base::Time creation_time) {
     GetChannelIDStore()->SetChannelID(
-        base::MakeUnique<net::ChannelIDStore::ChannelID>(
+        std::make_unique<net::ChannelIDStore::ChannelID>(
             server_identifier, creation_time, crypto::ECPrivateKey::Create()));
   }
 
diff --git a/content/browser/browsing_data/clear_site_data_throttle.cc b/content/browser/browsing_data/clear_site_data_throttle.cc
index 934cbad3..39133da 100644
--- a/content/browser/browsing_data/clear_site_data_throttle.cc
+++ b/content/browser/browsing_data/clear_site_data_throttle.cc
@@ -270,7 +270,7 @@
     return nullptr;
 
   return base::WrapUnique(new ClearSiteDataThrottle(
-      request, base::MakeUnique<ConsoleMessagesDelegate>()));
+      request, std::make_unique<ConsoleMessagesDelegate>()));
 }
 
 ClearSiteDataThrottle::~ClearSiteDataThrottle() {
diff --git a/content/browser/browsing_data/clear_site_data_throttle_unittest.cc b/content/browser/browsing_data/clear_site_data_throttle_unittest.cc
index 5ea58c89..0bdaeaac 100644
--- a/content/browser/browsing_data/clear_site_data_throttle_unittest.cc
+++ b/content/browser/browsing_data/clear_site_data_throttle_unittest.cc
@@ -234,7 +234,7 @@
     std::unique_ptr<net::URLRequest> request(context.CreateRequest(
         url, net::DEFAULT_PRIORITY, nullptr, TRAFFIC_ANNOTATION_FOR_TESTS));
     TestThrottle throttle(request.get(),
-                          base::MakeUnique<ConsoleMessagesDelegate>());
+                          std::make_unique<ConsoleMessagesDelegate>());
     MockResourceThrottleDelegate delegate;
     throttle.set_delegate_for_testing(&delegate);
     throttle.SetResponseHeaders(std::string(kClearSiteDataHeaderPrefix) +
@@ -473,7 +473,7 @@
           context.CreateRequest(GURL(test_origin.origin), net::DEFAULT_PRIORITY,
                                 nullptr, TRAFFIC_ANNOTATION_FOR_TESTS));
       TestThrottle throttle(request.get(),
-                            base::MakeUnique<ConsoleMessagesDelegate>());
+                            std::make_unique<ConsoleMessagesDelegate>());
       throttle.SetResponseHeaders(test_case.response_headers);
 
       MockResourceThrottleDelegate delegate;
@@ -586,9 +586,9 @@
 
     std::string output_buffer;
     std::unique_ptr<RedirectableTestThrottle> throttle =
-        base::MakeUnique<RedirectableTestThrottle>(
+        std::make_unique<RedirectableTestThrottle>(
             request.get(),
-            base::MakeUnique<StringConsoleMessagesDelegate>(&output_buffer));
+            std::make_unique<StringConsoleMessagesDelegate>(&output_buffer));
 
     MockResourceThrottleDelegate delegate;
     throttle->set_delegate_for_testing(&delegate);
diff --git a/content/browser/browsing_data/conditional_cache_deletion_helper_browsertest.cc b/content/browser/browsing_data/conditional_cache_deletion_helper_browsertest.cc
index 57a8b12d..4f6d6122 100644
--- a/content/browser/browsing_data/conditional_cache_deletion_helper_browsertest.cc
+++ b/content/browser/browsing_data/conditional_cache_deletion_helper_browsertest.cc
@@ -45,14 +45,14 @@
 class ConditionalCacheDeletionHelperBrowserTest : public ContentBrowserTest {
  public:
   void SetUpOnMainThread() override {
-    cache_util_ = base::MakeUnique<CacheTestUtil>(
+    cache_util_ = std::make_unique<CacheTestUtil>(
         content::BrowserContext::GetDefaultStoragePartition(
             shell()->web_contents()->GetBrowserContext()));
     done_callback_ =
         base::Bind(&ConditionalCacheDeletionHelperBrowserTest::DoneCallback,
                    base::Unretained(this));
     // UI and IO thread synchronization.
-    waitable_event_ = base::MakeUnique<base::WaitableEvent>(
+    waitable_event_ = std::make_unique<base::WaitableEvent>(
         base::WaitableEvent::ResetPolicy::AUTOMATIC,
         base::WaitableEvent::InitialState::NOT_SIGNALED);
   }
diff --git a/content/browser/cache_storage/cache_storage.cc b/content/browser/cache_storage/cache_storage.cc
index fa919c1..73bbfe4 100644
--- a/content/browser/cache_storage/cache_storage.cc
+++ b/content/browser/cache_storage/cache_storage.cc
@@ -228,7 +228,7 @@
   }
 
   void LoadIndex(CacheStorageIndexLoadCallback callback) override {
-    std::move(callback).Run(base::MakeUnique<CacheStorageIndex>());
+    std::move(callback).Run(std::make_unique<CacheStorageIndex>());
   }
 
   void NotifyCacheCreated(
@@ -420,7 +420,7 @@
     std::unique_ptr<std::set<std::string>> cache_dirs(
         new std::set<std::string>);
 
-    auto index = base::MakeUnique<CacheStorageIndex>();
+    auto index = std::make_unique<CacheStorageIndex>();
     for (int i = 0, max = protobuf_index.cache_size(); i < max; ++i) {
       const proto::CacheStorageIndex::Cache& cache = protobuf_index.cache(i);
       DCHECK(cache.has_cache_dir());
@@ -1036,7 +1036,7 @@
 
     CacheStorageCache* cache_ptr = cache_handle->value();
     cache_ptr->Match(
-        base::MakeUnique<ServiceWorkerFetchRequest>(*request), match_params,
+        std::make_unique<ServiceWorkerFetchRequest>(*request), match_params,
         base::BindOnce(&CacheStorage::MatchAllCachesDidMatch,
                        weak_factory_.GetWeakPtr(),
                        base::Passed(std::move(cache_handle)),
diff --git a/content/browser/cache_storage/cache_storage_blob_to_disk_cache_unittest.cc b/content/browser/cache_storage/cache_storage_blob_to_disk_cache_unittest.cc
index a650aaa..506c020 100644
--- a/content/browser/cache_storage/cache_storage_blob_to_disk_cache_unittest.cc
+++ b/content/browser/cache_storage/cache_storage_blob_to_disk_cache_unittest.cc
@@ -62,7 +62,7 @@
 // the memory.
 std::unique_ptr<storage::BlobProtocolHandler> CreateMockBlobProtocolHandler(
     storage::BlobStorageContext* blob_storage_context) {
-  return base::MakeUnique<storage::BlobProtocolHandler>(blob_storage_context,
+  return std::make_unique<storage::BlobProtocolHandler>(blob_storage_context,
                                                         nullptr);
 }
 
diff --git a/content/browser/cache_storage/cache_storage_cache.cc b/content/browser/cache_storage/cache_storage_cache.cc
index 377a756..a20a008 100644
--- a/content/browser/cache_storage/cache_storage_cache.cc
+++ b/content/browser/cache_storage/cache_storage_cache.cc
@@ -224,7 +224,7 @@
 std::unique_ptr<ServiceWorkerFetchRequest> CreateRequest(
     const proto::CacheMetadata& metadata,
     const GURL& request_url) {
-  auto request = base::MakeUnique<ServiceWorkerFetchRequest>(
+  auto request = std::make_unique<ServiceWorkerFetchRequest>(
       request_url, metadata.request().method(), ServiceWorkerHeaderMap(),
       Referrer(), false);
 
@@ -241,7 +241,7 @@
     const proto::CacheMetadata& metadata,
     const std::string& cache_name) {
   std::unique_ptr<std::vector<GURL>> url_list =
-      base::MakeUnique<std::vector<GURL>>();
+      std::make_unique<std::vector<GURL>>();
   // From Chrome 57, proto::CacheMetadata's url field was deprecated.
   UMA_HISTOGRAM_BOOLEAN("ServiceWorkerCache.Response.HasDeprecatedURL",
                         metadata.response().has_url());
@@ -254,7 +254,7 @@
   }
 
   std::unique_ptr<ServiceWorkerHeaderMap> headers =
-      base::MakeUnique<ServiceWorkerHeaderMap>();
+      std::make_unique<ServiceWorkerHeaderMap>();
   for (int i = 0; i < metadata.response().headers_size(); ++i) {
     const proto::CacheHeaderMap header = metadata.response().headers(i);
     DCHECK_EQ(std::string::npos, header.name().find('\0'));
@@ -262,7 +262,7 @@
     headers->insert(std::make_pair(header.name(), header.value()));
   }
 
-  return base::MakeUnique<ServiceWorkerResponse>(
+  return std::make_unique<ServiceWorkerResponse>(
       std::move(url_list), metadata.response().status_code(),
       metadata.response().status_text(),
       ProtoResponseTypeToFetchResponseType(metadata.response().response_type()),
@@ -270,7 +270,7 @@
       blink::kWebServiceWorkerResponseErrorUnknown,
       base::Time::FromInternalValue(metadata.response().response_time()),
       true /* is_in_cache_storage */, cache_name,
-      base::MakeUnique<ServiceWorkerHeaderList>(
+      std::make_unique<ServiceWorkerHeaderList>(
           metadata.response().cors_exposed_header_names().begin(),
           metadata.response().cors_exposed_header_names().end()));
 }
@@ -380,7 +380,7 @@
         options(options),
         callback(std::move(callback)),
         query_types(query_types),
-        matches(base::MakeUnique<QueryCacheResults>()) {}
+        matches(std::make_unique<QueryCacheResults>()) {}
 
   ~QueryCacheContext() {
     // If the CacheStorageCache is deleted before a backend operation to open
@@ -734,7 +734,7 @@
   if (!options.ignore_method && request && !request->method.empty() &&
       request->method != "GET") {
     std::move(callback).Run(CACHE_STORAGE_OK,
-                            base::MakeUnique<QueryCacheResults>());
+                            std::make_unique<QueryCacheResults>());
     return;
   }
 
@@ -984,7 +984,7 @@
   }
 
   std::unique_ptr<ServiceWorkerResponse> response =
-      base::MakeUnique<ServiceWorkerResponse>(match_all_responses->at(0));
+      std::make_unique<ServiceWorkerResponse>(match_all_responses->at(0));
 
   std::move(callback).Run(CACHE_STORAGE_OK, std::move(response),
                           std::move(match_all_handles->at(0)));
@@ -1019,9 +1019,9 @@
     return;
   }
 
-  std::unique_ptr<Responses> out_responses = base::MakeUnique<Responses>();
+  std::unique_ptr<Responses> out_responses = std::make_unique<Responses>();
   std::unique_ptr<BlobDataHandles> out_handles =
-      base::MakeUnique<BlobDataHandles>();
+      std::make_unique<BlobDataHandles>();
   out_responses->reserve(query_cache_results->size());
   out_handles->reserve(query_cache_results->size());
 
@@ -1179,7 +1179,7 @@
           operation.request.is_reload));
 
   std::unique_ptr<ServiceWorkerResponse> response =
-      base::MakeUnique<ServiceWorkerResponse>(operation.response);
+      std::make_unique<ServiceWorkerResponse>(operation.response);
   std::unique_ptr<storage::BlobDataHandle> blob_data_handle;
 
   if (!response->blob_uuid.empty()) {
@@ -1222,7 +1222,7 @@
   // cache padding.
   // TODO(cmumford): Research alternatives to this explicit delete as it
   // seriously impacts put performance.
-  auto delete_request = base::MakeUnique<ServiceWorkerFetchRequest>(
+  auto delete_request = std::make_unique<ServiceWorkerFetchRequest>(
       put_context->request->url, "", ServiceWorkerHeaderMap(), Referrer(),
       false);
 
@@ -1371,7 +1371,7 @@
   disk_cache::ScopedEntryPtr entry(std::move(put_context->cache_entry));
   put_context->cache_entry = NULL;
 
-  auto blob_to_cache = base::MakeUnique<CacheStorageBlobToDiskCache>();
+  auto blob_to_cache = std::make_unique<CacheStorageBlobToDiskCache>();
   CacheStorageBlobToDiskCache* blob_to_cache_raw = blob_to_cache.get();
   BlobToDiskCacheIDMap::KeyType blob_to_cache_key =
       active_blob_to_disk_cache_writers_.Add(std::move(blob_to_cache));
@@ -1584,7 +1584,7 @@
     return;
   }
 
-  std::unique_ptr<Requests> out_requests = base::MakeUnique<Requests>();
+  std::unique_ptr<Requests> out_requests = std::make_unique<Requests>();
   out_requests->reserve(query_cache_results->size());
   for (const auto& result : *query_cache_results)
     out_requests->push_back(*result.request);
@@ -1787,7 +1787,7 @@
   if (features::IsMojoBlobsEnabled()) {
     blink::mojom::BlobPtr blob_ptr;
     storage::BlobImpl::Create(
-        base::MakeUnique<storage::BlobDataHandle>(*result),
+        std::make_unique<storage::BlobDataHandle>(*result),
         MakeRequest(&blob_ptr));
     response->blob =
         base::MakeRefCounted<storage::BlobHandle>(std::move(blob_ptr));
diff --git a/content/browser/cache_storage/cache_storage_cache_unittest.cc b/content/browser/cache_storage/cache_storage_cache_unittest.cc
index 9e8391b5..e973f4b 100644
--- a/content/browser/cache_storage/cache_storage_cache_unittest.cc
+++ b/content/browser/cache_storage/cache_storage_cache_unittest.cc
@@ -390,7 +390,7 @@
 
     CreateRequests(blob_storage_context);
 
-    cache_ = base::MakeUnique<TestCacheStorageCache>(
+    cache_ = std::make_unique<TestCacheStorageCache>(
         GURL(kOrigin), kCacheName, temp_dir_path, nullptr /* CacheStorage */,
         BrowserContext::GetDefaultStoragePartition(&browser_context_)
             ->GetURLRequestContext(),
@@ -443,22 +443,22 @@
 
     body_response_ = CreateResponse(
         "http://example.com/body.html",
-        base::MakeUnique<ServiceWorkerHeaderMap>(headers), blob_handle_->uuid(),
+        std::make_unique<ServiceWorkerHeaderMap>(headers), blob_handle_->uuid(),
         expected_blob_data_.size(), blob,
-        base::MakeUnique<
+        std::make_unique<
             ServiceWorkerHeaderList>() /* cors_exposed_header_names */);
 
     body_response_with_query_ =
         CreateResponse("http://example.com/body.html?query=test",
-                       base::MakeUnique<ServiceWorkerHeaderMap>(headers),
+                       std::make_unique<ServiceWorkerHeaderMap>(headers),
                        blob_handle_->uuid(), expected_blob_data_.size(), blob,
-                       base::MakeUnique<ServiceWorkerHeaderList>(
+                       std::make_unique<ServiceWorkerHeaderList>(
                            1, "a") /* cors_exposed_header_names */);
 
     no_body_response_ = CreateResponse(
         "http://example.com/no_body.html",
-        base::MakeUnique<ServiceWorkerHeaderMap>(headers), "", 0, nullptr,
-        base::MakeUnique<
+        std::make_unique<ServiceWorkerHeaderMap>(headers), "", 0, nullptr,
+        std::make_unique<
             ServiceWorkerHeaderList>() /* cors_exposed_header_names */);
   }
 
@@ -470,7 +470,7 @@
       scoped_refptr<storage::BlobHandle> blob_handle,
       std::unique_ptr<ServiceWorkerHeaderList> cors_exposed_header_names) {
     return ServiceWorkerResponse(
-        base::MakeUnique<std::vector<GURL>>(1, GURL(url)), 200, "OK",
+        std::make_unique<std::vector<GURL>>(1, GURL(url)), 200, "OK",
         network::mojom::FetchResponseType::kDefault, std::move(headers),
         blob_uuid, blob_size, std::move(blob_handle),
         blink::kWebServiceWorkerResponseErrorUnknown, base::Time::Now(),
@@ -481,7 +481,7 @@
 
   std::unique_ptr<ServiceWorkerFetchRequest> CopyFetchRequest(
       const ServiceWorkerFetchRequest& request) {
-    return base::MakeUnique<ServiceWorkerFetchRequest>(
+    return std::make_unique<ServiceWorkerFetchRequest>(
         request.url, request.method, request.headers, request.referrer,
         request.is_reload);
   }
@@ -1547,13 +1547,13 @@
   // CacheStorageCache depends on ServiceWorkerResponse having caseless
   // headers so that it can quickly lookup vary headers.
   ServiceWorkerResponse response(
-      base::MakeUnique<std::vector<GURL>>(), 200, "OK",
+      std::make_unique<std::vector<GURL>>(), 200, "OK",
       network::mojom::FetchResponseType::kDefault,
-      base::MakeUnique<ServiceWorkerHeaderMap>(), "", 0, nullptr /* blob */,
+      std::make_unique<ServiceWorkerHeaderMap>(), "", 0, nullptr /* blob */,
       blink::kWebServiceWorkerResponseErrorUnknown, base::Time(),
       false /* is_in_cache_storage */,
       std::string() /* cache_storage_cache_name */,
-      base::MakeUnique<
+      std::make_unique<
           ServiceWorkerHeaderList>() /* cors_exposed_header_names */);
   response.headers["content-type"] = "foo";
   response.headers["Content-Type"] = "bar";
diff --git a/content/browser/cache_storage/cache_storage_manager_unittest.cc b/content/browser/cache_storage/cache_storage_manager_unittest.cc
index 2e7af40..f52c7d32 100644
--- a/content/browser/cache_storage/cache_storage_manager_unittest.cc
+++ b/content/browser/cache_storage/cache_storage_manager_unittest.cc
@@ -343,7 +343,7 @@
       const CacheStorageCacheQueryParams& match_params =
           CacheStorageCacheQueryParams()) {
     std::unique_ptr<ServiceWorkerFetchRequest> unique_request =
-        base::MakeUnique<ServiceWorkerFetchRequest>(request);
+        std::make_unique<ServiceWorkerFetchRequest>(request);
 
     base::RunLoop loop;
     cache_manager_->MatchCache(
@@ -370,7 +370,7 @@
       const CacheStorageCacheQueryParams& match_params =
           CacheStorageCacheQueryParams()) {
     std::unique_ptr<ServiceWorkerFetchRequest> unique_request =
-        base::MakeUnique<ServiceWorkerFetchRequest>(request);
+        std::make_unique<ServiceWorkerFetchRequest>(request);
     base::RunLoop loop;
     cache_manager_->MatchAllCaches(
         origin, std::move(unique_request), match_params,
@@ -423,16 +423,16 @@
     }
 
     std::unique_ptr<std::vector<GURL>> url_list =
-        base::MakeUnique<std::vector<GURL>>();
+        std::make_unique<std::vector<GURL>>();
     url_list->push_back(request.url);
     ServiceWorkerResponse response(
         std::move(url_list), status_code, "OK", response_type,
-        base::MakeUnique<ServiceWorkerHeaderMap>(response_headers), blob_uuid,
+        std::make_unique<ServiceWorkerHeaderMap>(response_headers), blob_uuid,
         request.url.spec().size(), blob_handle,
         blink::kWebServiceWorkerResponseErrorUnknown, base::Time(),
         false /* is_in_cache_storage */,
         std::string() /* cache_storage_cache_name */,
-        base::MakeUnique<
+        std::make_unique<
             ServiceWorkerHeaderList>() /* cors_exposed_header_names */);
 
     CacheStorageBatchOperation operation;
diff --git a/content/browser/cache_storage/cache_storage_operation_unittest.cc b/content/browser/cache_storage/cache_storage_operation_unittest.cc
index efb9860..792f324 100644
--- a/content/browser/cache_storage/cache_storage_operation_unittest.cc
+++ b/content/browser/cache_storage/cache_storage_operation_unittest.cc
@@ -38,7 +38,7 @@
  protected:
   CacheStorageOperationTest()
       : mock_task_runner_(new base::TestMockTimeTaskRunner()) {
-    operation_ = base::MakeUnique<CacheStorageOperation>(
+    operation_ = std::make_unique<CacheStorageOperation>(
         base::BindOnce(&TestTask::Run, base::Unretained(&task_)),
         CacheStorageSchedulerClient::CLIENT_STORAGE, mock_task_runner_);
   }
diff --git a/content/browser/cache_storage/cache_storage_scheduler.cc b/content/browser/cache_storage/cache_storage_scheduler.cc
index 0ceb62983..759fd61 100644
--- a/content/browser/cache_storage/cache_storage_scheduler.cc
+++ b/content/browser/cache_storage/cache_storage_scheduler.cc
@@ -28,7 +28,7 @@
   CACHE_STORAGE_SCHEDULER_UMA(COUNTS_10000, "QueueLength", client_type_,
                               pending_operations_.size());
 
-  pending_operations_.push_back(base::MakeUnique<CacheStorageOperation>(
+  pending_operations_.push_back(std::make_unique<CacheStorageOperation>(
       std::move(closure), client_type_, base::ThreadTaskRunnerHandle::Get()));
   RunOperationIfIdle();
 }
diff --git a/content/browser/child_process_launcher_helper_mac.cc b/content/browser/child_process_launcher_helper_mac.cc
index ee617db..c587091 100644
--- a/content/browser/child_process_launcher_helper_mac.cc
+++ b/content/browser/child_process_launcher_helper_mac.cc
@@ -62,7 +62,7 @@
     // problem.
     options->environ.insert(std::make_pair("OS_ACTIVITY_MODE", "disable"));
 
-    seatbelt_exec_client_ = base::MakeUnique<sandbox::SeatbeltExecClient>();
+    seatbelt_exec_client_ = std::make_unique<sandbox::SeatbeltExecClient>();
     seatbelt_exec_client_->SetProfile(
         service_manager::kSeatbeltPolicyString_renderer_v2);
 
diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc
index 0664ba0..2819d9ff 100644
--- a/content/browser/child_process_security_policy_impl.cc
+++ b/content/browser/child_process_security_policy_impl.cc
@@ -1026,7 +1026,7 @@
     return;
   }
 
-  security_state_[child_id] = base::MakeUnique<SecurityState>();
+  security_state_[child_id] = std::make_unique<SecurityState>();
 }
 
 bool ChildProcessSecurityPolicyImpl::ChildProcessHasPermissionsForFile(
diff --git a/content/browser/compositor/gpu_process_transport_factory.cc b/content/browser/compositor/gpu_process_transport_factory.cc
index ae00e5d..33c7da4 100644
--- a/content/browser/compositor/gpu_process_transport_factory.cc
+++ b/content/browser/compositor/gpu_process_transport_factory.cc
@@ -340,7 +340,7 @@
 #elif defined(OS_ANDROID)
   validator.reset(new viz::CompositorOverlayCandidateValidatorAndroid());
 #elif defined(OS_WIN)
-  validator = base::MakeUnique<viz::CompositorOverlayCandidateValidatorWin>();
+  validator = std::make_unique<viz::CompositorOverlayCandidateValidatorWin>();
 #endif
 
   return validator;
@@ -530,7 +530,7 @@
   if (!display_output_surface) {
     if (!use_gpu_compositing) {
       display_output_surface =
-          base::MakeUnique<SoftwareBrowserCompositorOutputSurface>(
+          std::make_unique<SoftwareBrowserCompositorOutputSurface>(
               CreateSoftwareOutputDevice(compositor->widget()), vsync_callback,
               compositor->task_runner());
     } else {
@@ -538,7 +538,7 @@
       const auto& capabilities = context_provider->ContextCapabilities();
       if (data->surface_handle == gpu::kNullSurfaceHandle) {
         display_output_surface =
-            base::MakeUnique<OffscreenBrowserCompositorOutputSurface>(
+            std::make_unique<OffscreenBrowserCompositorOutputSurface>(
                 context_provider, vsync_callback,
                 std::unique_ptr<viz::CompositorOverlayCandidateValidator>());
       } else if (capabilities.surfaceless) {
@@ -546,7 +546,7 @@
         const auto& gpu_feature_info = context_provider->GetGpuFeatureInfo();
         bool disable_overlay_ca_layers = gpu_feature_info.IsWorkaroundEnabled(
             gpu::DISABLE_OVERLAY_CA_LAYERS);
-        display_output_surface = base::MakeUnique<GpuOutputSurfaceMac>(
+        display_output_surface = std::make_unique<GpuOutputSurfaceMac>(
             compositor->widget(), context_provider, data->surface_handle,
             vsync_callback,
             CreateOverlayCandidateValidator(compositor->widget(),
@@ -554,7 +554,7 @@
             GetGpuMemoryBufferManager());
 #else
         auto gpu_output_surface =
-            base::MakeUnique<GpuSurfacelessBrowserCompositorOutputSurface>(
+            std::make_unique<GpuSurfacelessBrowserCompositorOutputSurface>(
                 context_provider, data->surface_handle, vsync_callback,
                 CreateOverlayCandidateValidator(compositor->widget()),
                 GL_TEXTURE_2D, GL_RGB,
@@ -573,7 +573,7 @@
         validator = CreateOverlayCandidateValidator(compositor->widget());
 #endif
         auto gpu_output_surface =
-            base::MakeUnique<GpuBrowserCompositorOutputSurface>(
+            std::make_unique<GpuBrowserCompositorOutputSurface>(
                 context_provider, vsync_callback, std::move(validator));
         gpu_vsync_control = gpu_output_surface.get();
         display_output_surface = std::move(gpu_output_surface);
@@ -592,24 +592,24 @@
   viz::BeginFrameSource* begin_frame_source = nullptr;
   if (compositor->external_begin_frames_enabled()) {
     external_begin_frame_controller =
-        base::MakeUnique<ExternalBeginFrameController>(compositor.get());
+        std::make_unique<ExternalBeginFrameController>(compositor.get());
     begin_frame_source = external_begin_frame_controller->begin_frame_source();
   } else if (!disable_display_vsync_) {
     if (gpu_vsync_control && IsGpuVSyncSignalSupported()) {
       gpu_vsync_begin_frame_source =
-          base::MakeUnique<GpuVSyncBeginFrameSource>(gpu_vsync_control);
+          std::make_unique<GpuVSyncBeginFrameSource>(gpu_vsync_control);
       begin_frame_source = gpu_vsync_begin_frame_source.get();
     } else {
       synthetic_begin_frame_source =
-          base::MakeUnique<viz::DelayBasedBeginFrameSource>(
-              base::MakeUnique<viz::DelayBasedTimeSource>(
+          std::make_unique<viz::DelayBasedBeginFrameSource>(
+              std::make_unique<viz::DelayBasedTimeSource>(
                   compositor->task_runner().get()));
       begin_frame_source = synthetic_begin_frame_source.get();
     }
   } else {
     synthetic_begin_frame_source =
-        base::MakeUnique<viz::BackToBackBeginFrameSource>(
-            base::MakeUnique<viz::DelayBasedTimeSource>(
+        std::make_unique<viz::BackToBackBeginFrameSource>(
+            std::make_unique<viz::DelayBasedTimeSource>(
                 compositor->task_runner().get()));
     begin_frame_source = synthetic_begin_frame_source.get();
   }
@@ -630,17 +630,17 @@
     data->display->RemoveObserver(data->external_begin_frame_controller.get());
   }
 
-  auto scheduler = base::MakeUnique<viz::DisplayScheduler>(
+  auto scheduler = std::make_unique<viz::DisplayScheduler>(
       begin_frame_source, compositor->task_runner().get(),
       display_output_surface->capabilities().max_frames_pending,
       wait_for_all_pipeline_stages_before_draw_);
 
   // The Display owns and uses the |display_output_surface| created above.
-  data->display = base::MakeUnique<viz::Display>(
+  data->display = std::make_unique<viz::Display>(
       viz::ServerSharedBitmapManager::current(), GetGpuMemoryBufferManager(),
       renderer_settings_, compositor->frame_sink_id(),
       std::move(display_output_surface), std::move(scheduler),
-      base::MakeUnique<viz::TextureMailboxDeleter>(
+      std::make_unique<viz::TextureMailboxDeleter>(
           compositor->task_runner().get()));
   GetFrameSinkManager()->RegisterBeginFrameSource(begin_frame_source,
                                                   compositor->frame_sink_id());
@@ -659,12 +659,12 @@
   // same ContextProvider as the Display's output surface.
   auto layer_tree_frame_sink =
       vulkan_context_provider
-          ? base::MakeUnique<viz::DirectLayerTreeFrameSink>(
+          ? std::make_unique<viz::DirectLayerTreeFrameSink>(
                 compositor->frame_sink_id(), GetHostFrameSinkManager(),
                 GetFrameSinkManager(), data->display.get(),
                 static_cast<scoped_refptr<viz::VulkanContextProvider>>(
                     vulkan_context_provider))
-          : base::MakeUnique<viz::DirectLayerTreeFrameSink>(
+          : std::make_unique<viz::DirectLayerTreeFrameSink>(
                 compositor->frame_sink_id(), GetHostFrameSinkManager(),
                 GetFrameSinkManager(), data->display.get(), context_provider,
                 shared_worker_context_provider_, GetGpuMemoryBufferManager(),
@@ -957,7 +957,7 @@
 
   gfx::AcceleratedWidget widget = compositor->widget();
 
-  auto data = base::MakeUnique<PerCompositorData>();
+  auto data = std::make_unique<PerCompositorData>();
   if (widget == gfx::kNullAcceleratedWidget) {
     data->surface_handle = gpu::kNullSurfaceHandle;
   } else {
diff --git a/content/browser/compositor/reflector_impl.cc b/content/browser/compositor/reflector_impl.cc
index 69b3639..8e7b140f7 100644
--- a/content/browser/compositor/reflector_impl.cc
+++ b/content/browser/compositor/reflector_impl.cc
@@ -74,7 +74,7 @@
   DCHECK(layer->GetCompositor());
   DCHECK(mirroring_layers_.end() == FindLayerData(layer));
 
-  mirroring_layers_.push_back(base::MakeUnique<LayerData>(layer));
+  mirroring_layers_.push_back(std::make_unique<LayerData>(layer));
   if (mailbox_)
     mirroring_layers_.back()->needs_set_mailbox = true;
   mirrored_compositor_->ScheduleFullRedraw();
diff --git a/content/browser/compositor/reflector_impl_unittest.cc b/content/browser/compositor/reflector_impl_unittest.cc
index 54696138..d1a2a85 100644
--- a/content/browser/compositor/reflector_impl_unittest.cc
+++ b/content/browser/compositor/reflector_impl_unittest.cc
@@ -134,7 +134,7 @@
     ui::ContextFactory* context_factory = nullptr;
     ui::ContextFactoryPrivate* context_factory_private = nullptr;
 
-    message_loop_ = base::MakeUnique<base::MessageLoop>();
+    message_loop_ = std::make_unique<base::MessageLoop>();
     ui::InitializeContextFactoryForTests(enable_pixel_output, &context_factory,
                                          &context_factory_private);
     ImageTransportFactory::SetFactory(
@@ -142,7 +142,7 @@
     task_runner_ = message_loop_->task_runner();
     compositor_task_runner_ = new FakeTaskRunner();
     begin_frame_source_.reset(new viz::DelayBasedBeginFrameSource(
-        base::MakeUnique<viz::DelayBasedTimeSource>(
+        std::make_unique<viz::DelayBasedTimeSource>(
             compositor_task_runner_.get())));
     compositor_.reset(new ui::Compositor(
         context_factory_private->AllocateFrameSinkId(), context_factory,
@@ -154,7 +154,7 @@
     auto context_provider = cc::TestContextProvider::Create();
     context_provider->BindToCurrentThread();
     output_surface_ =
-        base::MakeUnique<TestOutputSurface>(std::move(context_provider));
+        std::make_unique<TestOutputSurface>(std::move(context_provider));
 
     root_layer_.reset(new ui::Layer(ui::LAYER_SOLID_COLOR));
     compositor_->SetRootLayer(root_layer_.get());
@@ -166,7 +166,7 @@
   }
 
   void SetUpReflector() {
-    reflector_ = base::MakeUnique<ReflectorImpl>(compositor_.get(),
+    reflector_ = std::make_unique<ReflectorImpl>(compositor_.get(),
                                                  mirroring_layer_.get());
     reflector_->OnSourceSurfaceReady(output_surface_.get());
   }
diff --git a/content/browser/compositor/software_browser_compositor_output_surface_unittest.cc b/content/browser/compositor/software_browser_compositor_output_surface_unittest.cc
index 4e8cc64..f39783b1 100644
--- a/content/browser/compositor/software_browser_compositor_output_surface_unittest.cc
+++ b/content/browser/compositor/software_browser_compositor_output_surface_unittest.cc
@@ -65,7 +65,7 @@
 class SoftwareBrowserCompositorOutputSurfaceTest : public testing::Test {
  public:
   SoftwareBrowserCompositorOutputSurfaceTest()
-      : begin_frame_source_(base::MakeUnique<viz::DelayBasedTimeSource>(
+      : begin_frame_source_(std::make_unique<viz::DelayBasedTimeSource>(
             message_loop_.task_runner().get())) {}
   ~SoftwareBrowserCompositorOutputSurfaceTest() override = default;
 
@@ -118,7 +118,7 @@
 std::unique_ptr<content::BrowserCompositorOutputSurface>
 SoftwareBrowserCompositorOutputSurfaceTest::CreateSurface(
     std::unique_ptr<viz::SoftwareOutputDevice> device) {
-  return base::MakeUnique<content::SoftwareBrowserCompositorOutputSurface>(
+  return std::make_unique<content::SoftwareBrowserCompositorOutputSurface>(
       std::move(device),
       base::Bind(
           &SoftwareBrowserCompositorOutputSurfaceTest::UpdateVSyncParameters,
diff --git a/content/browser/cross_site_transfer_browsertest.cc b/content/browser/cross_site_transfer_browsertest.cc
index f18e993..d8348f3 100644
--- a/content/browser/cross_site_transfer_browsertest.cc
+++ b/content/browser/cross_site_transfer_browsertest.cc
@@ -62,7 +62,7 @@
     ASSERT_FALSE(throttle_created_);
     // If this is a request for the tracked URL, add a throttle to track it.
     if (request->url() == tracked_url_)
-      throttles->push_back(base::MakeUnique<TrackingThrottle>(request, this));
+      throttles->push_back(std::make_unique<TrackingThrottle>(request, this));
   }
 
   // Starts tracking a URL.  The request for previously tracked URL, if any,
diff --git a/content/browser/dedicated_worker/dedicated_worker_host.cc b/content/browser/dedicated_worker/dedicated_worker_host.cc
index 9451f1e..e693314a 100644
--- a/content/browser/dedicated_worker/dedicated_worker_host.cc
+++ b/content/browser/dedicated_worker/dedicated_worker_host.cc
@@ -59,7 +59,7 @@
     // with the request for |DedicatedWorkerFactory|, enforce that the worker's
     // origin either matches the creating document's origin, or is unique.
     mojo::MakeStrongBinding(
-        base::MakeUnique<DedicatedWorkerHost>(process_id_, origin),
+        std::make_unique<DedicatedWorkerHost>(process_id_, origin),
         FilterRendererExposedInterfaces(
             blink::mojom::kNavigation_DedicatedWorkerSpec, process_id_,
             std::move(request)));
@@ -78,7 +78,7 @@
     int process_id,
     RenderFrameHost* frame,
     blink::mojom::DedicatedWorkerFactoryRequest request) {
-  mojo::MakeStrongBinding(base::MakeUnique<DedicatedWorkerFactoryImpl>(
+  mojo::MakeStrongBinding(std::make_unique<DedicatedWorkerFactoryImpl>(
                               process_id, frame->GetLastCommittedOrigin()),
                           std::move(request));
 }
diff --git a/content/browser/device_sensors/device_sensor_browsertest.cc b/content/browser/device_sensors/device_sensor_browsertest.cc
index 124daaf3..fe24bb12 100644
--- a/content/browser/device_sensors/device_sensor_browsertest.cc
+++ b/content/browser/device_sensors/device_sensor_browsertest.cc
@@ -179,7 +179,7 @@
     switch (type) {
       case device::mojom::SensorType::ACCELEROMETER:
         if (accelerometer_is_available_) {
-          sensor = base::MakeUnique<FakeSensor>(
+          sensor = std::make_unique<FakeSensor>(
               device::mojom::SensorType::ACCELEROMETER);
           reading.accel.x = 4;
           reading.accel.y = 5;
@@ -188,7 +188,7 @@
         break;
       case device::mojom::SensorType::LINEAR_ACCELERATION:
         if (linear_acceleration_sensor_is_available_) {
-          sensor = base::MakeUnique<FakeSensor>(
+          sensor = std::make_unique<FakeSensor>(
               device::mojom::SensorType::LINEAR_ACCELERATION);
           reading.accel.x = 1;
           reading.accel.y = 2;
@@ -197,7 +197,7 @@
         break;
       case device::mojom::SensorType::GYROSCOPE:
         if (gyroscope_is_available_) {
-          sensor = base::MakeUnique<FakeSensor>(
+          sensor = std::make_unique<FakeSensor>(
               device::mojom::SensorType::GYROSCOPE);
           reading.gyro.x = 7;
           reading.gyro.y = 8;
@@ -206,7 +206,7 @@
         break;
       case device::mojom::SensorType::RELATIVE_ORIENTATION_EULER_ANGLES:
         if (relative_orientation_sensor_is_available_) {
-          sensor = base::MakeUnique<FakeSensor>(
+          sensor = std::make_unique<FakeSensor>(
               device::mojom::SensorType::RELATIVE_ORIENTATION_EULER_ANGLES);
           reading.orientation_euler.x = 2;  // beta
           reading.orientation_euler.y = 3;  // gamma
@@ -215,7 +215,7 @@
         break;
       case device::mojom::SensorType::ABSOLUTE_ORIENTATION_EULER_ANGLES:
         if (absolute_orientation_sensor_is_available_) {
-          sensor = base::MakeUnique<FakeSensor>(
+          sensor = std::make_unique<FakeSensor>(
               device::mojom::SensorType::ABSOLUTE_ORIENTATION_EULER_ANGLES);
           reading.orientation_euler.x = 5;  // beta
           reading.orientation_euler.y = 6;  // gamma
@@ -261,7 +261,7 @@
             base::WaitableEvent::InitialState::NOT_SIGNALED) {}
 
   void SetUpOnMainThread() override {
-    sensor_provider_ = base::MakeUnique<FakeSensorProvider>();
+    sensor_provider_ = std::make_unique<FakeSensorProvider>();
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
         base::BindOnce(&DeviceSensorBrowserTest::SetUpOnIOThread,
diff --git a/content/browser/devtools/devtools_manager.cc b/content/browser/devtools/devtools_manager.cc
index 633d73f..22ae3b2c 100644
--- a/content/browser/devtools/devtools_manager.cc
+++ b/content/browser/devtools/devtools_manager.cc
@@ -25,7 +25,7 @@
   DevToolsManager* manager = DevToolsManager::GetInstance();
   if (!manager->delegate())
     return;
-  manager->SetHttpHandler(base::MakeUnique<DevToolsHttpHandler>(
+  manager->SetHttpHandler(std::make_unique<DevToolsHttpHandler>(
       manager->delegate(), std::move(server_socket_factory), frontend_url,
       active_port_output_directory, debug_frontend_dir));
 }
@@ -33,7 +33,7 @@
 // static
 void DevToolsAgentHost::StartRemoteDebuggingPipeHandler() {
   DevToolsManager* manager = DevToolsManager::GetInstance();
-  manager->SetPipeHandler(base::MakeUnique<DevToolsPipeHandler>());
+  manager->SetPipeHandler(std::make_unique<DevToolsPipeHandler>());
 }
 
 // static
diff --git a/content/browser/devtools/devtools_url_interceptor_request_job.cc b/content/browser/devtools/devtools_url_interceptor_request_job.cc
index 0dc1d42..c62c191 100644
--- a/content/browser/devtools/devtools_url_interceptor_request_job.cc
+++ b/content/browser/devtools/devtools_url_interceptor_request_job.cc
@@ -179,10 +179,10 @@
   proxy_readers.reserve(readers->size());
   for (auto& reader : *readers) {
     proxy_readers.push_back(
-        base::MakeUnique<ProxyUploadElementReader>(reader.get()));
+        std::make_unique<ProxyUploadElementReader>(reader.get()));
   }
 
-  return base::MakeUnique<net::ElementsUploadDataStream>(
+  return std::make_unique<net::ElementsUploadDataStream>(
       std::move(proxy_readers), 0);
 }
 }  // namespace
@@ -506,7 +506,7 @@
 
     case WaitingForUserResponse::WAITING_FOR_INTERCEPTION_RESPONSE:
       ProcessInterceptionRespose(
-          base::MakeUnique<DevToolsURLRequestInterceptor::Modifications>(
+          std::make_unique<DevToolsURLRequestInterceptor::Modifications>(
               base::nullopt, base::nullopt, protocol::Maybe<std::string>(),
               protocol::Maybe<std::string>(), protocol::Maybe<std::string>(),
               protocol::Maybe<protocol::Network::Headers>(),
@@ -521,7 +521,7 @@
                                ResponseEnum::Default)
               .Build();
       ProcessAuthRespose(
-          base::MakeUnique<DevToolsURLRequestInterceptor::Modifications>(
+          std::make_unique<DevToolsURLRequestInterceptor::Modifications>(
               base::nullopt, base::nullopt, protocol::Maybe<std::string>(),
               protocol::Maybe<std::string>(), protocol::Maybe<std::string>(),
               protocol::Maybe<protocol::Network::Headers>(),
@@ -661,7 +661,7 @@
       std::vector<char> data(post_data.begin(), post_data.end());
       request_details_.post_data =
           net::ElementsUploadDataStream::CreateWithReader(
-              base::MakeUnique<net::UploadOwnedBytesElementReader>(&data), 0);
+              std::make_unique<net::UploadOwnedBytesElementReader>(&data), 0);
     }
 
     if (modifications->modified_headers.isJust()) {
diff --git a/content/browser/devtools/devtools_url_request_interceptor.cc b/content/browser/devtools/devtools_url_request_interceptor.cc
index b31099de..db542792 100644
--- a/content/browser/devtools/devtools_url_request_interceptor.cc
+++ b/content/browser/devtools/devtools_url_request_interceptor.cc
@@ -55,7 +55,7 @@
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   browser_context_->SetUserData(
       kDevToolsURLRequestInterceptorKeyName,
-      base::MakeUnique<DevToolsURLRequestInterceptorUserData>(this));
+      std::make_unique<DevToolsURLRequestInterceptorUserData>(this));
 }
 
 DevToolsURLRequestInterceptor::~DevToolsURLRequestInterceptor() {
diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc
index 4bab8808..99540529 100644
--- a/content/browser/devtools/protocol/network_handler.cc
+++ b/content/browser/devtools/protocol/network_handler.cc
@@ -1177,7 +1177,7 @@
 
   devtools_url_request_interceptor->ContinueInterceptedRequest(
       interception_id,
-      base::MakeUnique<DevToolsURLRequestInterceptor::Modifications>(
+      std::make_unique<DevToolsURLRequestInterceptor::Modifications>(
           std::move(error), std::move(raw_response), std::move(url),
           std::move(method), std::move(post_data), std::move(headers),
           std::move(auth_challenge_response), mark_as_canceled),
diff --git a/content/browser/devtools/protocol/storage_handler.cc b/content/browser/devtools/protocol/storage_handler.cc
index 4bd83e9d..04273f6 100644
--- a/content/browser/devtools/protocol/storage_handler.cc
+++ b/content/browser/devtools/protocol/storage_handler.cc
@@ -248,7 +248,7 @@
 }
 
 void StorageHandler::Wire(UberDispatcher* dispatcher) {
-  frontend_ = base::MakeUnique<Storage::Frontend>(dispatcher->channel());
+  frontend_ = std::make_unique<Storage::Frontend>(dispatcher->channel());
   Storage::Dispatcher::wire(dispatcher, this);
 }
 
diff --git a/content/browser/devtools/protocol/tethering_handler.cc b/content/browser/devtools/protocol/tethering_handler.cc
index c2178c2..304af587 100644
--- a/content/browser/devtools/protocol/tethering_handler.cc
+++ b/content/browser/devtools/protocol/tethering_handler.cc
@@ -272,7 +272,7 @@
   BoundSocket::AcceptedCallback accepted = base::Bind(
       &TetheringHandler::TetheringImpl::Accepted, base::Unretained(this));
   std::unique_ptr<BoundSocket> bound_socket =
-      base::MakeUnique<BoundSocket>(accepted, socket_callback_);
+      std::make_unique<BoundSocket>(accepted, socket_callback_);
   if (!bound_socket->Listen(port)) {
     BrowserThread::PostTask(
         BrowserThread::UI, FROM_HERE,
diff --git a/content/browser/devtools/protocol/tracing_handler.cc b/content/browser/devtools/protocol/tracing_handler.cc
index 9820ee6..b1a10b8 100644
--- a/content/browser/devtools/protocol/tracing_handler.cc
+++ b/content/browser/devtools/protocol/tracing_handler.cc
@@ -179,7 +179,7 @@
 
 void TracingHandler::OnTraceComplete() {
   if (!trace_data_buffer_state_.data.empty())
-    OnTraceDataCollected(base::MakeUnique<std::string>(""));
+    OnTraceDataCollected(std::make_unique<std::string>(""));
 
   DCHECK(trace_data_buffer_state_.data.empty());
   DCHECK_EQ(0u, trace_data_buffer_state_.pos);
diff --git a/content/browser/devtools/protocol_string.cc b/content/browser/devtools/protocol_string.cc
index 891e59c..327d97e1 100644
--- a/content/browser/devtools/protocol_string.cc
+++ b/content/browser/devtools/protocol_string.cc
@@ -76,7 +76,7 @@
   if (!value || !depth)
     return nullptr;
   if (value->type() == protocol::Value::TypeNull)
-    return base::MakeUnique<base::Value>();
+    return std::make_unique<base::Value>();
   if (value->type() == protocol::Value::TypeBoolean) {
     bool inner;
     value->asBoolean(&inner);
diff --git a/content/browser/dom_storage/dom_storage_area.cc b/content/browser/dom_storage/dom_storage_area.cc
index d11eb70..5da5949 100644
--- a/content/browser/dom_storage/dom_storage_area.cc
+++ b/content/browser/dom_storage/dom_storage_area.cc
@@ -304,7 +304,7 @@
   DCHECK_NE(kLocalStorageNamespaceId, destination_namespace_id);
 
   auto original_persistent_namespace_ids =
-      base::MakeUnique<std::vector<std::string>>();
+      std::make_unique<std::vector<std::string>>();
   original_persistent_namespace_ids->push_back(persistent_namespace_id_);
   if (original_persistent_namespace_ids_) {
     original_persistent_namespace_ids->insert(
diff --git a/content/browser/dom_storage/dom_storage_context_wrapper.cc b/content/browser/dom_storage/dom_storage_context_wrapper.cc
index 01218383..bb57d32 100644
--- a/content/browser/dom_storage/dom_storage_context_wrapper.cc
+++ b/content/browser/dom_storage/dom_storage_context_wrapper.cc
@@ -49,7 +49,7 @@
     base::SingleThreadTaskRunner* reply_task_runner,
     DOMStorageContextImpl* context,
     const DOMStorageContext::GetLocalStorageUsageCallback& callback) {
-  auto infos = base::MakeUnique<std::vector<LocalStorageUsageInfo>>();
+  auto infos = std::make_unique<std::vector<LocalStorageUsageInfo>>();
   context->GetLocalStorageUsage(infos.get(), true);
   reply_task_runner->PostTask(
       FROM_HERE, base::BindOnce(&InvokeLocalStorageUsageCallbackHelper,
@@ -151,7 +151,7 @@
     const GetLocalStorageUsageCallback& callback) {
   DCHECK(context_.get());
   if (mojo_state_) {
-    auto infos = base::MakeUnique<std::vector<LocalStorageUsageInfo>>();
+    auto infos = std::make_unique<std::vector<LocalStorageUsageInfo>>();
     auto* infos_ptr = infos.get();
     base::RepeatingClosure got_local_storage_usage = base::BarrierClosure(
         2, base::BindOnce(&InvokeLocalStorageUsageCallbackHelper, callback,
diff --git a/content/browser/dom_storage/local_storage_context_mojo.cc b/content/browser/dom_storage/local_storage_context_mojo.cc
index 31b1d68f..4639a37 100644
--- a/content/browser/dom_storage/local_storage_context_mojo.cc
+++ b/content/browser/dom_storage/local_storage_context_mojo.cc
@@ -91,7 +91,7 @@
   DOMStorageDatabase db(db_path);
   DOMStorageValuesMap map;
   db.ReadAllValues(&map);
-  auto values = base::MakeUnique<LevelDBWrapperImpl::ValueMap>();
+  auto values = std::make_unique<LevelDBWrapperImpl::ValueMap>();
   for (const auto& it : map) {
     (*values)[LocalStorageContextMojo::MigrateString(it.first)] =
         LocalStorageContextMojo::MigrateString(it.second.string());
@@ -178,7 +178,7 @@
     const int kMaxBytesPerHour = kPerStorageAreaQuota;
     const int kMaxCommitsPerHour = 60;
 
-    level_db_wrapper_ = base::MakeUnique<LevelDBWrapperImpl>(
+    level_db_wrapper_ = std::make_unique<LevelDBWrapperImpl>(
         context_->database_.get(),
         kDataPrefix + origin_.Serialize() + kOriginSeparator,
         kPerStorageAreaQuota + kPerStorageAreaOverQuotaAllowance,
@@ -863,7 +863,7 @@
 
   PurgeUnusedWrappersIfNeeded();
 
-  auto holder = base::MakeUnique<LevelDBWrapperHolder>(this, origin);
+  auto holder = std::make_unique<LevelDBWrapperHolder>(this, origin);
   LevelDBWrapperHolder* holder_ptr = holder.get();
   level_db_wrappers_[origin] = std::move(holder);
   return holder_ptr;
diff --git a/content/browser/dom_storage/local_storage_context_mojo_unittest.cc b/content/browser/dom_storage/local_storage_context_mojo_unittest.cc
index 3bbc92a..654dba48 100644
--- a/content/browser/dom_storage/local_storage_context_mojo_unittest.cc
+++ b/content/browser/dom_storage/local_storage_context_mojo_unittest.cc
@@ -952,7 +952,7 @@
   }
 
   std::unique_ptr<service_manager::Service> CreateService() override {
-    return base::MakeUnique<ServiceTestClient>(this);
+    return std::make_unique<ServiceTestClient>(this);
   }
 
   const base::FilePath& temp_path() { return temp_path_.GetPath(); }
@@ -1323,7 +1323,7 @@
   ASSERT_EQ(1u, mock_leveldb_service.open_requests_.size());
   auto& open_request = mock_leveldb_service.open_requests_[0];
   auto mock_db = mojo::MakeStrongAssociatedBinding(
-      base::MakeUnique<MockLevelDBDatabaseErrorOnWrite>(&test_data),
+      std::make_unique<MockLevelDBDatabaseErrorOnWrite>(&test_data),
       std::move(open_request.request));
   std::move(open_request.callback).Run(leveldb::mojom::DatabaseError::OK);
   mock_leveldb_service.open_requests_.clear();
@@ -1393,7 +1393,7 @@
   ASSERT_EQ(1u, mock_leveldb_service.open_requests_.size());
   auto& reopen_request = mock_leveldb_service.open_requests_[0];
   mock_db = mojo::MakeStrongAssociatedBinding(
-      base::MakeUnique<MockLevelDBDatabase>(&test_data),
+      std::make_unique<MockLevelDBDatabase>(&test_data),
       std::move(reopen_request.request));
   std::move(reopen_request.callback).Run(leveldb::mojom::DatabaseError::OK);
   mock_leveldb_service.open_requests_.clear();
@@ -1457,7 +1457,7 @@
   ASSERT_EQ(1u, mock_leveldb_service.open_requests_.size());
   auto& open_request = mock_leveldb_service.open_requests_[0];
   auto mock_db = mojo::MakeStrongAssociatedBinding(
-      base::MakeUnique<MockLevelDBDatabaseErrorOnWrite>(&test_data),
+      std::make_unique<MockLevelDBDatabaseErrorOnWrite>(&test_data),
       std::move(open_request.request));
   std::move(open_request.callback).Run(leveldb::mojom::DatabaseError::OK);
   mock_leveldb_service.open_requests_.clear();
@@ -1504,7 +1504,7 @@
   ASSERT_EQ(1u, mock_leveldb_service.open_requests_.size());
   auto& reopen_request = mock_leveldb_service.open_requests_[0];
   mock_db = mojo::MakeStrongAssociatedBinding(
-      base::MakeUnique<MockLevelDBDatabaseErrorOnWrite>(&test_data),
+      std::make_unique<MockLevelDBDatabaseErrorOnWrite>(&test_data),
       std::move(reopen_request.request));
   std::move(reopen_request.callback).Run(leveldb::mojom::DatabaseError::OK);
   mock_leveldb_service.open_requests_.clear();
diff --git a/content/browser/download/download_browsertest.cc b/content/browser/download/download_browsertest.cc
index 2a5d7f2..7b0df1c 100644
--- a/content/browser/download/download_browsertest.cc
+++ b/content/browser/download/download_browsertest.cc
@@ -778,7 +778,7 @@
   }
 
   void SetupErrorInjectionDownloads() {
-    auto factory = base::MakeUnique<ErrorInjectionDownloadFileFactory>();
+    auto factory = std::make_unique<ErrorInjectionDownloadFileFactory>();
     inject_error_callback_ = base::Bind(
         &ErrorInjectionDownloadFileFactory::InjectError, factory->GetWeakPtr());
 
@@ -889,8 +889,8 @@
 class ParallelDownloadTest : public DownloadContentTest {
  protected:
   void SetUp() override {
-    field_trial_list_ = base::MakeUnique<base::FieldTrialList>(
-        base::MakeUnique<base::MockEntropyProvider>());
+    field_trial_list_ = std::make_unique<base::FieldTrialList>(
+        std::make_unique<base::MockEntropyProvider>());
     SetupConfig();
     DownloadContentTest::SetUp();
   }
@@ -913,7 +913,7 @@
         base::FieldTrialList::CreateFieldTrial(kTrialName, kGroupName);
     base::AssociateFieldTrialParams(kTrialName, kGroupName, params);
     std::unique_ptr<base::FeatureList> feature_list =
-        base::MakeUnique<base::FeatureList>();
+        std::make_unique<base::FeatureList>();
     feature_list->RegisterFieldTrialOverride(
         features::kParallelDownloading.name,
         base::FeatureList::OVERRIDE_ENABLE_FEATURE, trial.get());
diff --git a/content/browser/download/download_file_impl.cc b/content/browser/download/download_file_impl.cc
index 8926b4b..ea230c3 100644
--- a/content/browser/download/download_file_impl.cc
+++ b/content/browser/download/download_file_impl.cc
@@ -79,12 +79,12 @@
 void DownloadFileImpl::SourceStream::Initialize() {
   if (stream_handle_.is_null())
     return;
-  binding_ = base::MakeUnique<mojo::Binding<mojom::DownloadStreamClient>>(
+  binding_ = std::make_unique<mojo::Binding<mojom::DownloadStreamClient>>(
       this, std::move(stream_handle_->client_request));
   binding_->set_connection_error_handler(base::Bind(
       &DownloadFileImpl::SourceStream::OnStreamCompleted,
       base::Unretained(this), mojom::NetworkRequestStatus::USER_CANCELED));
-  handle_watcher_ = base::MakeUnique<mojo::SimpleWatcher>(
+  handle_watcher_ = std::make_unique<mojo::SimpleWatcher>(
       FROM_HERE, mojo::SimpleWatcher::ArmingPolicy::AUTOMATIC);
 }
 
@@ -207,7 +207,7 @@
                        default_download_directory,
                        download_item_net_log,
                        observer) {
-  source_streams_[save_info_->offset] = base::MakeUnique<SourceStream>(
+  source_streams_[save_info_->offset] = std::make_unique<SourceStream>(
       save_info_->offset, save_info_->length, std::move(stream));
 }
 
@@ -298,7 +298,7 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   source_streams_[offset] =
-      base::MakeUnique<SourceStream>(offset, length, std::move(stream));
+      std::make_unique<SourceStream>(offset, length, std::move(stream));
   OnSourceStreamAdded(source_streams_[offset].get());
 }
 
diff --git a/content/browser/download/download_file_unittest.cc b/content/browser/download/download_file_unittest.cc
index 64192135..7e29d5b 100644
--- a/content/browser/download/download_file_unittest.cc
+++ b/content/browser/download/download_file_unittest.cc
@@ -228,7 +228,7 @@
 
     download_file_.reset(new TestDownloadFileImpl(
         std::move(save_info), base::FilePath(),
-        base::MakeUnique<DownloadManager::InputStream>(
+        std::make_unique<DownloadManager::InputStream>(
             std::unique_ptr<ByteStreamReader>(input_stream_)),
         net::NetLogWithSource(), observer_factory_.GetWeakPtr()));
 
@@ -919,7 +919,7 @@
 
   // Activate the streams.
   download_file_->AddInputStream(
-      base::MakeUnique<DownloadManager::InputStream>(
+      std::make_unique<DownloadManager::InputStream>(
           std::unique_ptr<ByteStreamReader>(additional_streams_[0])),
       stream_0_length, DownloadSaveInfo::kLengthFullContent);
   sink_callback_.Run();
@@ -966,11 +966,11 @@
 
   // Activate all the streams.
   download_file_->AddInputStream(
-      base::MakeUnique<DownloadManager::InputStream>(
+      std::make_unique<DownloadManager::InputStream>(
           std::unique_ptr<ByteStreamReader>(additional_streams_[0])),
       stream_0_length, stream_1_length);
   download_file_->AddInputStream(
-      base::MakeUnique<DownloadManager::InputStream>(
+      std::make_unique<DownloadManager::InputStream>(
           std::unique_ptr<ByteStreamReader>(additional_streams_[1])),
       stream_0_length + stream_1_length, DownloadSaveInfo::kLengthFullContent);
   sink_callback_.Run();
@@ -1012,7 +1012,7 @@
 
   additional_streams_[0] = new StrictMock<MockByteStreamReader>();
   download_file_->AddInputStream(
-      base::MakeUnique<DownloadManager::InputStream>(
+      std::make_unique<DownloadManager::InputStream>(
           std::unique_ptr<ByteStreamReader>(additional_streams_[0])),
       stream_0_length - 1, DownloadSaveInfo::kLengthFullContent);
   base::RunLoop().RunUntilIdle();
@@ -1053,7 +1053,7 @@
       .RetiresOnSaturation();
 
   download_file_->AddInputStream(
-      base::MakeUnique<DownloadManager::InputStream>(
+      std::make_unique<DownloadManager::InputStream>(
           std::unique_ptr<ByteStreamReader>(additional_streams_[0])),
       0, DownloadSaveInfo::kLengthFullContent);
 
diff --git a/content/browser/download/download_item_impl_unittest.cc b/content/browser/download/download_item_impl_unittest.cc
index f682b55..8bee210 100644
--- a/content/browser/download/download_item_impl_unittest.cc
+++ b/content/browser/download/download_item_impl_unittest.cc
@@ -322,7 +322,7 @@
     }
 
     std::unique_ptr<MockRequestHandle> request_handle =
-        base::MakeUnique<NiceMock<MockRequestHandle>>();
+        std::make_unique<NiceMock<MockRequestHandle>>();
     item->Start(std::move(download_file), std::move(request_handle),
                 *create_info_);
     task_environment_.RunUntilIdle();
@@ -852,9 +852,9 @@
   for (int i = 0; i < (DownloadItemImpl::kMaxAutoResumeAttempts + 1); ++i) {
     SCOPED_TRACE(::testing::Message() << "Iteration " << i);
 
-    mock_download_file = base::MakeUnique<NiceMock<MockDownloadFile>>();
+    mock_download_file = std::make_unique<NiceMock<MockDownloadFile>>();
     mock_download_file_ref = mock_download_file.get();
-    mock_request_handle = base::MakeUnique<NiceMock<MockRequestHandle>>();
+    mock_request_handle = std::make_unique<NiceMock<MockRequestHandle>>();
 
     ON_CALL(*mock_download_file_ref, FullPath())
         .WillByDefault(ReturnRefOfCopy(base::FilePath()));
@@ -1168,9 +1168,9 @@
 // file initialization failing.
 TEST_F(DownloadItemTest, InitDownloadFileFails) {
   DownloadItemImpl* item = CreateDownloadItem();
-  std::unique_ptr<MockDownloadFile> file = base::MakeUnique<MockDownloadFile>();
+  std::unique_ptr<MockDownloadFile> file = std::make_unique<MockDownloadFile>();
   std::unique_ptr<MockRequestHandle> request_handle =
-      base::MakeUnique<MockRequestHandle>();
+      std::make_unique<MockRequestHandle>();
 
   base::HistogramTester histogram_tester;
   EXPECT_CALL(*file, Cancel());
diff --git a/content/browser/download/download_job_factory.cc b/content/browser/download/download_job_factory.cc
index 79a9376..0c7e01e3 100644
--- a/content/browser/download/download_job_factory.cc
+++ b/content/browser/download/download_job_factory.cc
@@ -96,20 +96,19 @@
     const DownloadCreateInfo& create_info,
     bool is_save_package_download) {
   if (is_save_package_download) {
-    return base::MakeUnique<SavePackageDownloadJob>(download_item,
+    return std::make_unique<SavePackageDownloadJob>(download_item,
                                                     std::move(req_handle));
   }
 
   bool is_parallelizable = IsParallelizableDownload(create_info, download_item);
   // Build parallel download job.
   if (IsParallelDownloadEnabled() && is_parallelizable) {
-    return base::MakeUnique<ParallelDownloadJob>(download_item,
-                                                 std::move(req_handle),
-                                                 create_info);
+    return std::make_unique<ParallelDownloadJob>(
+        download_item, std::move(req_handle), create_info);
   }
 
   // An ordinary download job.
-  return base::MakeUnique<DownloadJobImpl>(download_item, std::move(req_handle),
+  return std::make_unique<DownloadJobImpl>(download_item, std::move(req_handle),
                                            is_parallelizable);
 }
 
diff --git a/content/browser/download/download_job_unittest.cc b/content/browser/download/download_job_unittest.cc
index ee758ad..9721059d0 100644
--- a/content/browser/download/download_job_unittest.cc
+++ b/content/browser/download/download_job_unittest.cc
@@ -24,10 +24,10 @@
   ~DownloadJobTest() override = default;
 
   void SetUp() override {
-    item_delegate_ = base::MakeUnique<DownloadItemImplDelegate>();
+    item_delegate_ = std::make_unique<DownloadItemImplDelegate>();
     download_item_ =
-        base::MakeUnique<NiceMock<MockDownloadItemImpl>>(item_delegate_.get());
-    download_job_ = base::MakeUnique<MockDownloadJob>(download_item_.get());
+        std::make_unique<NiceMock<MockDownloadItemImpl>>(item_delegate_.get());
+    download_job_ = std::make_unique<MockDownloadJob>(download_item_.get());
   }
 
   content::TestBrowserThreadBundle browser_threads_;
diff --git a/content/browser/download/download_manager_impl.cc b/content/browser/download/download_manager_impl.cc
index 7ae8a79..cd82ef85 100644
--- a/content/browser/download/download_manager_impl.cc
+++ b/content/browser/download/download_manager_impl.cc
@@ -112,7 +112,7 @@
       BrowserThread::UI, FROM_HERE,
       base::BindOnce(&DownloadManager::StartDownload, download_manager,
                      std::move(failed_created_info),
-                     base::MakeUnique<DownloadManager::InputStream>(
+                     std::make_unique<DownloadManager::InputStream>(
                          std::move(empty_byte_stream)),
                      params->callback()));
 }
diff --git a/content/browser/download/download_manager_impl_unittest.cc b/content/browser/download/download_manager_impl_unittest.cc
index 9e4379af..19c8d86 100644
--- a/content/browser/download/download_manager_impl_unittest.cc
+++ b/content/browser/download/download_manager_impl_unittest.cc
@@ -558,7 +558,7 @@
       .WillRepeatedly(Return("client-id"));
   MockDownloadFile* mock_file = new MockDownloadFile;
   auto input_stream =
-      base::MakeUnique<DownloadManager::InputStream>(std::move(stream));
+      std::make_unique<DownloadManager::InputStream>(std::move(stream));
   EXPECT_CALL(*mock_download_file_factory_.get(),
               MockCreateFile(Ref(*info->save_info.get()), input_stream.get()))
       .WillOnce(Return(mock_file));
diff --git a/content/browser/download/download_request_core.cc b/content/browser/download/download_request_core.cc
index 669ff10..0e9499a2 100644
--- a/content/browser/download/download_request_core.cc
+++ b/content/browser/download/download_request_core.cc
@@ -88,7 +88,7 @@
 void DownloadRequestData::Attach(net::URLRequest* request,
                                  DownloadUrlParameters* parameters,
                                  uint32_t download_id) {
-  auto request_data = base::MakeUnique<DownloadRequestData>();
+  auto request_data = std::make_unique<DownloadRequestData>();
   request_data->save_info_.reset(
       new DownloadSaveInfo(parameters->GetSaveInfo()));
   request_data->download_id_ = download_id;
diff --git a/content/browser/download/download_request_core_unittest.cc b/content/browser/download/download_request_core_unittest.cc
index d94c5b3..d2adc595 100644
--- a/content/browser/download/download_request_core_unittest.cc
+++ b/content/browser/download/download_request_core_unittest.cc
@@ -29,7 +29,7 @@
   std::unique_ptr<DownloadUrlParameters> BuildDownloadParameters(
       const std::string& url) const {
     GURL gurl(url);
-    return base::MakeUnique<DownloadUrlParameters>(
+    return std::make_unique<DownloadUrlParameters>(
         gurl, request_context_getter_.get(), TRAFFIC_ANNOTATION_FOR_TESTS);
   }
 
diff --git a/content/browser/download/download_resource_handler.cc b/content/browser/download/download_resource_handler.cc
index d8a680d..8d037024 100644
--- a/content/browser/download/download_resource_handler.cc
+++ b/content/browser/download/download_resource_handler.cc
@@ -81,7 +81,7 @@
 
   download_manager->StartDownload(
       std::move(info),
-      base::MakeUnique<DownloadManager::InputStream>(std::move(stream)),
+      std::make_unique<DownloadManager::InputStream>(std::move(stream)),
       started_cb);
 }
 
diff --git a/content/browser/download/download_response_handler.cc b/content/browser/download/download_response_handler.cc
index 29b568d9..9f6e43f 100644
--- a/content/browser/download/download_response_handler.cc
+++ b/content/browser/download/download_response_handler.cc
@@ -107,7 +107,7 @@
     const ResourceResponseHead& head) {
   // TODO(qinmin): instead of using NetLogWithSource, introduce new logging
   // class for download.
-  auto create_info = base::MakeUnique<DownloadCreateInfo>(
+  auto create_info = std::make_unique<DownloadCreateInfo>(
       base::Time::Now(), net::NetLogWithSource(), std::move(save_info_));
 
   DownloadInterruptReason result =
diff --git a/content/browser/download/download_utils.cc b/content/browser/download/download_utils.cc
index ed6a1af..da7bf3d 100644
--- a/content/browser/download/download_utils.cc
+++ b/content/browser/download/download_utils.cc
@@ -53,7 +53,7 @@
 
 std::unique_ptr<net::HttpRequestHeaders> GetAdditionalRequestHeaders(
     DownloadUrlParameters* params) {
-  auto headers = base::MakeUnique<net::HttpRequestHeaders>();
+  auto headers = std::make_unique<net::HttpRequestHeaders>();
   if (params->offset() == 0 &&
       params->length() == DownloadSaveInfo::kLengthFullContent) {
     AppendExtraHeaders(headers.get(), params);
@@ -239,7 +239,7 @@
     DCHECK(params->prefer_cache());
     DCHECK_EQ("POST", params->method());
     std::vector<std::unique_ptr<net::UploadElementReader>> element_readers;
-    request->set_upload(base::MakeUnique<net::ElementsUploadDataStream>(
+    request->set_upload(std::make_unique<net::ElementsUploadDataStream>(
         std::move(element_readers), params->post_id()));
   }
 
diff --git a/content/browser/download/parallel_download_job.cc b/content/browser/download/parallel_download_job.cc
index 424f73e..ae292af7 100644
--- a/content/browser/download/parallel_download_job.cc
+++ b/content/browser/download/parallel_download_job.cc
@@ -121,7 +121,7 @@
     DownloadWorker* worker,
     std::unique_ptr<ByteStreamReader> stream_reader) {
   bool success = DownloadJob::AddInputStream(
-      base::MakeUnique<DownloadManager::InputStream>(std::move(stream_reader)),
+      std::make_unique<DownloadManager::InputStream>(std::move(stream_reader)),
       worker->offset(), worker->length());
   RecordParallelDownloadAddStreamSuccess(success);
 
@@ -234,7 +234,7 @@
   DCHECK(download_item_);
 
   std::unique_ptr<DownloadWorker> worker =
-      base::MakeUnique<DownloadWorker>(this, offset, length);
+      std::make_unique<DownloadWorker>(this, offset, length);
 
   StoragePartition* storage_partition =
       BrowserContext::GetStoragePartitionForSite(
diff --git a/content/browser/download/parallel_download_job_unittest.cc b/content/browser/download/parallel_download_job_unittest.cc
index 36fc086..3c5a172 100644
--- a/content/browser/download/parallel_download_job_unittest.cc
+++ b/content/browser/download/parallel_download_job_unittest.cc
@@ -86,7 +86,7 @@
 
   void CreateRequest(int64_t offset, int64_t length) override {
     std::unique_ptr<DownloadWorker> worker =
-        base::MakeUnique<DownloadWorker>(this, offset, length);
+        std::make_unique<DownloadWorker>(this, offset, length);
 
     DCHECK(workers_.find(offset) == workers_.end());
     workers_[offset] = std::move(worker);
@@ -133,10 +133,10 @@
                          int request_count,
                          int64_t min_slice_size,
                          int min_remaining_time) {
-    item_delegate_ = base::MakeUnique<DownloadItemImplDelegate>();
+    item_delegate_ = std::make_unique<DownloadItemImplDelegate>();
     received_slices_ = slices;
     download_item_ =
-        base::MakeUnique<NiceMock<MockDownloadItemImpl>>(item_delegate_.get());
+        std::make_unique<NiceMock<MockDownloadItemImpl>>(item_delegate_.get());
     EXPECT_CALL(*download_item_, GetTotalBytes())
         .WillRepeatedly(Return(initial_request_offset + content_length));
     EXPECT_CALL(*download_item_, GetReceivedBytes())
@@ -148,9 +148,9 @@
     info.offset = initial_request_offset;
     info.total_bytes = content_length;
     std::unique_ptr<MockDownloadRequestHandle> request_handle =
-        base::MakeUnique<MockDownloadRequestHandle>();
+        std::make_unique<MockDownloadRequestHandle>();
     mock_request_handle_ = request_handle.get();
-    job_ = base::MakeUnique<ParallelDownloadJobForTest>(
+    job_ = std::make_unique<ParallelDownloadJobForTest>(
         download_item_.get(), std::move(request_handle), info, request_count,
         min_slice_size, min_remaining_time);
     file_initialized_ = false;
@@ -177,12 +177,12 @@
     UrlDownloadHandler::Delegate* delegate =
         static_cast<UrlDownloadHandler::Delegate*>(worker);
     std::unique_ptr<DownloadCreateInfo> create_info =
-        base::MakeUnique<DownloadCreateInfo>();
+        std::make_unique<DownloadCreateInfo>();
     create_info->request_handle = std::move(request_handle);
     delegate->OnUrlDownloadStarted(
         std::move(create_info),
-        base::MakeUnique<DownloadManager::InputStream>(
-            base::MakeUnique<MockByteStreamReader>()),
+        std::make_unique<DownloadManager::InputStream>(
+            std::make_unique<MockByteStreamReader>()),
         DownloadUrlParameters::OnStartedCallback());
   }
 
@@ -395,7 +395,7 @@
 
   for (auto& worker : job_->workers()) {
     std::unique_ptr<MockDownloadRequestHandle> mock_handle =
-        base::MakeUnique<MockDownloadRequestHandle>();
+        std::make_unique<MockDownloadRequestHandle>();
     EXPECT_CALL(*mock_handle.get(), CancelRequest(_));
     MakeWorkerReady(worker.second.get(), std::move(mock_handle));
   }
@@ -420,7 +420,7 @@
   for (auto& worker : job_->workers()) {
     EXPECT_CALL(*job_.get(), CountOnByteStreamReady());
     std::unique_ptr<MockDownloadRequestHandle> mock_handle =
-        base::MakeUnique<MockDownloadRequestHandle>();
+        std::make_unique<MockDownloadRequestHandle>();
     EXPECT_CALL(*mock_handle.get(), PauseRequest());
     MakeWorkerReady(worker.second.get(), std::move(mock_handle));
   }
@@ -441,16 +441,16 @@
 
 // Test that parallel request is not created until download file is initialized.
 TEST_F(ParallelDownloadJobTest, ParallelRequestNotCreatedUntilFileInitialized) {
-  auto save_info = base::MakeUnique<DownloadSaveInfo>();
+  auto save_info = std::make_unique<DownloadSaveInfo>();
   StrictMock<MockByteStreamReader>* input_stream =
       new StrictMock<MockByteStreamReader>();
   auto observer =
-      base::MakeUnique<StrictMock<MockDownloadDestinationObserver>>();
+      std::make_unique<StrictMock<MockDownloadDestinationObserver>>();
   base::WeakPtrFactory<DownloadDestinationObserver> observer_factory(
       observer.get());
-  auto download_file = base::MakeUnique<DownloadFileImpl>(
+  auto download_file = std::make_unique<DownloadFileImpl>(
       std::move(save_info), base::FilePath(),
-      base::MakeUnique<DownloadManager::InputStream>(
+      std::make_unique<DownloadManager::InputStream>(
           std::unique_ptr<ByteStreamReader>(input_stream)),
       net::NetLogWithSource(), observer_factory.GetWeakPtr());
   CreateParallelJob(0, 100, DownloadItem::ReceivedSlices(), 2, 0, 0);
diff --git a/content/browser/download/resource_downloader.cc b/content/browser/download/resource_downloader.cc
index 5df0948..ede500f 100644
--- a/content/browser/download/resource_downloader.cc
+++ b/content/browser/download/resource_downloader.cc
@@ -56,9 +56,9 @@
       params->url().SchemeIs(url::kBlobScheme)
           ? url_loader_factory_getter->GetBlobFactory()
           : url_loader_factory_getter->GetNetworkFactory();
-  auto downloader = base::MakeUnique<ResourceDownloader>(
+  auto downloader = std::make_unique<ResourceDownloader>(
       delegate, std::move(request),
-      base::MakeUnique<DownloadSaveInfo>(params->GetSaveInfo()), download_id,
+      std::make_unique<DownloadSaveInfo>(params->GetSaveInfo()), download_id,
       params->guid(), is_parallel_request, params->is_transient(),
       params->fetch_error_body());
   downloader->Start(factory, file_system_context, std::move(params));
@@ -76,9 +76,9 @@
     std::unique_ptr<ThrottlingURLLoader> url_loader,
     std::vector<GURL> url_chain,
     base::Optional<ResourceRequestCompletionStatus> completion_status) {
-  auto downloader = base::MakeUnique<ResourceDownloader>(
+  auto downloader = std::make_unique<ResourceDownloader>(
       delegate, std::move(resource_request),
-      base::MakeUnique<DownloadSaveInfo>(), content::DownloadItem::kInvalidId,
+      std::make_unique<DownloadSaveInfo>(), content::DownloadItem::kInvalidId,
       std::string(), false, false, false);
   downloader->InterceptResponse(std::move(url_loader), response,
                                 std::move(consumer_handle), ssl_status,
@@ -170,7 +170,7 @@
       BrowserThread::UI, FROM_HERE,
       base::BindOnce(&UrlDownloadHandler::Delegate::OnUrlDownloadStarted,
                      delegate_, std::move(download_create_info),
-                     base::MakeUnique<DownloadManager::InputStream>(
+                     std::make_unique<DownloadManager::InputStream>(
                          std::move(stream_handle)),
                      callback_));
 }
diff --git a/content/browser/download/save_file_manager.cc b/content/browser/download/save_file_manager.cc
index b2458d29..6473cd1 100644
--- a/content/browser/download/save_file_manager.cc
+++ b/content/browser/download/save_file_manager.cc
@@ -183,7 +183,7 @@
   DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence());
   DCHECK(info);
   // No need to calculate hash.
-  std::unique_ptr<SaveFile> save_file = base::MakeUnique<SaveFile>(info, false);
+  std::unique_ptr<SaveFile> save_file = std::make_unique<SaveFile>(info, false);
 
   // TODO(phajdan.jr): We should check the return value and handle errors here.
   save_file->Initialize();
diff --git a/content/browser/download/save_package_browsertest.cc b/content/browser/download/save_package_browsertest.cc
index 6d4eb46..6cfc170 100644
--- a/content/browser/download/save_package_browsertest.cc
+++ b/content/browser/download/save_package_browsertest.cc
@@ -100,7 +100,7 @@
         static_cast<DownloadManagerImpl*>(BrowserContext::GetDownloadManager(
             shell()->web_contents()->GetBrowserContext()));
     auto delegate =
-        base::MakeUnique<TestShellDownloadManagerDelegate>(save_page_type);
+        std::make_unique<TestShellDownloadManagerDelegate>(save_page_type);
     delegate->download_dir_ = save_dir_.GetPath();
     auto* old_delegate = download_manager->GetDelegate();
     download_manager->SetDelegate(delegate.get());
diff --git a/content/browser/download/slow_download_http_response.cc b/content/browser/download/slow_download_http_response.cc
index 2f0249a..3d1ceb7 100644
--- a/content/browser/download/slow_download_http_response.cc
+++ b/content/browser/download/slow_download_http_response.cc
@@ -70,7 +70,7 @@
     return nullptr;
   }
   auto response =
-      base::MakeUnique<SlowDownloadHttpResponse>(request.relative_url);
+      std::make_unique<SlowDownloadHttpResponse>(request.relative_url);
   return std::move(response);
 }
 
diff --git a/content/browser/download/test_download_http_response.cc b/content/browser/download/test_download_http_response.cc
index caf5360..7ba18e07 100644
--- a/content/browser/download/test_download_http_response.cc
+++ b/content/browser/download/test_download_http_response.cc
@@ -257,7 +257,7 @@
       request.relative_url.c_str()));
   auto iter = g_parameters_map.Get().find(url);
   if (iter != g_parameters_map.Get().end()) {
-    return base::MakeUnique<TestDownloadHttpResponse>(
+    return std::make_unique<TestDownloadHttpResponse>(
         request, std::move(iter->second), on_response_sent_callback);
   }
   return nullptr;
@@ -317,7 +317,7 @@
 void TestDownloadHttpResponse::SendResponse(
     const net::test_server::SendBytesCallback& send,
     const net::test_server::SendCompleteCallback& done) {
-  auto completed_request = base::MakeUnique<CompletedRequest>(request_);
+  auto completed_request = std::make_unique<CompletedRequest>(request_);
 
   bool should_abort_immediately = !parameters_.injected_errors.empty() &&
                                   parameters_.injected_errors.front() == -1 &&
diff --git a/content/browser/download/url_downloader.cc b/content/browser/download/url_downloader.cc
index f6b3a4a6..2568bf82 100644
--- a/content/browser/download/url_downloader.cc
+++ b/content/browser/download/url_downloader.cc
@@ -218,7 +218,7 @@
       BrowserThread::UI, FROM_HERE,
       base::BindOnce(&UrlDownloadHandler::Delegate::OnUrlDownloadStarted,
                      delegate_, std::move(create_info),
-                     base::MakeUnique<DownloadManager::InputStream>(
+                     std::make_unique<DownloadManager::InputStream>(
                          std::move(stream_reader)),
                      callback));
 }
diff --git a/content/browser/field_trial_recorder.cc b/content/browser/field_trial_recorder.cc
index 02c672d..ed847e7 100644
--- a/content/browser/field_trial_recorder.cc
+++ b/content/browser/field_trial_recorder.cc
@@ -17,7 +17,7 @@
 // static
 void FieldTrialRecorder::Create(
     mojom::FieldTrialRecorderRequest request) {
-  mojo::MakeStrongBinding(base::MakeUnique<FieldTrialRecorder>(),
+  mojo::MakeStrongBinding(std::make_unique<FieldTrialRecorder>(),
                           std::move(request));
 }
 
diff --git a/content/browser/find_request_manager.cc b/content/browser/find_request_manager.cc
index f224f70..b38fc35 100644
--- a/content/browser/find_request_manager.cc
+++ b/content/browser/find_request_manager.cc
@@ -563,7 +563,7 @@
   // This is an initial find operation.
   Reset(request);
   for (WebContentsImpl* contents : contents_->GetWebContentsAndAllInner()) {
-    frame_observers_.push_back(base::MakeUnique<FrameObserver>(contents, this));
+    frame_observers_.push_back(std::make_unique<FrameObserver>(contents, this));
     for (FrameTreeNode* node : contents->GetFrameTree()->Nodes()) {
       AddFrame(node->current_frame_host(), false /* force */);
     }
diff --git a/content/browser/frame_host/cross_process_frame_connector.cc b/content/browser/frame_host/cross_process_frame_connector.cc
index 49d02d2..ca06669 100644
--- a/content/browser/frame_host/cross_process_frame_connector.cc
+++ b/content/browser/frame_host/cross_process_frame_connector.cc
@@ -21,6 +21,7 @@
 #include "content/browser/renderer_host/render_widget_host_input_event_router.h"
 #include "content/browser/renderer_host/render_widget_host_view_base.h"
 #include "content/browser/renderer_host/render_widget_host_view_child_frame.h"
+#include "content/common/content_switches_internal.h"
 #include "content/common/frame_messages.h"
 #include "content/public/common/screen_info.h"
 #include "gpu/ipc/common/gpu_messages.h"
@@ -89,7 +90,6 @@
   // try to move these updates to a single IPC (see https://crbug.com/750179).
   if (view_) {
     view_->SetFrameConnectorDelegate(this);
-    SetRect(child_frame_rect_);
     if (is_hidden_)
       OnVisibilityChanged(false);
     frame_proxy_in_parent_renderer_->Send(new FrameMsg_ViewChanged(
@@ -122,7 +122,7 @@
 }
 
 gfx::Rect CrossProcessFrameConnector::ChildFrameRect() {
-  return child_frame_rect_;
+  return frame_rect_in_dip_;
 }
 
 void CrossProcessFrameConnector::UpdateCursor(const WebCursor& cursor) {
@@ -216,7 +216,7 @@
           ->delegate()
           ->GetInputEventRouter();
 
-  gfx::Vector2d offset_from_parent = child_frame_rect_.OffsetFromOrigin();
+  gfx::Vector2d offset_from_parent = frame_rect_in_dip_.OffsetFromOrigin();
   blink::WebGestureEvent resent_gesture_event(event);
   // TODO(kenrb, wjmaclean): Do we need to account for transforms here?
   // See https://crbug.com/626020.
@@ -279,7 +279,7 @@
     const viz::LocalSurfaceId& local_surface_id) {
   // If the |frame_rect| or |screen_info| of the frame has changed, then the
   // viz::LocalSurfaceId must also change.
-  if ((child_frame_rect_.size() != frame_rect.size() ||
+  if ((frame_rect_.size() != frame_rect.size() ||
        screen_info_ != screen_info) &&
       local_surface_id_ == local_surface_id) {
     bad_message::ReceivedBadMessage(
@@ -288,11 +288,9 @@
     return;
   }
 
-  child_frame_rect_ = frame_rect;
   screen_info_ = screen_info;
   local_surface_id_ = local_surface_id;
-  if (!frame_rect.size().IsEmpty())
-    SetRect(frame_rect);
+  SetRect(frame_rect);
   view_->GetRenderWidgetHost()->WasResized();
 }
 
@@ -338,18 +336,23 @@
 }
 
 void CrossProcessFrameConnector::SetRect(const gfx::Rect& frame_rect) {
-  gfx::Rect old_rect = child_frame_rect_;
-  child_frame_rect_ = frame_rect;
+  gfx::Rect old_rect = frame_rect_;
+  frame_rect_ = frame_rect;
+  frame_rect_in_dip_ = frame_rect;
+  if (IsUseZoomForDSFEnabled()) {
+    frame_rect_in_dip_ = gfx::ScaleToEnclosingRect(
+        frame_rect_in_dip_, 1.f / screen_info_.device_scale_factor);
+  }
+
   if (view_) {
-    view_->SetBounds(frame_rect);
+    view_->SetBounds(frame_rect_in_dip_);
 
     // Other local root frames nested underneath this one implicitly have their
     // view rects changed when their ancestor is repositioned, and therefore
     // need to have their screen rects updated.
     FrameTreeNode* proxy_node =
         frame_proxy_in_parent_renderer_->frame_tree_node();
-    if (old_rect.x() != child_frame_rect_.x() ||
-        old_rect.y() != child_frame_rect_.y()) {
+    if (old_rect.x() != frame_rect_.x() || old_rect.y() != frame_rect_.y()) {
       for (FrameTreeNode* node :
            proxy_node->frame_tree()->SubtreeNodes(proxy_node)) {
         if (node != proxy_node && node->current_frame_host()->is_local_root())
@@ -434,7 +437,7 @@
 
 void CrossProcessFrameConnector::ResetFrameRect() {
   local_surface_id_ = viz::LocalSurfaceId();
-  child_frame_rect_ = gfx::Rect();
+  frame_rect_ = gfx::Rect();
 }
 
 }  // namespace content
diff --git a/content/browser/frame_host/cross_process_frame_connector.h b/content/browser/frame_host/cross_process_frame_connector.h
index 1fa7737..69e69df 100644
--- a/content/browser/frame_host/cross_process_frame_connector.h
+++ b/content/browser/frame_host/cross_process_frame_connector.h
@@ -141,7 +141,8 @@
   // The RenderWidgetHostView for the frame. Initially NULL.
   RenderWidgetHostViewChildFrame* view_;
 
-  gfx::Rect child_frame_rect_;
+  gfx::Rect frame_rect_;
+  gfx::Rect frame_rect_in_dip_;
   bool is_inert_ = false;
 
   // Visibility state of the corresponding frame owner element in parent process
diff --git a/content/browser/frame_host/data_url_navigation_throttle.cc b/content/browser/frame_host/data_url_navigation_throttle.cc
index 115629f..898934c3 100644
--- a/content/browser/frame_host/data_url_navigation_throttle.cc
+++ b/content/browser/frame_host/data_url_navigation_throttle.cc
@@ -72,7 +72,7 @@
       !navigation_handle->IsSameDocument() &&
       !base::FeatureList::IsEnabled(
           features::kAllowContentInitiatedDataUrlNavigations)) {
-    return base::MakeUnique<DataUrlNavigationThrottle>(navigation_handle);
+    return std::make_unique<DataUrlNavigationThrottle>(navigation_handle);
   }
   return nullptr;
 }
diff --git a/content/browser/frame_host/frame_tree_node.cc b/content/browser/frame_host/frame_tree_node.cc
index a381bb7..1c5291d 100644
--- a/content/browser/frame_host/frame_tree_node.cc
+++ b/content/browser/frame_host/frame_tree_node.cc
@@ -260,7 +260,7 @@
   opener_ = opener;
 
   if (opener_) {
-    opener_observer_ = base::MakeUnique<OpenerDestroyedObserver>(this, false);
+    opener_observer_ = std::make_unique<OpenerDestroyedObserver>(this, false);
     opener_->AddObserver(opener_observer_.get());
   }
 }
@@ -278,7 +278,7 @@
 
   if (original_opener_) {
     original_opener_observer_ =
-        base::MakeUnique<OpenerDestroyedObserver>(this, true);
+        std::make_unique<OpenerDestroyedObserver>(this, true);
     original_opener_->AddObserver(original_opener_observer_.get());
   }
 }
diff --git a/content/browser/frame_host/input/input_injector_impl.cc b/content/browser/frame_host/input/input_injector_impl.cc
index cf14431c..cdbfd92 100644
--- a/content/browser/frame_host/input/input_injector_impl.cc
+++ b/content/browser/frame_host/input/input_injector_impl.cc
@@ -26,7 +26,7 @@
 
 void InputInjectorImpl::Create(base::WeakPtr<RenderFrameHostImpl> frame_host,
                                mojom::InputInjectorRequest request) {
-  mojo::MakeStrongBinding(base::MakeUnique<InputInjectorImpl>(frame_host),
+  mojo::MakeStrongBinding(std::make_unique<InputInjectorImpl>(frame_host),
                           std::move(request));
 }
 
diff --git a/content/browser/frame_host/input/legacy_ipc_frame_input_handler.cc b/content/browser/frame_host/input/legacy_ipc_frame_input_handler.cc
index c4c2621..322b6521 100644
--- a/content/browser/frame_host/input/legacy_ipc_frame_input_handler.cc
+++ b/content/browser/frame_host/input/legacy_ipc_frame_input_handler.cc
@@ -33,32 +33,32 @@
     ime_text_spans.push_back(blink_ime_text_span);
   }
 
-  SendInput(base::MakeUnique<InputMsg_SetCompositionFromExistingText>(
+  SendInput(std::make_unique<InputMsg_SetCompositionFromExistingText>(
       routing_id_, start, end, ime_text_spans));
 }
 
 void LegacyIPCFrameInputHandler::ExtendSelectionAndDelete(int32_t before,
                                                           int32_t after) {
-  SendInput(base::MakeUnique<InputMsg_ExtendSelectionAndDelete>(routing_id_,
+  SendInput(std::make_unique<InputMsg_ExtendSelectionAndDelete>(routing_id_,
                                                                 before, after));
 }
 
 void LegacyIPCFrameInputHandler::DeleteSurroundingText(int32_t before,
                                                        int32_t after) {
-  SendInput(base::MakeUnique<InputMsg_DeleteSurroundingText>(routing_id_,
+  SendInput(std::make_unique<InputMsg_DeleteSurroundingText>(routing_id_,
                                                              before, after));
 }
 
 void LegacyIPCFrameInputHandler::DeleteSurroundingTextInCodePoints(
     int32_t before,
     int32_t after) {
-  SendInput(base::MakeUnique<InputMsg_DeleteSurroundingTextInCodePoints>(
+  SendInput(std::make_unique<InputMsg_DeleteSurroundingTextInCodePoints>(
       routing_id_, before, after));
 }
 
 void LegacyIPCFrameInputHandler::SetEditableSelectionOffsets(int32_t start,
                                                              int32_t end) {
-  SendInput(base::MakeUnique<InputMsg_SetEditableSelectionOffsets>(routing_id_,
+  SendInput(std::make_unique<InputMsg_SetEditableSelectionOffsets>(routing_id_,
                                                                    start, end));
 }
 
@@ -66,72 +66,72 @@
     const std::string& command,
     const base::Optional<base::string16>& value) {
   if (!value) {
-    SendInput(base::MakeUnique<InputMsg_ExecuteNoValueEditCommand>(routing_id_,
+    SendInput(std::make_unique<InputMsg_ExecuteNoValueEditCommand>(routing_id_,
                                                                    command));
   }
 }
 
 void LegacyIPCFrameInputHandler::Undo() {
-  SendInput(base::MakeUnique<InputMsg_Undo>(routing_id_));
+  SendInput(std::make_unique<InputMsg_Undo>(routing_id_));
 }
 
 void LegacyIPCFrameInputHandler::Redo() {
-  SendInput(base::MakeUnique<InputMsg_Redo>(routing_id_));
+  SendInput(std::make_unique<InputMsg_Redo>(routing_id_));
 }
 
 void LegacyIPCFrameInputHandler::Cut() {
-  SendInput(base::MakeUnique<InputMsg_Cut>(routing_id_));
+  SendInput(std::make_unique<InputMsg_Cut>(routing_id_));
 }
 
 void LegacyIPCFrameInputHandler::Copy() {
-  SendInput(base::MakeUnique<InputMsg_Copy>(routing_id_));
+  SendInput(std::make_unique<InputMsg_Copy>(routing_id_));
 }
 
 void LegacyIPCFrameInputHandler::CopyToFindPboard() {
 #if defined(OS_MACOSX)
-  SendInput(base::MakeUnique<InputMsg_CopyToFindPboard>(routing_id_));
+  SendInput(std::make_unique<InputMsg_CopyToFindPboard>(routing_id_));
 #endif
 }
 
 void LegacyIPCFrameInputHandler::Paste() {
-  SendInput(base::MakeUnique<InputMsg_Paste>(routing_id_));
+  SendInput(std::make_unique<InputMsg_Paste>(routing_id_));
 }
 
 void LegacyIPCFrameInputHandler::PasteAndMatchStyle() {
-  SendInput(base::MakeUnique<InputMsg_PasteAndMatchStyle>(routing_id_));
+  SendInput(std::make_unique<InputMsg_PasteAndMatchStyle>(routing_id_));
 }
 
 void LegacyIPCFrameInputHandler::Replace(const base::string16& word) {
-  SendInput(base::MakeUnique<InputMsg_Replace>(routing_id_, word));
+  SendInput(std::make_unique<InputMsg_Replace>(routing_id_, word));
 }
 
 void LegacyIPCFrameInputHandler::ReplaceMisspelling(
     const base::string16& word) {
-  SendInput(base::MakeUnique<InputMsg_ReplaceMisspelling>(routing_id_, word));
+  SendInput(std::make_unique<InputMsg_ReplaceMisspelling>(routing_id_, word));
 }
 
 void LegacyIPCFrameInputHandler::Delete() {
-  SendInput(base::MakeUnique<InputMsg_Delete>(routing_id_));
+  SendInput(std::make_unique<InputMsg_Delete>(routing_id_));
 }
 
 void LegacyIPCFrameInputHandler::SelectAll() {
-  SendInput(base::MakeUnique<InputMsg_SelectAll>(routing_id_));
+  SendInput(std::make_unique<InputMsg_SelectAll>(routing_id_));
 }
 
 void LegacyIPCFrameInputHandler::CollapseSelection() {
-  SendInput(base::MakeUnique<InputMsg_CollapseSelection>(routing_id_));
+  SendInput(std::make_unique<InputMsg_CollapseSelection>(routing_id_));
 }
 
 void LegacyIPCFrameInputHandler::SelectRange(const gfx::Point& point,
                                              const gfx::Point& extent) {
-  SendInput(base::MakeUnique<InputMsg_SelectRange>(routing_id_, point, extent));
+  SendInput(std::make_unique<InputMsg_SelectRange>(routing_id_, point, extent));
 }
 
 void LegacyIPCFrameInputHandler::AdjustSelectionByCharacterOffset(
     int32_t start,
     int32_t end,
     blink::mojom::SelectionMenuBehavior selection_menu_behavior) {
-  SendInput(base::MakeUnique<InputMsg_AdjustSelectionByCharacterOffset>(
+  SendInput(std::make_unique<InputMsg_AdjustSelectionByCharacterOffset>(
       routing_id_, start, end,
       selection_menu_behavior == blink::mojom::SelectionMenuBehavior::kShow));
 }
@@ -139,17 +139,17 @@
 void LegacyIPCFrameInputHandler::MoveRangeSelectionExtent(
     const gfx::Point& extent) {
   SendInput(
-      base::MakeUnique<InputMsg_MoveRangeSelectionExtent>(routing_id_, extent));
+      std::make_unique<InputMsg_MoveRangeSelectionExtent>(routing_id_, extent));
 }
 
 void LegacyIPCFrameInputHandler::ScrollFocusedEditableNodeIntoRect(
     const gfx::Rect& rect) {
-  SendInput(base::MakeUnique<InputMsg_ScrollFocusedEditableNodeIntoRect>(
+  SendInput(std::make_unique<InputMsg_ScrollFocusedEditableNodeIntoRect>(
       routing_id_, rect));
 }
 
 void LegacyIPCFrameInputHandler::MoveCaret(const gfx::Point& point) {
-  SendInput(base::MakeUnique<InputMsg_MoveCaret>(routing_id_, point));
+  SendInput(std::make_unique<InputMsg_MoveCaret>(routing_id_, point));
 }
 
 void LegacyIPCFrameInputHandler::GetWidgetInputHandler(
diff --git a/content/browser/frame_host/interstitial_page_impl.cc b/content/browser/frame_host/interstitial_page_impl.cc
index 99c219c..c86530f5 100644
--- a/content/browser/frame_host/interstitial_page_impl.cc
+++ b/content/browser/frame_host/interstitial_page_impl.cc
@@ -167,7 +167,7 @@
       // While we get the code to a point to do this, pass NULL for it.
       // TODO(creis): We will also need to pass delegates for the RVHM as we
       // start to use it.
-      frame_tree_(base::MakeUnique<FrameTree>(
+      frame_tree_(std::make_unique<FrameTree>(
           new InterstitialPageNavigatorImpl(this, controller_),
           this,
           this,
diff --git a/content/browser/frame_host/keep_alive_handle_factory.cc b/content/browser/frame_host/keep_alive_handle_factory.cc
index 08ab034..f94869f 100644
--- a/content/browser/frame_host/keep_alive_handle_factory.cc
+++ b/content/browser/frame_host/keep_alive_handle_factory.cc
@@ -98,7 +98,7 @@
 }
 
 void KeepAliveHandleFactory::Create(mojom::KeepAliveHandleRequest request) {
-  context_->AddBinding(base::MakeUnique<KeepAliveHandleImpl>(context_),
+  context_->AddBinding(std::make_unique<KeepAliveHandleImpl>(context_),
                        std::move(request));
 }
 
diff --git a/content/browser/frame_host/navigation_entry_impl.cc b/content/browser/frame_host/navigation_entry_impl.cc
index 327b7a3..f4ba97c 100644
--- a/content/browser/frame_host/navigation_entry_impl.cc
+++ b/content/browser/frame_host/navigation_entry_impl.cc
@@ -74,7 +74,7 @@
 
   for (const ExplodedFrameState& child_state : state.children) {
     node->children.push_back(
-        base::MakeUnique<NavigationEntryImpl::TreeNode>(node, nullptr));
+        std::make_unique<NavigationEntryImpl::TreeNode>(node, nullptr));
     RecursivelyGenerateFrameEntries(child_state, empty_file_list,
                                     node->children.back().get());
   }
@@ -863,7 +863,7 @@
       site_instance, std::move(source_site_instance), url, referrer,
       redirect_chain, page_state, method, post_id);
   parent_node->children.push_back(
-      base::MakeUnique<NavigationEntryImpl::TreeNode>(parent_node,
+      std::make_unique<NavigationEntryImpl::TreeNode>(parent_node,
                                                       frame_entry));
 }
 
diff --git a/content/browser/frame_host/navigation_entry_impl_unittest.cc b/content/browser/frame_host/navigation_entry_impl_unittest.cc
index 73b50be5..c255cda3ff 100644
--- a/content/browser/frame_host/navigation_entry_impl_unittest.cc
+++ b/content/browser/frame_host/navigation_entry_impl_unittest.cc
@@ -32,7 +32,7 @@
   // SSLStatus implementation:
   std::unique_ptr<SSLStatus::UserData> Clone() override {
     std::unique_ptr<TestSSLStatusData> cloned =
-        base::MakeUnique<TestSSLStatusData>();
+        std::make_unique<TestSSLStatusData>();
     cloned->set_user_data_flag(user_data_flag_);
     return std::move(cloned);
   }
@@ -176,7 +176,7 @@
 TEST_F(NavigationEntryTest, SSLStatusUserData) {
   // Set up an SSLStatus with some user data on it.
   SSLStatus ssl;
-  ssl.user_data = base::MakeUnique<TestSSLStatusData>();
+  ssl.user_data = std::make_unique<TestSSLStatusData>();
   TestSSLStatusData* ssl_data =
       static_cast<TestSSLStatusData*>(ssl.user_data.get());
   ASSERT_TRUE(ssl_data);
diff --git a/content/browser/frame_host/navigation_handle_impl_browsertest.cc b/content/browser/frame_host/navigation_handle_impl_browsertest.cc
index 0ae5533..3a0afee 100644
--- a/content/browser/frame_host/navigation_handle_impl_browsertest.cc
+++ b/content/browser/frame_host/navigation_handle_impl_browsertest.cc
@@ -1622,7 +1622,7 @@
   scoped_refptr<SiteInstance> site_instance =
       shell()->web_contents()->GetMainFrame()->GetSiteInstance();
 
-  auto installer = base::MakeUnique<TestNavigationThrottleInstaller>(
+  auto installer = std::make_unique<TestNavigationThrottleInstaller>(
       shell()->web_contents(), NavigationThrottle::BLOCK_REQUEST,
       NavigationThrottle::PROCEED, NavigationThrottle::PROCEED,
       NavigationThrottle::PROCEED);
@@ -1691,7 +1691,7 @@
               shell()->web_contents()->GetMainFrame()->GetSiteInstance());
   }
 
-  installer = base::MakeUnique<TestNavigationThrottleInstaller>(
+  installer = std::make_unique<TestNavigationThrottleInstaller>(
       shell()->web_contents(), NavigationThrottle::BLOCK_REQUEST,
       NavigationThrottle::PROCEED, NavigationThrottle::PROCEED,
       NavigationThrottle::PROCEED);
diff --git a/content/browser/frame_host/navigation_handle_impl_unittest.cc b/content/browser/frame_host/navigation_handle_impl_unittest.cc
index 88910edf..0aa6b2cb 100644
--- a/content/browser/frame_host/navigation_handle_impl_unittest.cc
+++ b/content/browser/frame_host/navigation_handle_impl_unittest.cc
@@ -245,7 +245,7 @@
   void AddDeletingNavigationThrottle() {
     DCHECK(test_handle_);
     test_handle()->RegisterThrottleForTesting(
-        base::MakeUnique<DeletingNavigationThrottle>(
+        std::make_unique<DeletingNavigationThrottle>(
             test_handle(), base::BindRepeating(
                                &NavigationHandleImplTest::ResetNavigationHandle,
                                base::Unretained(this))));
@@ -290,7 +290,7 @@
     RenderViewHostImplTestHarness::SetUp();
     contents()->GetMainFrame()->InitializeRenderFrameIfNeeded();
     test_browser_client_ =
-        base::MakeUnique<ThrottleInserterContentBrowserClient>(
+        std::make_unique<ThrottleInserterContentBrowserClient>(
             base::Bind(&NavigationHandleImplThrottleInsertionTest::GetThrottles,
                        base::Unretained(this)));
     old_browser_client_ =
@@ -307,7 +307,7 @@
  private:
   std::vector<std::unique_ptr<NavigationThrottle>> GetThrottles(
       NavigationHandle* handle) {
-    auto throttle = base::MakeUnique<TestNavigationThrottle>(handle);
+    auto throttle = std::make_unique<TestNavigationThrottle>(handle);
     std::vector<std::unique_ptr<NavigationThrottle>> vec;
     throttles_inserted_++;
     vec.push_back(std::move(throttle));
diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc
index 57264c4..cae9cd32 100644
--- a/content/browser/frame_host/navigation_request.cc
+++ b/content/browser/frame_host/navigation_request.cc
@@ -1046,7 +1046,7 @@
 
   loader_ = NavigationURLLoader::Create(
       browser_context->GetResourceContext(), partition,
-      base::MakeUnique<NavigationRequestInfo>(
+      std::make_unique<NavigationRequestInfo>(
           common_params_, begin_params_, site_for_cookies,
           frame_tree_node_->IsMainFrame(), parent_is_main_frame,
           IsSecureFrame(frame_tree_node_->parent()),
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index dfc16397..a97660da 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -269,7 +269,7 @@
                    int routing_id,
                    media::mojom::RemoterFactoryRequest request) {
     mojo::MakeStrongBinding(
-        base::MakeUnique<RemoterFactoryImpl>(process_id, routing_id),
+        std::make_unique<RemoterFactoryImpl>(process_id, routing_id),
         std::move(request));
   }
 
@@ -415,7 +415,7 @@
                                RenderFrameHostDelegate* delegate,
                                media::mojom::RendererRequest request) {
   std::unique_ptr<MediaPlayerRenderer> renderer =
-      base::MakeUnique<MediaPlayerRenderer>(process_id, routing_id,
+      std::make_unique<MediaPlayerRenderer>(process_id, routing_id,
                                             delegate->GetAsWebContents());
 
   // base::Unretained is safe here because the lifetime of the MediaPlayerRender
@@ -2343,7 +2343,7 @@
     return;
 
   if (waiting_for_init_) {
-    pendinging_navigate_ = base::MakeUnique<PendingNavigation>(
+    pendinging_navigate_ = std::make_unique<PendingNavigation>(
         validated_params, validated_begin_params);
     return;
   }
@@ -2887,7 +2887,7 @@
 
   if (!keep_alive_handle_factory_) {
     keep_alive_handle_factory_ =
-        base::MakeUnique<KeepAliveHandleFactory>(GetProcess());
+        std::make_unique<KeepAliveHandleFactory>(GetProcess());
   }
   keep_alive_handle_factory_->Create(std::move(request));
 }
@@ -3459,8 +3459,8 @@
   if (registry_.get())
     return;
 
-  associated_registry_ = base::MakeUnique<AssociatedInterfaceRegistryImpl>();
-  registry_ = base::MakeUnique<service_manager::BinderRegistry>();
+  associated_registry_ = std::make_unique<AssociatedInterfaceRegistryImpl>();
+  registry_ = std::make_unique<service_manager::BinderRegistry>();
 
   auto make_binding = [](RenderFrameHostImpl* impl,
                          mojom::FrameHostAssociatedRequest request) {
@@ -3621,12 +3621,12 @@
 
   if (!resource_coordinator::IsResourceCoordinatorEnabled()) {
     frame_resource_coordinator_ =
-        base::MakeUnique<resource_coordinator::ResourceCoordinatorInterface>(
+        std::make_unique<resource_coordinator::ResourceCoordinatorInterface>(
             nullptr, resource_coordinator::CoordinationUnitType::kFrame);
   } else {
     auto* connection = ServiceManagerConnection::GetForProcess();
     frame_resource_coordinator_ =
-        base::MakeUnique<resource_coordinator::ResourceCoordinatorInterface>(
+        std::make_unique<resource_coordinator::ResourceCoordinatorInterface>(
             connection ? connection->GetConnector() : nullptr,
             resource_coordinator::CoordinationUnitType::kFrame);
   }
@@ -4065,7 +4065,7 @@
   // |binding_| which may run the error handler. |binding_| can't run the error
   // handler after it's destroyed so it can't run after the RFHI is destroyed.
   auto web_bluetooth_service =
-      base::MakeUnique<WebBluetoothServiceImpl>(this, std::move(request));
+      std::make_unique<WebBluetoothServiceImpl>(this, std::move(request));
   web_bluetooth_service->SetClientConnectionErrorHandler(
       base::Bind(&RenderFrameHostImpl::DeleteWebBluetoothService,
                  base::Unretained(this), web_bluetooth_service.get()));
@@ -4329,7 +4329,7 @@
           GetUserData(kRenderFrameHostAndroidKey));
   if (!render_frame_host_android) {
     service_manager::mojom::InterfaceProviderPtr interface_provider_ptr;
-    java_interface_registry_ = base::MakeUnique<JavaInterfaceProvider>(
+    java_interface_registry_ = std::make_unique<JavaInterfaceProvider>(
         base::Bind(&RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame,
                    weak_ptr_factory_.GetWeakPtr()),
         mojo::MakeRequest(&interface_provider_ptr));
diff --git a/content/browser/frame_host/render_frame_host_manager_browsertest.cc b/content/browser/frame_host/render_frame_host_manager_browsertest.cc
index 187393c..58326e85 100644
--- a/content/browser/frame_host/render_frame_host_manager_browsertest.cc
+++ b/content/browser/frame_host/render_frame_host_manager_browsertest.cc
@@ -2050,7 +2050,7 @@
   WebUIImpl* web_ui = rfh->web_ui();
 
   EXPECT_TRUE(web_ui->CanCallJavascript());
-  auto handler_owner = base::MakeUnique<TestWebUIMessageHandler>();
+  auto handler_owner = std::make_unique<TestWebUIMessageHandler>();
   TestWebUIMessageHandler* handler = handler_owner.get();
 
   web_ui->AddMessageHandler(std::move(handler_owner));
diff --git a/content/browser/frame_host/render_widget_host_view_guest_unittest.cc b/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
index 0f618c3..22f1179 100644
--- a/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
+++ b/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
@@ -53,7 +53,7 @@
         new MockRenderProcessHost(browser_context_.get());
     int32_t routing_id = process_host->GetNextRoutingID();
     mojom::WidgetPtr widget;
-    widget_impl_ = base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget));
+    widget_impl_ = std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget));
 
     widget_host_ = new RenderWidgetHostImpl(
         &delegate_, process_host, routing_id, std::move(widget), false);
@@ -157,7 +157,7 @@
 
     int32_t routing_id = process_host->GetNextRoutingID();
     mojom::WidgetPtr widget;
-    widget_impl_ = base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget));
+    widget_impl_ = std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget));
 
     widget_host_ = new RenderWidgetHostImpl(
         &delegate_, process_host, routing_id, std::move(widget), false);
@@ -170,7 +170,7 @@
     viz::mojom::CompositorFrameSinkClientRequest client_request =
         mojo::MakeRequest(&renderer_compositor_frame_sink_ptr_);
     renderer_compositor_frame_sink_ =
-        base::MakeUnique<FakeRendererCompositorFrameSink>(
+        std::make_unique<FakeRendererCompositorFrameSink>(
             std::move(sink), std::move(client_request));
     view_->DidCreateNewRendererCompositorFrameSink(
         renderer_compositor_frame_sink_ptr_.get());
diff --git a/content/browser/generic_sensor_browsertest.cc b/content/browser/generic_sensor_browsertest.cc
index 22602f7..79a8d83 100644
--- a/content/browser/generic_sensor_browsertest.cc
+++ b/content/browser/generic_sensor_browsertest.cc
@@ -143,7 +143,7 @@
                  GetSensorCallback callback) override {
     switch (type) {
       case device::mojom::SensorType::AMBIENT_LIGHT: {
-        auto sensor = base::MakeUnique<FakeAmbientLightSensor>();
+        auto sensor = std::make_unique<FakeAmbientLightSensor>();
 
         auto init_params = device::mojom::SensorInitParams::New();
         init_params->memory = sensor->GetSharedBufferHandle();
@@ -180,7 +180,7 @@
   ~GenericSensorBrowserTest() override {}
 
   void SetUpOnMainThread() override {
-    fake_sensor_provider_ = base::MakeUnique<FakeSensorProvider>();
+    fake_sensor_provider_ = std::make_unique<FakeSensorProvider>();
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
         base::BindOnce(&GenericSensorBrowserTest::SetBinderOnIOThread,
diff --git a/content/browser/geolocation/geolocation_service_impl.cc b/content/browser/geolocation/geolocation_service_impl.cc
index a9f030d..ae3bd940 100644
--- a/content/browser/geolocation/geolocation_service_impl.cc
+++ b/content/browser/geolocation/geolocation_service_impl.cc
@@ -75,7 +75,7 @@
     device::mojom::GeolocationServiceRequest request) {
   binding_set_.AddBinding(
       this, std::move(request),
-      base::MakeUnique<GeolocationServiceImplContext>(permission_manager_));
+      std::make_unique<GeolocationServiceImplContext>(permission_manager_));
 }
 
 void GeolocationServiceImpl::CreateGeolocation(
diff --git a/content/browser/geolocation/geolocation_service_impl_unittest.cc b/content/browser/geolocation/geolocation_service_impl_unittest.cc
index 6f6e11f8..3ce8ec6 100644
--- a/content/browser/geolocation/geolocation_service_impl_unittest.cc
+++ b/content/browser/geolocation/geolocation_service_impl_unittest.cc
@@ -152,7 +152,7 @@
   geolocation->QueryNextPosition(base::BindOnce([](GeopositionPtr geoposition) {
     ADD_FAILURE() << "Position updated unexpectedly";
   }));
-  auto mock_geoposition = base::MakeUnique<Geoposition>();
+  auto mock_geoposition = std::make_unique<Geoposition>();
   mock_geoposition->latitude = kMockLatitude;
   mock_geoposition->longitude = kMockLongitude;
   context()->SetOverride(std::move(mock_geoposition));
@@ -184,7 +184,7 @@
         callback.Run();
       },
       loop.QuitClosure()));
-  auto mock_geoposition = base::MakeUnique<Geoposition>();
+  auto mock_geoposition = std::make_unique<Geoposition>();
   mock_geoposition->latitude = kMockLatitude;
   mock_geoposition->longitude = kMockLongitude;
   context()->SetOverride(std::move(mock_geoposition));
@@ -211,7 +211,7 @@
         callback.Run();
       },
       loop.QuitClosure()));
-  auto mock_geoposition = base::MakeUnique<Geoposition>();
+  auto mock_geoposition = std::make_unique<Geoposition>();
   mock_geoposition->latitude = kMockLatitude;
   mock_geoposition->longitude = kMockLongitude;
   context()->SetOverride(std::move(mock_geoposition));
@@ -233,7 +233,7 @@
   geolocation->QueryNextPosition(base::BindOnce([](GeopositionPtr geoposition) {
     ADD_FAILURE() << "Position updated unexpectedly";
   }));
-  auto mock_geoposition = base::MakeUnique<Geoposition>();
+  auto mock_geoposition = std::make_unique<Geoposition>();
   mock_geoposition->latitude = kMockLatitude;
   mock_geoposition->longitude = kMockLongitude;
   context()->SetOverride(std::move(mock_geoposition));
@@ -266,7 +266,7 @@
         callback.Run();
       },
       loop.QuitClosure()));
-  auto mock_geoposition = base::MakeUnique<Geoposition>();
+  auto mock_geoposition = std::make_unique<Geoposition>();
   mock_geoposition->latitude = kMockLatitude;
   mock_geoposition->longitude = kMockLongitude;
   context()->SetOverride(std::move(mock_geoposition));
@@ -294,7 +294,7 @@
   geolocation->QueryNextPosition(base::BindOnce([](GeopositionPtr geoposition) {
     ADD_FAILURE() << "Position updated unexpectedly";
   }));
-  auto mock_geoposition = base::MakeUnique<Geoposition>();
+  auto mock_geoposition = std::make_unique<Geoposition>();
   mock_geoposition->latitude = kMockLatitude;
   mock_geoposition->longitude = kMockLongitude;
   context()->SetOverride(std::move(mock_geoposition));
@@ -317,7 +317,7 @@
   geolocation->QueryNextPosition(base::BindOnce([](GeopositionPtr geoposition) {
     ADD_FAILURE() << "Position updated unexpectedly";
   }));
-  auto mock_geoposition = base::MakeUnique<Geoposition>();
+  auto mock_geoposition = std::make_unique<Geoposition>();
   mock_geoposition->latitude = kMockLatitude;
   mock_geoposition->longitude = kMockLongitude;
   context()->SetOverride(std::move(mock_geoposition));
diff --git a/content/browser/gpu/compositor_util.cc b/content/browser/gpu/compositor_util.cc
index f0e3f47aa..937c9af 100644
--- a/content/browser/gpu/compositor_util.cc
+++ b/content/browser/gpu/compositor_util.cc
@@ -295,7 +295,7 @@
   bool gpu_access_blocked =
       !manager->GpuAccessAllowed(&gpu_access_blocked_reason);
 
-  auto feature_status_dict = base::MakeUnique<base::DictionaryValue>();
+  auto feature_status_dict = std::make_unique<base::DictionaryValue>();
 
   bool eof = false;
   for (size_t i = 0; !eof; ++i) {
@@ -350,15 +350,15 @@
   bool gpu_access_blocked =
       !manager->GpuAccessAllowed(&gpu_access_blocked_reason);
 
-  auto problem_list = base::MakeUnique<base::ListValue>();
+  auto problem_list = std::make_unique<base::ListValue>();
   manager->GetBlacklistReasons(problem_list.get());
 
   if (gpu_access_blocked) {
-    auto problem = base::MakeUnique<base::DictionaryValue>();
+    auto problem = std::make_unique<base::DictionaryValue>();
     problem->SetString("description",
         "GPU process was unable to boot: " + gpu_access_blocked_reason);
-    problem->Set("crBugs", base::MakeUnique<base::ListValue>());
-    auto disabled_features = base::MakeUnique<base::ListValue>();
+    problem->Set("crBugs", std::make_unique<base::ListValue>());
+    auto disabled_features = std::make_unique<base::ListValue>();
     disabled_features->AppendString("all");
     problem->Set("affectedGpuSettings", std::move(disabled_features));
     problem->SetString("tag", "disabledFeatures");
@@ -369,10 +369,10 @@
   for (size_t i = 0; !eof; ++i) {
     const GpuFeatureData gpu_feature_data = GetGpuFeatureData(i, &eof);
     if (gpu_feature_data.disabled) {
-      auto problem = base::MakeUnique<base::DictionaryValue>();
+      auto problem = std::make_unique<base::DictionaryValue>();
       problem->SetString("description", gpu_feature_data.disabled_description);
-      problem->Set("crBugs", base::MakeUnique<base::ListValue>());
-      auto disabled_features = base::MakeUnique<base::ListValue>();
+      problem->Set("crBugs", std::make_unique<base::ListValue>());
+      auto disabled_features = std::make_unique<base::ListValue>();
       disabled_features->AppendString(gpu_feature_data.name);
       problem->Set("affectedGpuSettings", std::move(disabled_features));
       problem->SetString("tag", "disabledFeatures");
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc
index 3dd9d8c0..3bdfd595 100644
--- a/content/browser/gpu/gpu_data_manager_impl_private.cc
+++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
@@ -899,7 +899,7 @@
 
 std::unique_ptr<base::ListValue> GpuDataManagerImplPrivate::GetLogMessages()
     const {
-  auto value = base::MakeUnique<base::ListValue>();
+  auto value = std::make_unique<base::ListValue>();
   for (size_t ii = 0; ii < log_messages_.size(); ++ii) {
     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
     dict->SetInteger("level", log_messages_[ii].level);
diff --git a/content/browser/gpu/gpu_internals_ui.cc b/content/browser/gpu/gpu_internals_ui.cc
index 7e076e5..342e87a 100644
--- a/content/browser/gpu/gpu_internals_ui.cc
+++ b/content/browser/gpu/gpu_internals_ui.cc
@@ -91,7 +91,7 @@
 #if defined(OS_WIN)
 // Output DxDiagNode tree as nested array of {description,value} pairs
 std::unique_ptr<base::ListValue> DxDiagNodeToList(const gpu::DxDiagNode& node) {
-  auto list = base::MakeUnique<base::ListValue>();
+  auto list = std::make_unique<base::ListValue>();
   for (std::map<std::string, std::string>::const_iterator it =
       node.values.begin();
       it != node.values.end();
@@ -123,21 +123,21 @@
 
 std::unique_ptr<base::DictionaryValue> GpuInfoAsDictionaryValue() {
   gpu::GPUInfo gpu_info = GpuDataManagerImpl::GetInstance()->GetGPUInfo();
-  auto basic_info = base::MakeUnique<base::ListValue>();
+  auto basic_info = std::make_unique<base::ListValue>();
   basic_info->Append(NewDescriptionValuePair(
       "Initialization time",
       base::Int64ToString(gpu_info.initialization_time.InMilliseconds())));
   basic_info->Append(NewDescriptionValuePair(
       "In-process GPU",
-      base::MakeUnique<base::Value>(gpu_info.in_process_gpu)));
+      std::make_unique<base::Value>(gpu_info.in_process_gpu)));
   basic_info->Append(NewDescriptionValuePair(
       "Passthrough Command Decoder",
-      base::MakeUnique<base::Value>(gpu_info.passthrough_cmd_decoder)));
+      std::make_unique<base::Value>(gpu_info.passthrough_cmd_decoder)));
   basic_info->Append(NewDescriptionValuePair(
       "Supports overlays",
-      base::MakeUnique<base::Value>(gpu_info.supports_overlays)));
+      std::make_unique<base::Value>(gpu_info.supports_overlays)));
   basic_info->Append(NewDescriptionValuePair(
-      "Sandboxed", base::MakeUnique<base::Value>(gpu_info.sandboxed)));
+      "Sandboxed", std::make_unique<base::Value>(gpu_info.sandboxed)));
   basic_info->Append(NewDescriptionValuePair(
       "GPU0", GPUDeviceToString(gpu_info.gpu)));
   for (size_t i = 0; i < gpu_info.secondary_gpus.size(); ++i) {
@@ -146,12 +146,12 @@
         GPUDeviceToString(gpu_info.secondary_gpus[i])));
   }
   basic_info->Append(NewDescriptionValuePair(
-      "Optimus", base::MakeUnique<base::Value>(gpu_info.optimus)));
+      "Optimus", std::make_unique<base::Value>(gpu_info.optimus)));
   basic_info->Append(NewDescriptionValuePair(
-      "Optimus", base::MakeUnique<base::Value>(gpu_info.optimus)));
+      "Optimus", std::make_unique<base::Value>(gpu_info.optimus)));
   basic_info->Append(NewDescriptionValuePair(
       "AMD switchable",
-      base::MakeUnique<base::Value>(gpu_info.amd_switchable)));
+      std::make_unique<base::Value>(gpu_info.amd_switchable)));
 #if defined(OS_WIN)
   std::string compositor =
       ui::win::IsAeroGlassEnabled() ? "Aero Glass" : "none";
@@ -238,12 +238,12 @@
 
   basic_info->Append(NewDescriptionValuePair(
       "GPU process crash count",
-      base::MakeUnique<base::Value>(gpu_info.process_crash_count)));
+      std::make_unique<base::Value>(gpu_info.process_crash_count)));
 
-  auto info = base::MakeUnique<base::DictionaryValue>();
+  auto info = std::make_unique<base::DictionaryValue>();
 
 #if defined(OS_WIN)
-  auto dx_info = base::MakeUnique<base::Value>();
+  auto dx_info = std::make_unique<base::Value>();
   if (gpu_info.dx_diagnostics.children.size())
     dx_info = DxDiagNodeToList(gpu_info.dx_diagnostics);
   info->Set("diagnostics", std::move(dx_info));
@@ -327,7 +327,7 @@
 }
 
 std::unique_ptr<base::ListValue> CompositorInfo() {
-  auto compositor_info = base::MakeUnique<base::ListValue>();
+  auto compositor_info = std::make_unique<base::ListValue>();
 
   compositor_info->Append(NewDescriptionValuePair(
       "Tile Update Mode",
@@ -339,7 +339,7 @@
 }
 
 std::unique_ptr<base::ListValue> GpuMemoryBufferInfo() {
-  auto gpu_memory_buffer_info = base::MakeUnique<base::ListValue>();
+  auto gpu_memory_buffer_info = std::make_unique<base::ListValue>();
 
   const auto native_configurations =
       gpu::GetNativeGpuMemoryBufferConfigurations();
@@ -369,7 +369,7 @@
 }
 
 std::unique_ptr<base::ListValue> getDisplayInfo() {
-  auto display_info = base::MakeUnique<base::ListValue>();
+  auto display_info = std::make_unique<base::ListValue>();
   const std::vector<display::Display> displays =
       display::Screen::GetScreen()->GetAllDisplays();
   for (const auto& display : displays) {
@@ -463,7 +463,7 @@
   ok = args->GetString(1, &submessage);
   DCHECK(ok);
 
-  auto submessageArgs = base::MakeUnique<base::ListValue>();
+  auto submessageArgs = std::make_unique<base::ListValue>();
   for (size_t i = 2; i < args->GetSize(); ++i) {
     const base::Value* arg;
     ok = args->Get(i, &arg);
@@ -517,7 +517,7 @@
     const base::ListValue* list) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
-  auto dict = base::MakeUnique<base::DictionaryValue>();
+  auto dict = std::make_unique<base::DictionaryValue>();
 
   dict->SetString("version", GetContentClient()->GetProduct());
   dict->SetString("command_line",
@@ -547,10 +547,10 @@
       GpuInfoAsDictionaryValue());
 
   // Add in blacklisting features
-  auto feature_status = base::MakeUnique<base::DictionaryValue>();
+  auto feature_status = std::make_unique<base::DictionaryValue>();
   feature_status->Set("featureStatus", GetFeatureStatus());
   feature_status->Set("problems", GetProblems());
-  auto workarounds = base::MakeUnique<base::ListValue>();
+  auto workarounds = std::make_unique<base::ListValue>();
   for (const std::string& workaround : GetDriverBugWorkarounds())
     workarounds->AppendString(workaround);
   feature_status->Set("workarounds", std::move(workarounds));
@@ -579,7 +579,7 @@
 
 GpuInternalsUI::GpuInternalsUI(WebUI* web_ui)
     : WebUIController(web_ui) {
-  web_ui->AddMessageHandler(base::MakeUnique<GpuMessageHandler>());
+  web_ui->AddMessageHandler(std::make_unique<GpuMessageHandler>());
 
   // Set up the chrome://gpu/ source.
   BrowserContext* browser_context =
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
index 2882090..1dc7eca7 100644
--- a/content/browser/gpu/gpu_process_host.cc
+++ b/content/browser/gpu/gpu_process_host.cc
@@ -588,7 +588,7 @@
   // May be null during test execution.
   if (ServiceManagerConnection::GetForProcess()) {
     ServiceManagerConnection::GetForProcess()->AddConnectionFilter(
-        base::MakeUnique<ConnectionFilterImpl>());
+        std::make_unique<ConnectionFilterImpl>());
   }
 
   process_->GetHost()->CreateChannelMojo();
@@ -1018,7 +1018,7 @@
   // at startup with EACCES. As a workaround ignore this here, since the
   // executable name is actually not used or useful anyways.
   std::unique_ptr<base::CommandLine> cmd_line =
-      base::MakeUnique<base::CommandLine>(base::CommandLine::NO_PROGRAM);
+      std::make_unique<base::CommandLine>(base::CommandLine::NO_PROGRAM);
 #else
 #if defined(OS_LINUX)
   int child_flags = gpu_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF :
@@ -1032,7 +1032,7 @@
     return false;
 
   std::unique_ptr<base::CommandLine> cmd_line =
-      base::MakeUnique<base::CommandLine>(exe_path);
+      std::make_unique<base::CommandLine>(exe_path);
 #endif
 
   cmd_line->AppendSwitchASCII(switches::kProcessType, switches::kGpuProcess);
@@ -1085,7 +1085,7 @@
     cmd_line->PrependWrapper(gpu_launcher);
 
   std::unique_ptr<GpuSandboxedProcessLauncherDelegate> delegate =
-      base::MakeUnique<GpuSandboxedProcessLauncherDelegate>(*cmd_line);
+      std::make_unique<GpuSandboxedProcessLauncherDelegate>(*cmd_line);
   process_->Launch(std::move(delegate), std::move(cmd_line), true);
   process_launched_ = true;
 
diff --git a/content/browser/host_zoom_map_impl_unittest.cc b/content/browser/host_zoom_map_impl_unittest.cc
index a7df2ef..c0d9aa21 100644
--- a/content/browser/host_zoom_map_impl_unittest.cc
+++ b/content/browser/host_zoom_map_impl_unittest.cc
@@ -93,7 +93,7 @@
   host_zoom_map.SetStoreLastModified(true);
 
   base::Time now = base::Time::Now();
-  auto test_clock = base::MakeUnique<base::SimpleTestClock>();
+  auto test_clock = std::make_unique<base::SimpleTestClock>();
   base::SimpleTestClock* clock = test_clock.get();
   host_zoom_map.SetClockForTesting(std::move(test_clock));
 
@@ -131,7 +131,7 @@
   HostZoomMapImpl host_zoom_map;
   host_zoom_map.SetStoreLastModified(true);
 
-  auto test_clock = base::MakeUnique<base::SimpleTestClock>();
+  auto test_clock = std::make_unique<base::SimpleTestClock>();
   base::SimpleTestClock* clock = test_clock.get();
   host_zoom_map.SetClockForTesting(std::move(test_clock));
 
diff --git a/content/browser/hyphenation/hyphenation_impl.cc b/content/browser/hyphenation/hyphenation_impl.cc
index d7ebbfa..a943bf4 100644
--- a/content/browser/hyphenation/hyphenation_impl.cc
+++ b/content/browser/hyphenation/hyphenation_impl.cc
@@ -62,7 +62,7 @@
 
 // static
 void HyphenationImpl::Create(blink::mojom::HyphenationRequest request) {
-  mojo::MakeStrongBinding(base::MakeUnique<HyphenationImpl>(),
+  mojo::MakeStrongBinding(std::make_unique<HyphenationImpl>(),
                           std::move(request));
 }
 
diff --git a/content/browser/image_capture/image_capture_impl.cc b/content/browser/image_capture/image_capture_impl.cc
index 91865a78..dabcc91 100644
--- a/content/browser/image_capture/image_capture_impl.cc
+++ b/content/browser/image_capture/image_capture_impl.cc
@@ -98,7 +98,7 @@
   if (!base::FeatureList::IsEnabled(features::kImageCaptureAPI))
     return;
 
-  mojo::MakeStrongBinding(base::MakeUnique<ImageCaptureImpl>(),
+  mojo::MakeStrongBinding(std::make_unique<ImageCaptureImpl>(),
                           std::move(request));
 }
 
diff --git a/content/browser/indexed_db/cursor_impl.cc b/content/browser/indexed_db/cursor_impl.cc
index fd8a17acd..0e5b309 100644
--- a/content/browser/indexed_db/cursor_impl.cc
+++ b/content/browser/indexed_db/cursor_impl.cc
@@ -111,8 +111,8 @@
     const IndexedDBKey& primary_key,
     scoped_refptr<IndexedDBCallbacks> callbacks) {
   cursor_->Continue(
-      key.IsValid() ? base::MakeUnique<IndexedDBKey>(key) : nullptr,
-      primary_key.IsValid() ? base::MakeUnique<IndexedDBKey>(primary_key)
+      key.IsValid() ? std::make_unique<IndexedDBKey>(key) : nullptr,
+      primary_key.IsValid() ? std::make_unique<IndexedDBKey>(primary_key)
                             : nullptr,
       std::move(callbacks));
 }
diff --git a/content/browser/indexed_db/database_impl.cc b/content/browser/indexed_db/database_impl.cc
index 9799c38..3bba482 100644
--- a/content/browser/indexed_db/database_impl.cc
+++ b/content/browser/indexed_db/database_impl.cc
@@ -631,7 +631,7 @@
     return;
 
   connection_->database()->Get(transaction, object_store_id, index_id,
-                               base::MakeUnique<IndexedDBKeyRange>(key_range),
+                               std::make_unique<IndexedDBKeyRange>(key_range),
                                key_only, callbacks);
 }
 
@@ -654,7 +654,7 @@
 
   connection_->database()->GetAll(
       transaction, object_store_id, index_id,
-      base::MakeUnique<IndexedDBKeyRange>(key_range), key_only, max_count,
+      std::make_unique<IndexedDBKeyRange>(key_range), key_only, max_count,
       std::move(callbacks));
 }
 
@@ -687,7 +687,7 @@
   swap(value.bits, mojo_value->bits);
   swap(value.blob_info, blob_info);
   connection_->database()->Put(transaction, object_store_id, &value, &handles,
-                               base::MakeUnique<IndexedDBKey>(key), mode,
+                               std::make_unique<IndexedDBKey>(key), mode,
                                std::move(callbacks), index_keys);
 
   // Size can't be big enough to overflow because it represents the
@@ -710,7 +710,7 @@
     return;
 
   connection_->database()->SetIndexKeys(
-      transaction, object_store_id, base::MakeUnique<IndexedDBKey>(primary_key),
+      transaction, object_store_id, std::make_unique<IndexedDBKey>(primary_key),
       index_keys);
 }
 
@@ -751,7 +751,7 @@
 
   connection_->database()->OpenCursor(
       transaction, object_store_id, index_id,
-      base::MakeUnique<IndexedDBKeyRange>(key_range), direction, key_only,
+      std::make_unique<IndexedDBKeyRange>(key_range), direction, key_only,
       task_type, std::move(callbacks));
 }
 
@@ -771,7 +771,7 @@
     return;
 
   connection_->database()->Count(transaction, object_store_id, index_id,
-                                 base::MakeUnique<IndexedDBKeyRange>(key_range),
+                                 std::make_unique<IndexedDBKeyRange>(key_range),
                                  std::move(callbacks));
 }
 
@@ -790,7 +790,7 @@
 
   connection_->database()->DeleteRange(
       transaction, object_store_id,
-      base::MakeUnique<IndexedDBKeyRange>(key_range), std::move(callbacks));
+      std::make_unique<IndexedDBKeyRange>(key_range), std::move(callbacks));
 }
 
 void DatabaseImpl::IDBSequenceHelper::Clear(
diff --git a/content/browser/indexed_db/indexed_db_active_blob_registry_unittest.cc b/content/browser/indexed_db/indexed_db_active_blob_registry_unittest.cc
index 8b6eccc2..01b85d8 100644
--- a/content/browser/indexed_db/indexed_db_active_blob_registry_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_active_blob_registry_unittest.cc
@@ -108,7 +108,7 @@
         factory_(new RegistryTestMockFactory),
         backing_store_(
             new MockIDBBackingStore(factory_.get(), task_runner_.get())),
-        registry_(base::MakeUnique<IndexedDBActiveBlobRegistry>(
+        registry_(std::make_unique<IndexedDBActiveBlobRegistry>(
             backing_store_.get())) {}
 
   void RunUntilIdle() { task_runner_->RunUntilIdle(); }
diff --git a/content/browser/indexed_db/indexed_db_backing_store.cc b/content/browser/indexed_db/indexed_db_backing_store.cc
index 01d3c9a..376b1dd5 100644
--- a/content/browser/indexed_db/indexed_db_backing_store.cc
+++ b/content/browser/indexed_db/indexed_db_backing_store.cc
@@ -865,7 +865,7 @@
   data_loss_info->status = blink::kWebIDBDataLossNone;
   *status = Status::OK();
 
-  std::unique_ptr<LevelDBComparator> comparator(base::MakeUnique<Comparator>());
+  std::unique_ptr<LevelDBComparator> comparator(std::make_unique<Comparator>());
 
   if (!base::IsStringASCII(path_base.AsUTF8Unsafe())) {
     HistogramOpenStatus(
@@ -1021,7 +1021,7 @@
     Status* status) {
   IDB_TRACE("IndexedDBBackingStore::OpenInMemory");
 
-  std::unique_ptr<LevelDBComparator> comparator(base::MakeUnique<Comparator>());
+  std::unique_ptr<LevelDBComparator> comparator(std::make_unique<Comparator>());
   std::unique_ptr<LevelDBDatabase> db =
       LevelDBDatabase::OpenInMemory(comparator.get());
   if (!db) {
@@ -1601,7 +1601,7 @@
             task_runner_.get(), file_path, 0,
             storage::FileStreamWriter::CREATE_NEW_FILE));
     std::unique_ptr<FileWriterDelegate> delegate(
-        base::MakeUnique<FileWriterDelegate>(
+        std::make_unique<FileWriterDelegate>(
             std::move(writer), storage::FlushPolicy::FLUSH_ON_COMPLETION));
 
     DCHECK(blob_url.is_valid());
@@ -2177,7 +2177,7 @@
       transaction_(other->transaction_),
       database_id_(other->database_id_),
       cursor_options_(other->cursor_options_),
-      current_key_(base::MakeUnique<IndexedDBKey>(*other->current_key_)) {
+      current_key_(std::make_unique<IndexedDBKey>(*other->current_key_)) {
   if (other->iterator_) {
     iterator_ = transaction_->transaction()->CreateIterator();
 
@@ -2647,7 +2647,7 @@
  private:
   explicit IndexKeyCursorImpl(const IndexKeyCursorImpl* other)
       : IndexedDBBackingStore::Cursor(other),
-        primary_key_(base::MakeUnique<IndexedDBKey>(*other->primary_key_)) {}
+        primary_key_(std::make_unique<IndexedDBKey>(*other->primary_key_)) {}
 
   std::unique_ptr<IndexedDBKey> primary_key_;
 
@@ -2761,7 +2761,7 @@
  private:
   explicit IndexCursorImpl(const IndexCursorImpl* other)
       : IndexedDBBackingStore::Cursor(other),
-        primary_key_(base::MakeUnique<IndexedDBKey>(*other->primary_key_)),
+        primary_key_(std::make_unique<IndexedDBKey>(*other->primary_key_)),
         current_value_(other->current_value_),
         primary_leveldb_key_(other->primary_leveldb_key_) {}
 
@@ -2865,7 +2865,7 @@
     return std::unique_ptr<IndexedDBBackingStore::Cursor>();
   }
   std::unique_ptr<ObjectStoreCursorImpl> cursor(
-      base::MakeUnique<ObjectStoreCursorImpl>(this, transaction, database_id,
+      std::make_unique<ObjectStoreCursorImpl>(this, transaction, database_id,
                                               cursor_options));
   if (!cursor->FirstSeek(s))
     return std::unique_ptr<IndexedDBBackingStore::Cursor>();
@@ -2891,7 +2891,7 @@
     return std::unique_ptr<IndexedDBBackingStore::Cursor>();
   }
   std::unique_ptr<ObjectStoreKeyCursorImpl> cursor(
-      base::MakeUnique<ObjectStoreKeyCursorImpl>(this, transaction, database_id,
+      std::make_unique<ObjectStoreKeyCursorImpl>(this, transaction, database_id,
                                                  cursor_options));
   if (!cursor->FirstSeek(s))
     return std::unique_ptr<IndexedDBBackingStore::Cursor>();
@@ -2916,7 +2916,7 @@
                           index_id, range, direction, &cursor_options, s))
     return std::unique_ptr<IndexedDBBackingStore::Cursor>();
   std::unique_ptr<IndexKeyCursorImpl> cursor(
-      base::MakeUnique<IndexKeyCursorImpl>(this, transaction, database_id,
+      std::make_unique<IndexKeyCursorImpl>(this, transaction, database_id,
                                            cursor_options));
   if (!cursor->FirstSeek(s))
     return std::unique_ptr<IndexedDBBackingStore::Cursor>();
@@ -3349,7 +3349,7 @@
 
   for (const auto& handle : handles_) {
     record->handles_.push_back(
-        base::MakeUnique<storage::BlobDataHandle>(*handle));
+        std::make_unique<storage::BlobDataHandle>(*handle));
   }
   return record;
 }
@@ -3403,7 +3403,7 @@
   BlobChangeRecord* record = nullptr;
   if (it == blob_change_map_.end()) {
     std::unique_ptr<BlobChangeRecord> new_record =
-        base::MakeUnique<BlobChangeRecord>(object_store_data_key,
+        std::make_unique<BlobChangeRecord>(object_store_data_key,
                                            object_store_id);
     record = new_record.get();
     blob_change_map_[object_store_data_key] = std::move(new_record);
diff --git a/content/browser/indexed_db/indexed_db_backing_store_unittest.cc b/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
index 7797964..4cb3d30 100644
--- a/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
@@ -90,7 +90,7 @@
     DCHECK(!path_base.empty());
 
     std::unique_ptr<LevelDBComparator> comparator =
-        base::MakeUnique<Comparator>();
+        std::make_unique<Comparator>();
 
     if (!base::CreateDirectory(path_base)) {
       *status = leveldb::Status::IOError("Unable to create base dir");
@@ -195,7 +195,7 @@
  public:
   explicit TestIDBFactory(IndexedDBContextImpl* idb_context)
       : IndexedDBFactoryImpl(idb_context,
-                             base::MakeUnique<base::DefaultClock>()) {}
+                             std::make_unique<base::DefaultClock>()) {}
 
   scoped_refptr<TestableIndexedDBBackingStore> OpenBackingStoreForTest(
       const Origin& origin,
@@ -510,7 +510,7 @@
           [](IndexedDBBackingStoreTestWithBlobs* test, TestState* state) {
             // Initiate transaction1 - writing blobs.
             state->transaction1 =
-                base::MakeUnique<IndexedDBBackingStore::Transaction>(
+                std::make_unique<IndexedDBBackingStore::Transaction>(
                     test->backing_store());
             state->transaction1->Begin();
             std::vector<std::unique_ptr<storage::BlobDataHandle>> handles;
@@ -561,7 +561,7 @@
 
             // Initiate transaction3, deleting blobs.
             state->transaction3 =
-                base::MakeUnique<IndexedDBBackingStore::Transaction>(
+                std::make_unique<IndexedDBBackingStore::Transaction>(
                     test->backing_store());
             state->transaction3->Begin();
             EXPECT_TRUE(test->backing_store()
@@ -639,7 +639,7 @@
 
               // Initiate transaction1 - write records.
               state->transaction1 =
-                  base::MakeUnique<IndexedDBBackingStore::Transaction>(
+                  std::make_unique<IndexedDBBackingStore::Transaction>(
                       backing_store);
               state->transaction1->Begin();
               std::vector<std::unique_ptr<storage::BlobDataHandle>> handles;
@@ -675,7 +675,7 @@
 
               // Initiate transaction 2 - delete range.
               state->transaction2 =
-                  base::MakeUnique<IndexedDBBackingStore::Transaction>(
+                  std::make_unique<IndexedDBBackingStore::Transaction>(
                       backing_store);
               state->transaction2->Begin();
               IndexedDBValue result_value;
@@ -764,7 +764,7 @@
 
               // Initiate transaction1 - write records.
               state->transaction1 =
-                  base::MakeUnique<IndexedDBBackingStore::Transaction>(
+                  std::make_unique<IndexedDBBackingStore::Transaction>(
                       backing_store);
               state->transaction1->Begin();
 
@@ -800,7 +800,7 @@
 
               // Initiate transaction 2 - delete range.
               state->transaction2 =
-                  base::MakeUnique<IndexedDBBackingStore::Transaction>(
+                  std::make_unique<IndexedDBBackingStore::Transaction>(
                       backing_store);
               state->transaction2->Begin();
               IndexedDBValue result_value;
@@ -849,7 +849,7 @@
           [](IndexedDBBackingStoreTestWithBlobs* test, TestState* state) {
             // Initiate transaction1.
             state->transaction1 =
-                base::MakeUnique<IndexedDBBackingStore::Transaction>(
+                std::make_unique<IndexedDBBackingStore::Transaction>(
                     test->backing_store());
             state->transaction1->Begin();
             std::vector<std::unique_ptr<storage::BlobDataHandle>> handles1;
@@ -878,7 +878,7 @@
 
             // Initiate transaction2.
             state->transaction2 =
-                base::MakeUnique<IndexedDBBackingStore::Transaction>(
+                std::make_unique<IndexedDBBackingStore::Transaction>(
                     test->backing_store());
             state->transaction2->Begin();
             std::vector<std::unique_ptr<storage::BlobDataHandle>> handles2;
@@ -930,7 +930,7 @@
       base::BindOnce(
           [](IndexedDBBackingStoreTestWithBlobs* test, TestState* state) {
             state->transaction1 =
-                base::MakeUnique<IndexedDBBackingStore::Transaction>(
+                std::make_unique<IndexedDBBackingStore::Transaction>(
                     test->backing_store());
             state->transaction1->Begin();
             std::vector<std::unique_ptr<storage::BlobDataHandle>> handles;
@@ -980,7 +980,7 @@
             }
 
             state->transaction3 =
-                base::MakeUnique<IndexedDBBackingStore::Transaction>(
+                std::make_unique<IndexedDBBackingStore::Transaction>(
                     test->backing_store());
             state->transaction3->Begin();
             EXPECT_TRUE(test->backing_store()
diff --git a/content/browser/indexed_db/indexed_db_callbacks.cc b/content/browser/indexed_db/indexed_db_callbacks.cc
index 28ae6d7..44ec9bc 100644
--- a/content/browser/indexed_db/indexed_db_callbacks.cc
+++ b/content/browser/indexed_db/indexed_db_callbacks.cc
@@ -557,7 +557,7 @@
     return;
   }
 
-  auto database = base::MakeUnique<DatabaseImpl>(
+  auto database = std::make_unique<DatabaseImpl>(
       std::move(connection_wrapper.connection), origin_, dispatcher_host_.get(),
       idb_runner_);
 
@@ -581,7 +581,7 @@
   }
   ::indexed_db::mojom::DatabaseAssociatedPtrInfo ptr_info;
   if (connection_wrapper.connection) {
-    auto database = base::MakeUnique<DatabaseImpl>(
+    auto database = std::make_unique<DatabaseImpl>(
         std::move(connection_wrapper.connection), origin_,
         dispatcher_host_.get(), idb_runner_);
 
@@ -605,7 +605,7 @@
     OnConnectionError();
     return;
   }
-  auto cursor_impl = base::MakeUnique<CursorImpl>(
+  auto cursor_impl = std::make_unique<CursorImpl>(
       std::move(cursor.cursor), origin_, dispatcher_host_.get(), idb_runner_);
 
   if (value && !CreateAllBlobs(blob_info, &value->blob_or_file_info))
diff --git a/content/browser/indexed_db/indexed_db_cleanup_on_io_error_unittest.cc b/content/browser/indexed_db/indexed_db_cleanup_on_io_error_unittest.cc
index 318420b..74a0ab52 100644
--- a/content/browser/indexed_db/indexed_db_cleanup_on_io_error_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_cleanup_on_io_error_unittest.cc
@@ -47,7 +47,7 @@
   static std::unique_ptr<LevelDBDatabase> Open(
       const base::FilePath& file_name,
       const LevelDBComparator* /*comparator*/) {
-    return base::MakeUnique<BustedLevelDBDatabase>();
+    return std::make_unique<BustedLevelDBDatabase>();
   }
   leveldb::Status Get(const base::StringPiece& key,
                       std::string* value,
diff --git a/content/browser/indexed_db/indexed_db_context_impl.cc b/content/browser/indexed_db/indexed_db_context_impl.cc
index f58d58c0..5fc5aee 100644
--- a/content/browser/indexed_db/indexed_db_context_impl.cc
+++ b/content/browser/indexed_db/indexed_db_context_impl.cc
@@ -131,7 +131,7 @@
     // detect when dbs are newly created.
     GetOriginSet();
     factory_ =
-        new IndexedDBFactoryImpl(this, base::MakeUnique<base::DefaultClock>());
+        new IndexedDBFactoryImpl(this, std::make_unique<base::DefaultClock>());
   }
   return factory_.get();
 }
@@ -171,16 +171,16 @@
 
   std::sort(origins.begin(), origins.end(), HostNameComparator);
 
-  std::unique_ptr<base::ListValue> list(base::MakeUnique<base::ListValue>());
+  std::unique_ptr<base::ListValue> list(std::make_unique<base::ListValue>());
   for (const auto& origin : origins) {
     std::unique_ptr<base::DictionaryValue> info(
-        base::MakeUnique<base::DictionaryValue>());
+        std::make_unique<base::DictionaryValue>());
     info->SetString("url", origin.Serialize());
     info->SetString("size", ui::FormatBytes(GetOriginDiskUsage(origin)));
     info->SetDouble("last_modified", GetOriginLastModified(origin).ToJsTime());
     if (!is_incognito()) {
       std::unique_ptr<base::ListValue> paths(
-          base::MakeUnique<base::ListValue>());
+          std::make_unique<base::ListValue>());
       for (const base::FilePath& path : GetStoragePaths(origin))
         paths->AppendString(path.value());
       info->Set("paths", std::move(paths));
@@ -197,14 +197,14 @@
           range = factory_->GetOpenDatabasesForOrigin(origin);
       // TODO(jsbell): Sort by name?
       std::unique_ptr<base::ListValue> database_list(
-          base::MakeUnique<base::ListValue>());
+          std::make_unique<base::ListValue>());
 
       for (IndexedDBFactory::OriginDBMapIterator it = range.first;
            it != range.second;
            ++it) {
         const IndexedDBDatabase* db = it->second;
         std::unique_ptr<base::DictionaryValue> db_info(
-            base::MakeUnique<base::DictionaryValue>());
+            std::make_unique<base::DictionaryValue>());
 
         db_info->SetString("name", db->name());
         db_info->SetDouble("connection_count", db->ConnectionCount());
@@ -212,12 +212,12 @@
         db_info->SetDouble("pending_open_delete", db->PendingOpenDeleteCount());
 
         std::unique_ptr<base::ListValue> transaction_list(
-            base::MakeUnique<base::ListValue>());
+            std::make_unique<base::ListValue>());
         std::vector<const IndexedDBTransaction*> transactions =
             db->transaction_coordinator().GetTransactions();
         for (const auto* transaction : transactions) {
           std::unique_ptr<base::DictionaryValue> transaction_info(
-              base::MakeUnique<base::DictionaryValue>());
+              std::make_unique<base::DictionaryValue>());
 
           const char* const kModes[] =
               { "readonly", "readwrite", "versionchange" };
@@ -257,7 +257,7 @@
               "tasks_completed", transaction->diagnostics().tasks_completed);
 
           std::unique_ptr<base::ListValue> scope(
-              base::MakeUnique<base::ListValue>());
+              std::make_unique<base::ListValue>());
           for (const auto& id : transaction->scope()) {
             const auto& it = db->metadata().object_stores.find(id);
             if (it != db->metadata().object_stores.end())
@@ -593,7 +593,7 @@
     std::vector<Origin> origins;
     GetAllOriginsAndPaths(data_path_, &origins, NULL);
     origin_set_ =
-        base::MakeUnique<std::set<Origin>>(origins.begin(), origins.end());
+        std::make_unique<std::set<Origin>>(origins.begin(), origins.end());
   }
   return origin_set_.get();
 }
diff --git a/content/browser/indexed_db/indexed_db_database.cc b/content/browser/indexed_db/indexed_db_database.cc
index 62e01ca6..5fb1aa9c 100644
--- a/content/browser/indexed_db/indexed_db_database.cc
+++ b/content/browser/indexed_db/indexed_db_database.cc
@@ -480,7 +480,7 @@
     scoped_refptr<IndexedDBDatabaseCallbacks> database_callbacks,
     int child_process_id) {
   std::unique_ptr<IndexedDBConnection> connection(
-      base::MakeUnique<IndexedDBConnection>(child_process_id, this,
+      std::make_unique<IndexedDBConnection>(child_process_id, this,
                                             database_callbacks));
   connections_.insert(connection.get());
   backing_store_->GrantChildProcessPermissions(child_process_id);
@@ -1187,12 +1187,12 @@
       &current_number);
   if (!s.ok()) {
     LOG(ERROR) << "Failed to GetKeyGeneratorCurrentNumber";
-    return base::MakeUnique<IndexedDBKey>();
+    return std::make_unique<IndexedDBKey>();
   }
   if (current_number < 0 || current_number > max_generator_value)
-    return base::MakeUnique<IndexedDBKey>();
+    return std::make_unique<IndexedDBKey>();
 
-  return base::MakeUnique<IndexedDBKey>(current_number, kWebIDBKeyTypeNumber);
+  return std::make_unique<IndexedDBKey>(current_number, kWebIDBKeyTypeNumber);
 }
 
 // Called at the end of a "put" operation. The key is a number that was either
@@ -1248,7 +1248,7 @@
   DCHECK(key);
   DCHECK(value);
   std::unique_ptr<PutOperationParams> params(
-      base::MakeUnique<PutOperationParams>());
+      std::make_unique<PutOperationParams>());
   params->object_store_id = object_store_id;
   params->value.swap(*value);
   params->handles.swap(*handles);
@@ -1492,7 +1492,7 @@
     return;
 
   std::unique_ptr<OpenCursorOperationParams> params(
-      base::MakeUnique<OpenCursorOperationParams>());
+      std::make_unique<OpenCursorOperationParams>());
   params->object_store_id = object_store_id;
   params->index_id = index_id;
   params->key_range = std::move(key_range);
@@ -1573,7 +1573,7 @@
     return s;
   }
 
-  std::unique_ptr<IndexedDBCursor> cursor = base::MakeUnique<IndexedDBCursor>(
+  std::unique_ptr<IndexedDBCursor> cursor = std::make_unique<IndexedDBCursor>(
       std::move(backing_store_cursor), params->cursor_type, params->task_type,
       transaction);
   IndexedDBCursor* cursor_ptr = cursor.get();
@@ -1841,13 +1841,13 @@
 
 void IndexedDBDatabase::OpenConnection(
     std::unique_ptr<IndexedDBPendingConnection> connection) {
-  AppendRequest(base::MakeUnique<OpenRequest>(this, std::move(connection)));
+  AppendRequest(std::make_unique<OpenRequest>(this, std::move(connection)));
 }
 
 void IndexedDBDatabase::DeleteDatabase(
     scoped_refptr<IndexedDBCallbacks> callbacks,
     bool force_close) {
-  AppendRequest(base::MakeUnique<DeleteRequest>(this, callbacks));
+  AppendRequest(std::make_unique<DeleteRequest>(this, callbacks));
   // Close the connections only after the request is queued to make sure
   // the store is still open.
   if (force_close)
diff --git a/content/browser/indexed_db/indexed_db_database_unittest.cc b/content/browser/indexed_db/indexed_db_database_unittest.cc
index 6e878a4..4c6d68fe 100644
--- a/content/browser/indexed_db/indexed_db_database_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_database_unittest.cc
@@ -46,7 +46,7 @@
     backing_store_ = new IndexedDBFakeBackingStore();
     factory_ = new MockIndexedDBFactory();
     std::unique_ptr<FakeIndexedDBMetadataCoding> metadata_coding =
-        base::MakeUnique<FakeIndexedDBMetadataCoding>();
+        std::make_unique<FakeIndexedDBMetadataCoding>();
     metadata_coding_ = metadata_coding.get();
     EXPECT_TRUE(backing_store_->HasOneRef());
     leveldb::Status s;
@@ -80,7 +80,7 @@
       new MockIndexedDBDatabaseCallbacks());
   const int64_t transaction_id1 = 1;
   std::unique_ptr<IndexedDBPendingConnection> connection1(
-      base::MakeUnique<IndexedDBPendingConnection>(
+      std::make_unique<IndexedDBPendingConnection>(
           request1, callbacks1, kFakeChildProcessId, transaction_id1,
           IndexedDBDatabaseMetadata::DEFAULT_VERSION));
   db_->OpenConnection(std::move(connection1));
@@ -92,7 +92,7 @@
       new MockIndexedDBDatabaseCallbacks());
   const int64_t transaction_id2 = 2;
   std::unique_ptr<IndexedDBPendingConnection> connection2(
-      base::MakeUnique<IndexedDBPendingConnection>(
+      std::make_unique<IndexedDBPendingConnection>(
           request2, callbacks2, kFakeChildProcessId, transaction_id2,
           IndexedDBDatabaseMetadata::DEFAULT_VERSION));
   db_->OpenConnection(std::move(connection2));
@@ -119,7 +119,7 @@
   scoped_refptr<MockIndexedDBCallbacks> request(new MockIndexedDBCallbacks());
   const int64_t upgrade_transaction_id = 3;
   std::unique_ptr<IndexedDBPendingConnection> connection(
-      base::MakeUnique<IndexedDBPendingConnection>(
+      std::make_unique<IndexedDBPendingConnection>(
           request, callbacks, kFakeChildProcessId, upgrade_transaction_id,
           IndexedDBDatabaseMetadata::DEFAULT_VERSION));
   db_->OpenConnection(std::move(connection));
@@ -170,7 +170,7 @@
       new MockIndexedDBDatabaseCallbacks());
   const int64_t transaction_id1 = 1;
   std::unique_ptr<IndexedDBPendingConnection> connection(
-      base::MakeUnique<IndexedDBPendingConnection>(
+      std::make_unique<IndexedDBPendingConnection>(
           request1, callbacks1, kFakeChildProcessId, transaction_id1,
           IndexedDBDatabaseMetadata::DEFAULT_VERSION));
   db_->OpenConnection(std::move(connection));
@@ -214,7 +214,7 @@
       new MockIndexedDBDatabaseCallbacks());
   const int64_t transaction_id1 = 1;
   std::unique_ptr<IndexedDBPendingConnection> connection1(
-      base::MakeUnique<IndexedDBPendingConnection>(
+      std::make_unique<IndexedDBPendingConnection>(
           request1, callbacks1, kFakeChildProcessId, transaction_id1,
           kDatabaseVersion));
   db_->OpenConnection(std::move(connection1));
@@ -230,7 +230,7 @@
       new MockIndexedDBDatabaseCallbacks());
   const int64_t transaction_id2 = 2;
   std::unique_ptr<IndexedDBPendingConnection> connection2(
-      base::MakeUnique<IndexedDBPendingConnection>(
+      std::make_unique<IndexedDBPendingConnection>(
           request2, callbacks2, kFakeChildProcessId, transaction_id2,
           kDatabaseVersion));
   db_->OpenConnection(std::move(connection2));
@@ -246,7 +246,7 @@
       new MockIndexedDBDatabaseCallbacks());
   const int64_t transaction_id3 = 3;
   std::unique_ptr<IndexedDBPendingConnection> connection3(
-      base::MakeUnique<IndexedDBPendingConnection>(
+      std::make_unique<IndexedDBPendingConnection>(
           request3, callbacks3, kFakeChildProcessId, transaction_id3,
           kDatabaseVersion));
   db_->OpenConnection(std::move(connection3));
@@ -280,7 +280,7 @@
       new MockIndexedDBDatabaseCallbacks());
   const int64_t transaction_id1 = 1;
   std::unique_ptr<IndexedDBPendingConnection> connection(
-      base::MakeUnique<IndexedDBPendingConnection>(
+      std::make_unique<IndexedDBPendingConnection>(
           request1, callbacks1, kFakeChildProcessId, transaction_id1,
           IndexedDBDatabaseMetadata::DEFAULT_VERSION));
   db_->OpenConnection(std::move(connection));
@@ -315,7 +315,7 @@
   void SetUp() override {
     backing_store_ = new IndexedDBFakeBackingStore();
     std::unique_ptr<FakeIndexedDBMetadataCoding> metadata_coding =
-        base::MakeUnique<FakeIndexedDBMetadataCoding>();
+        std::make_unique<FakeIndexedDBMetadataCoding>();
     metadata_coding_ = metadata_coding.get();
     leveldb::Status s;
     std::tie(db_, s) = IndexedDBDatabase::Create(
@@ -327,13 +327,13 @@
     callbacks_ = new MockIndexedDBDatabaseCallbacks();
     const int64_t transaction_id = 1;
     std::unique_ptr<IndexedDBPendingConnection> connection(
-        base::MakeUnique<IndexedDBPendingConnection>(
+        std::make_unique<IndexedDBPendingConnection>(
             request_, callbacks_, kFakeChildProcessId, transaction_id,
             IndexedDBDatabaseMetadata::DEFAULT_VERSION));
     db_->OpenConnection(std::move(connection));
     EXPECT_EQ(IndexedDBDatabaseMetadata::NO_VERSION, db_->metadata().version);
 
-    connection_ = base::MakeUnique<IndexedDBConnection>(kFakeChildProcessId,
+    connection_ = std::make_unique<IndexedDBConnection>(kFakeChildProcessId,
                                                         db_, callbacks_);
     transaction_ = connection_->CreateTransaction(
         transaction_id, std::set<int64_t>() /*scope*/,
@@ -453,7 +453,7 @@
   // Put is asynchronous
   IndexedDBValue value("value1", std::vector<IndexedDBBlobInfo>());
   std::vector<std::unique_ptr<storage::BlobDataHandle>> handles;
-  std::unique_ptr<IndexedDBKey> key(base::MakeUnique<IndexedDBKey>("key"));
+  std::unique_ptr<IndexedDBKey> key(std::make_unique<IndexedDBKey>("key"));
   std::vector<IndexedDBIndexKeys> index_keys;
   scoped_refptr<MockIndexedDBCallbacks> request(
       new MockIndexedDBCallbacks(false));
diff --git a/content/browser/indexed_db/indexed_db_dispatcher_host.cc b/content/browser/indexed_db/indexed_db_dispatcher_host.cc
index 4e5299f6..7dc346e 100644
--- a/content/browser/indexed_db/indexed_db_dispatcher_host.cc
+++ b/content/browser/indexed_db/indexed_db_dispatcher_host.cc
@@ -359,7 +359,7 @@
   // created) if this origin is already over quota.
   callbacks->SetConnectionOpenStartTime(begin_time);
   std::unique_ptr<IndexedDBPendingConnection> connection =
-      base::MakeUnique<IndexedDBPendingConnection>(
+      std::make_unique<IndexedDBPendingConnection>(
           callbacks, database_callbacks, ipc_process_id_, transaction_id,
           version);
   DCHECK(request_context_getter_);
diff --git a/content/browser/indexed_db/indexed_db_dispatcher_host_unittest.cc b/content/browser/indexed_db/indexed_db_dispatcher_host_unittest.cc
index d37bbaf..e6d3710 100644
--- a/content/browser/indexed_db/indexed_db_dispatcher_host_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_dispatcher_host_unittest.cc
@@ -403,7 +403,7 @@
     base::Closure quit_closure = base::BarrierClosure(3, loop.QuitClosure());
 
     auto put_callbacks =
-        base::MakeUnique<StrictMock<MockMojoIndexedDBCallbacks>>();
+        std::make_unique<StrictMock<MockMojoIndexedDBCallbacks>>();
 
     EXPECT_CALL(*put_callbacks,
                 Error(blink::kWebIDBDatabaseExceptionUnknownError, _))
@@ -1043,7 +1043,7 @@
     base::Closure quit_closure = base::BarrierClosure(3, loop.QuitClosure());
 
     auto put_callbacks =
-        base::MakeUnique<StrictMock<MockMojoIndexedDBCallbacks>>();
+        std::make_unique<StrictMock<MockMojoIndexedDBCallbacks>>();
 
     EXPECT_CALL(*put_callbacks, SuccessKey(_))
         .Times(1)
@@ -1109,7 +1109,7 @@
     base::Closure quit_closure = base::BarrierClosure(3, loop.QuitClosure());
 
     auto clear_callbacks =
-        base::MakeUnique<StrictMock<MockMojoIndexedDBCallbacks>>();
+        std::make_unique<StrictMock<MockMojoIndexedDBCallbacks>>();
 
     EXPECT_CALL(*clear_callbacks, Success())
         .Times(1)
diff --git a/content/browser/indexed_db/indexed_db_factory_impl.cc b/content/browser/indexed_db/indexed_db_factory_impl.cc
index 44371dd..317912a3 100644
--- a/content/browser/indexed_db/indexed_db_factory_impl.cc
+++ b/content/browser/indexed_db/indexed_db_factory_impl.cc
@@ -214,16 +214,16 @@
   IndexedDBTombstoneSweeper::Mode mode =
       tombstone_stats_enabled ? IndexedDBTombstoneSweeper::Mode::STATISTICS
                               : IndexedDBTombstoneSweeper::Mode::DELETION;
-  tasks.push_back(base::MakeUnique<IndexedDBTombstoneSweeper>(
+  tasks.push_back(std::make_unique<IndexedDBTombstoneSweeper>(
       mode, kTombstoneSweeperRoundIterations, kTombstoneSweeperMaxIterations,
       store->db()->db()));
   // TODO(dmurph): Add compaction task that compacts all indexes if we have
   // more than X deletions.
 
-  store->SetPreCloseTaskList(base::MakeUnique<IndexedDBPreCloseTaskQueue>(
+  store->SetPreCloseTaskList(std::make_unique<IndexedDBPreCloseTaskQueue>(
       std::move(tasks), maybe_close_backing_store_runner.Release(),
       base::TimeDelta::FromSeconds(kPreCloseTasksMaxRunPeriodSeconds),
-      base::MakeUnique<base::OneShotTimer>()));
+      std::make_unique<base::OneShotTimer>()));
   store->StartPreCloseTasks();
 }
 
@@ -442,7 +442,7 @@
   scoped_refptr<IndexedDBDatabase> database;
   std::tie(database, s) = IndexedDBDatabase::Create(
       name, backing_store.get(), this,
-      base::MakeUnique<IndexedDBMetadataCoding>(), unique_identifier);
+      std::make_unique<IndexedDBMetadataCoding>(), unique_identifier);
   if (!database.get()) {
     IndexedDBDatabaseError error(
         blink::kWebIDBDatabaseExceptionUnknownError,
@@ -667,7 +667,7 @@
 
     std::tie(database, s) = IndexedDBDatabase::Create(
         name, backing_store.get(), this,
-        base::MakeUnique<IndexedDBMetadataCoding>(), unique_identifier);
+        std::make_unique<IndexedDBMetadataCoding>(), unique_identifier);
     if (!database.get()) {
       DLOG(ERROR) << "Unable to create the database";
       IndexedDBDatabaseError error(blink::kWebIDBDatabaseExceptionUnknownError,
diff --git a/content/browser/indexed_db/indexed_db_factory_unittest.cc b/content/browser/indexed_db/indexed_db_factory_unittest.cc
index 9ec8ac4..1fab978 100644
--- a/content/browser/indexed_db/indexed_db_factory_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_factory_unittest.cc
@@ -43,7 +43,7 @@
 class MockIDBFactory : public IndexedDBFactoryImpl {
  public:
   explicit MockIDBFactory(IndexedDBContextImpl* context)
-      : MockIDBFactory(context, base::MakeUnique<base::DefaultClock>()) {}
+      : MockIDBFactory(context, std::make_unique<base::DefaultClock>()) {}
   MockIDBFactory(IndexedDBContextImpl* context,
                  std::unique_ptr<base::Clock> clock)
       : IndexedDBFactoryImpl(context, std::move(clock)) {}
@@ -411,7 +411,7 @@
 class DiskFullFactory : public IndexedDBFactoryImpl {
  public:
   explicit DiskFullFactory(IndexedDBContextImpl* context)
-      : IndexedDBFactoryImpl(context, base::MakeUnique<base::DefaultClock>()) {}
+      : IndexedDBFactoryImpl(context, std::make_unique<base::DefaultClock>()) {}
 
  private:
   ~DiskFullFactory() override {}
@@ -470,7 +470,7 @@
                 base::MakeRefCounted<DiskFullFactory>(context);
             const base::string16 name(ASCIIToUTF16("name"));
             std::unique_ptr<IndexedDBPendingConnection> connection(
-                base::MakeUnique<IndexedDBPendingConnection>(
+                std::make_unique<IndexedDBPendingConnection>(
                     callbacks, dummy_database_callbacks,
                     0 /* child_process_id */, 2 /* transaction_id */,
                     1 /* version */));
@@ -498,7 +498,7 @@
             const Origin origin = Origin::Create(GURL("http://localhost:81"));
             const int64_t transaction_id = 1;
             std::unique_ptr<IndexedDBPendingConnection> connection(
-                base::MakeUnique<IndexedDBPendingConnection>(
+                std::make_unique<IndexedDBPendingConnection>(
                     callbacks, db_callbacks, 0 /* child_process_id */,
                     transaction_id,
                     IndexedDBDatabaseMetadata::DEFAULT_VERSION));
@@ -536,7 +536,7 @@
             const Origin origin = Origin::Create(GURL("http://localhost:81"));
             const int64_t transaction_id = 1;
             std::unique_ptr<IndexedDBPendingConnection> connection(
-                base::MakeUnique<IndexedDBPendingConnection>(
+                std::make_unique<IndexedDBPendingConnection>(
                     callbacks, db_callbacks, 0 /* child_process_id */,
                     transaction_id,
                     IndexedDBDatabaseMetadata::DEFAULT_VERSION));
@@ -648,7 +648,7 @@
             const Origin origin = Origin::Create(GURL("http://localhost:81"));
             const int64_t transaction_id = 1;
             std::unique_ptr<IndexedDBPendingConnection> connection(
-                base::MakeUnique<IndexedDBPendingConnection>(
+                std::make_unique<IndexedDBPendingConnection>(
                     callbacks, db_callbacks, 0 /* child_process_id */,
                     transaction_id,
                     IndexedDBDatabaseMetadata::DEFAULT_VERSION));
@@ -750,7 +750,7 @@
             const int64_t db_version = 2;
             (*factory)->Open(
                 db_name,
-                base::MakeUnique<IndexedDBPendingConnection>(
+                std::make_unique<IndexedDBPendingConnection>(
                     *upgrade_callbacks, db_callbacks, 0 /* child_process_id */,
                     transaction_id, db_version),
                 nullptr /* request_context */, origin, context->data_path());
@@ -790,7 +790,7 @@
             {
               const int64_t db_version = 1;
               std::unique_ptr<IndexedDBPendingConnection> connection(
-                  base::MakeUnique<IndexedDBPendingConnection>(
+                  std::make_unique<IndexedDBPendingConnection>(
                       failed_open_callbacks, db_callbacks,
                       0 /* child_process_id */, transaction_id, db_version));
               factory->Open(db_name, std::move(connection),
@@ -866,7 +866,7 @@
               *factory = base::MakeRefCounted<MockIDBFactory>(context);
               (*factory)->Open(
                   ASCIIToUTF16("test_db"),
-                  base::MakeUnique<IndexedDBPendingConnection>(
+                  std::make_unique<IndexedDBPendingConnection>(
                       *callbacks, db_callbacks, 0 /* child_process_id */,
                       transaction_id, 1 /* version */),
                   nullptr /* request_context */, origin, context->data_path());
diff --git a/content/browser/indexed_db/indexed_db_index_writer.cc b/content/browser/indexed_db/indexed_db_index_writer.cc
index 2059dfe..6493041 100644
--- a/content/browser/indexed_db/indexed_db_index_writer.cc
+++ b/content/browser/indexed_db/indexed_db_index_writer.cc
@@ -137,7 +137,7 @@
       keys.second.push_back(primary_key);
 
     std::unique_ptr<IndexWriter> index_writer(
-        base::MakeUnique<IndexWriter>(index, keys));
+        std::make_unique<IndexWriter>(index, keys));
     bool can_add_keys = false;
     bool backing_store_success =
         index_writer->VerifyIndexKeys(backing_store,
diff --git a/content/browser/indexed_db/indexed_db_leveldb_coding.cc b/content/browser/indexed_db/indexed_db_leveldb_coding.cc
index b19af8f..ca991f9 100644
--- a/content/browser/indexed_db/indexed_db_leveldb_coding.cc
+++ b/content/browser/indexed_db/indexed_db_leveldb_coding.cc
@@ -377,7 +377,7 @@
 
   switch (type) {
     case kIndexedDBKeyNullTypeByte:
-      *value = base::MakeUnique<IndexedDBKey>();
+      *value = std::make_unique<IndexedDBKey>();
       return true;
 
     case kIndexedDBKeyArrayTypeByte: {
@@ -391,35 +391,35 @@
           return false;
         array.push_back(*key);
       }
-      *value = base::MakeUnique<IndexedDBKey>(array);
+      *value = std::make_unique<IndexedDBKey>(array);
       return true;
     }
     case kIndexedDBKeyBinaryTypeByte: {
       std::string binary;
       if (!DecodeBinary(slice, &binary))
         return false;
-      *value = base::MakeUnique<IndexedDBKey>(binary);
+      *value = std::make_unique<IndexedDBKey>(binary);
       return true;
     }
     case kIndexedDBKeyStringTypeByte: {
       base::string16 s;
       if (!DecodeStringWithLength(slice, &s))
         return false;
-      *value = base::MakeUnique<IndexedDBKey>(s);
+      *value = std::make_unique<IndexedDBKey>(s);
       return true;
     }
     case kIndexedDBKeyDateTypeByte: {
       double d;
       if (!DecodeDouble(slice, &d))
         return false;
-      *value = base::MakeUnique<IndexedDBKey>(d, kWebIDBKeyTypeDate);
+      *value = std::make_unique<IndexedDBKey>(d, kWebIDBKeyTypeDate);
       return true;
     }
     case kIndexedDBKeyNumberTypeByte: {
       double d;
       if (!DecodeDouble(slice, &d))
         return false;
-      *value = base::MakeUnique<IndexedDBKey>(d, kWebIDBKeyTypeNumber);
+      *value = std::make_unique<IndexedDBKey>(d, kWebIDBKeyTypeNumber);
       return true;
     }
   }
diff --git a/content/browser/indexed_db/indexed_db_tombstone_sweeper_unittest.cc b/content/browser/indexed_db/indexed_db_tombstone_sweeper_unittest.cc
index 3e648fc9..820cec2 100644
--- a/content/browser/indexed_db/indexed_db_tombstone_sweeper_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_tombstone_sweeper_unittest.cc
@@ -131,7 +131,7 @@
   }
 
   void SetupMockDB() {
-    sweeper_ = base::MakeUnique<IndexedDBTombstoneSweeper>(
+    sweeper_ = std::make_unique<IndexedDBTombstoneSweeper>(
         GetParam(), kRoundIterations, kMaxIterations, &mock_db_);
     sweeper_->SetStartSeedsForTesting(0, 0, 0);
   }
@@ -139,7 +139,7 @@
   void SetupRealDB() {
     comparator_.reset(new Comparator());
     in_memory_db_ = LevelDBDatabase::OpenInMemory(comparator_.get());
-    sweeper_ = base::MakeUnique<IndexedDBTombstoneSweeper>(
+    sweeper_ = std::make_unique<IndexedDBTombstoneSweeper>(
         GetParam(), kRoundIterations, kMaxIterations, in_memory_db_->db());
     sweeper_->SetStartSeedsForTesting(0, 0, 0);
   }
diff --git a/content/browser/indexed_db/indexed_db_transaction.cc b/content/browser/indexed_db/indexed_db_transaction.cc
index 1f0fce7..5288b18 100644
--- a/content/browser/indexed_db/indexed_db_transaction.cc
+++ b/content/browser/indexed_db/indexed_db_transaction.cc
@@ -552,7 +552,7 @@
     int32_t observer_id,
     const IndexedDBObserver::Options& options) {
   DCHECK_NE(mode(), blink::kWebIDBTransactionModeVersionChange);
-  pending_observers_.push_back(base::MakeUnique<IndexedDBObserver>(
+  pending_observers_.push_back(std::make_unique<IndexedDBObserver>(
       observer_id, object_store_ids_, options));
 }
 
diff --git a/content/browser/indexed_db/indexed_db_transaction_unittest.cc b/content/browser/indexed_db/indexed_db_transaction_unittest.cc
index c246ba4..b5ba5ab1 100644
--- a/content/browser/indexed_db/indexed_db_transaction_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_transaction_unittest.cc
@@ -55,7 +55,7 @@
     leveldb::Status s;
     std::tie(db_, s) = IndexedDBDatabase::Create(
         base::ASCIIToUTF16("db"), backing_store_.get(), factory_.get(),
-        base::MakeUnique<FakeIndexedDBMetadataCoding>(),
+        std::make_unique<FakeIndexedDBMetadataCoding>(),
         IndexedDBDatabase::Identifier());
     ASSERT_TRUE(s.ok());
   }
@@ -97,7 +97,7 @@
   const std::set<int64_t> scope;
   const leveldb::Status commit_success = leveldb::Status::OK();
   std::unique_ptr<IndexedDBConnection> connection(
-      base::MakeUnique<IndexedDBConnection>(
+      std::make_unique<IndexedDBConnection>(
           kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks()));
   std::unique_ptr<IndexedDBTransaction> transaction =
       std::unique_ptr<IndexedDBTransaction>(new IndexedDBTransaction(
@@ -143,7 +143,7 @@
   const std::set<int64_t> scope;
   const leveldb::Status commit_success = leveldb::Status::OK();
   std::unique_ptr<IndexedDBConnection> connection(
-      base::MakeUnique<IndexedDBConnection>(
+      std::make_unique<IndexedDBConnection>(
           kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks()));
   std::unique_ptr<IndexedDBTransaction> transaction =
       std::unique_ptr<IndexedDBTransaction>(new IndexedDBTransaction(
@@ -178,7 +178,7 @@
   const std::set<int64_t> scope;
   const leveldb::Status commit_success = leveldb::Status::OK();
   std::unique_ptr<IndexedDBConnection> connection(
-      base::MakeUnique<IndexedDBConnection>(
+      std::make_unique<IndexedDBConnection>(
           kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks()));
   std::unique_ptr<IndexedDBTransaction> transaction =
       std::unique_ptr<IndexedDBTransaction>(new IndexedDBTransaction(
@@ -240,7 +240,7 @@
   const std::set<int64_t> scope;
   const leveldb::Status commit_success = leveldb::Status::OK();
   std::unique_ptr<IndexedDBConnection> connection(
-      base::MakeUnique<IndexedDBConnection>(
+      std::make_unique<IndexedDBConnection>(
           kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks()));
   std::unique_ptr<IndexedDBTransaction> transaction =
       std::unique_ptr<IndexedDBTransaction>(new IndexedDBTransaction(
@@ -305,7 +305,7 @@
   const std::set<int64_t> scope;
   const leveldb::Status commit_failure = leveldb::Status::Corruption("Ouch.");
   std::unique_ptr<IndexedDBConnection> connection(
-      base::MakeUnique<IndexedDBConnection>(
+      std::make_unique<IndexedDBConnection>(
           kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks()));
   std::unique_ptr<IndexedDBTransaction> transaction =
       std::unique_ptr<IndexedDBTransaction>(new IndexedDBTransaction(
@@ -367,7 +367,7 @@
   const std::set<int64_t> scope;
   const leveldb::Status commit_failure = leveldb::Status::Corruption("Ouch.");
   std::unique_ptr<IndexedDBConnection> connection(
-      base::MakeUnique<IndexedDBConnection>(
+      std::make_unique<IndexedDBConnection>(
           kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks()));
   std::unique_ptr<IndexedDBTransaction> transaction =
       std::unique_ptr<IndexedDBTransaction>(new IndexedDBTransaction(
@@ -396,7 +396,7 @@
   const std::set<int64_t> scope;
   const leveldb::Status commit_success = leveldb::Status::OK();
   std::unique_ptr<IndexedDBConnection> connection(
-      base::MakeUnique<IndexedDBConnection>(
+      std::make_unique<IndexedDBConnection>(
           kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks()));
   std::unique_ptr<IndexedDBTransaction> transaction =
       std::unique_ptr<IndexedDBTransaction>(new IndexedDBTransaction(
@@ -450,7 +450,7 @@
   const std::set<int64_t> scope;
   const leveldb::Status commit_success = leveldb::Status::OK();
   std::unique_ptr<IndexedDBConnection> connection(
-      base::MakeUnique<IndexedDBConnection>(
+      std::make_unique<IndexedDBConnection>(
           kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks()));
 
   base::WeakPtr<IndexedDBTransaction> transaction =
diff --git a/content/browser/indexed_db/indexed_db_unittest.cc b/content/browser/indexed_db/indexed_db_unittest.cc
index 234a55a..80c9b85 100644
--- a/content/browser/indexed_db/indexed_db_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_unittest.cc
@@ -181,14 +181,14 @@
                 idb_context->GetFilePathForTesting(origin);
 
             factory->Open(base::ASCIIToUTF16("opendb"),
-                          base::MakeUnique<IndexedDBPendingConnection>(
+                          std::make_unique<IndexedDBPendingConnection>(
                               open_callbacks, open_db_callbacks,
                               child_process_id, host_transaction_id, version),
                           request_context, origin, idb_context->data_path());
             EXPECT_TRUE(base::DirectoryExists(test_path));
 
             factory->Open(base::ASCIIToUTF16("closeddb"),
-                          base::MakeUnique<IndexedDBPendingConnection>(
+                          std::make_unique<IndexedDBPendingConnection>(
                               closed_callbacks, closed_db_callbacks,
                               child_process_id, host_transaction_id, version),
                           request_context, origin, idb_context->data_path());
@@ -263,7 +263,7 @@
             const scoped_refptr<net::URLRequestContextGetter> request_context;
 
             std::unique_ptr<IndexedDBPendingConnection> connection(
-                base::MakeUnique<IndexedDBPendingConnection>(
+                std::make_unique<IndexedDBPendingConnection>(
                     callbacks, db_callbacks, child_process_id, transaction_id,
                     IndexedDBDatabaseMetadata::DEFAULT_VERSION));
             factory->Open(base::ASCIIToUTF16("db"), std::move(connection),
diff --git a/content/browser/indexed_db/leveldb/leveldb_database.cc b/content/browser/indexed_db/leveldb/leveldb_database.cc
index 736bc1d..bf01b07 100644
--- a/content/browser/indexed_db/leveldb/leveldb_database.cc
+++ b/content/browser/indexed_db/leveldb/leveldb_database.cc
@@ -280,7 +280,7 @@
   if (!status.ok())
     return std::unique_ptr<LevelDBLock>();
   DCHECK(lock);
-  return base::MakeUnique<LockImpl>(env, lock);
+  return std::make_unique<LockImpl>(env, lock);
 }
 
 // static
@@ -293,7 +293,7 @@
   base::TimeTicks begin_time = base::TimeTicks::Now();
 
   std::unique_ptr<ComparatorAdapter> comparator_adapter(
-      base::MakeUnique<ComparatorAdapter>(comparator));
+      std::make_unique<ComparatorAdapter>(comparator));
 
   std::unique_ptr<leveldb::DB> db;
   std::unique_ptr<const leveldb::FilterPolicy> filter_policy;
@@ -332,7 +332,7 @@
 std::unique_ptr<LevelDBDatabase> LevelDBDatabase::OpenInMemory(
     const LevelDBComparator* comparator) {
   std::unique_ptr<ComparatorAdapter> comparator_adapter(
-      base::MakeUnique<ComparatorAdapter>(comparator));
+      std::make_unique<ComparatorAdapter>(comparator));
   std::unique_ptr<leveldb::Env> in_memory_env(
       leveldb_chrome::NewMemEnv(LevelDBEnv::Get()));
 
diff --git a/content/browser/indexed_db/leveldb/leveldb_transaction.cc b/content/browser/indexed_db/leveldb/leveldb_transaction.cc
index b2e83c4..dc1452d 100644
--- a/content/browser/indexed_db/leveldb/leveldb_transaction.cc
+++ b/content/browser/indexed_db/leveldb/leveldb_transaction.cc
@@ -49,7 +49,7 @@
   DataType::iterator it = data_.find(key);
 
   if (it == data_.end()) {
-    std::unique_ptr<Record> record = base::MakeUnique<Record>();
+    std::unique_ptr<Record> record = std::make_unique<Record>();
     size_ += SizeOfRecordInMap(key.size()) + value->size();
     record->key.assign(key.begin(), key.end() - key.begin());
     record->value.swap(*value);
@@ -383,7 +383,7 @@
     transaction_->size_ -= data_iterator_->Value().size();
     data_iterator_->Delete();
   } else {
-    std::unique_ptr<Record> record = base::MakeUnique<Record>();
+    std::unique_ptr<Record> record = std::make_unique<Record>();
     record->key = Key().as_string();
     record->deleted = true;
     transaction_->size_ +=
diff --git a/content/browser/indexed_db/list_set_unittest.cc b/content/browser/indexed_db/list_set_unittest.cc
index b5b7145..615b547 100644
--- a/content/browser/indexed_db/list_set_unittest.cc
+++ b/content/browser/indexed_db/list_set_unittest.cc
@@ -166,9 +166,9 @@
 }
 
 TEST(ListSetTest, ListSetPointer) {
-  std::unique_ptr<Wrapped<int>> w0 = base::MakeUnique<Wrapped<int>>(0);
-  std::unique_ptr<Wrapped<int>> w1 = base::MakeUnique<Wrapped<int>>(1);
-  std::unique_ptr<Wrapped<int>> w2 = base::MakeUnique<Wrapped<int>>(2);
+  std::unique_ptr<Wrapped<int>> w0 = std::make_unique<Wrapped<int>>(0);
+  std::unique_ptr<Wrapped<int>> w1 = std::make_unique<Wrapped<int>>(1);
+  std::unique_ptr<Wrapped<int>> w2 = std::make_unique<Wrapped<int>>(2);
 
   list_set<Wrapped<int>*> set;
   EXPECT_EQ(0u, set.size());
diff --git a/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.cc b/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.cc
index 36bf7ffa..266205bd 100644
--- a/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.cc
+++ b/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.cc
@@ -318,14 +318,14 @@
   instance_count_[FAIL_CLASS_LEVELDB_ITERATOR] =
       instance_count_[FAIL_CLASS_LEVELDB_ITERATOR] + 1;
   if (only_trace_calls_) {
-    return base::MakeUnique<LevelDBTraceIteratorImpl>(
+    return std::make_unique<LevelDBTraceIteratorImpl>(
         std::move(iterator), db, snapshot,
         instance_count_[FAIL_CLASS_LEVELDB_ITERATOR]);
   } else {
     if (failure_class_ == FAIL_CLASS_LEVELDB_ITERATOR &&
         instance_count_[FAIL_CLASS_LEVELDB_ITERATOR] ==
             fail_on_instance_num_[FAIL_CLASS_LEVELDB_ITERATOR]) {
-      return base::MakeUnique<LevelDBTestIteratorImpl>(
+      return std::make_unique<LevelDBTestIteratorImpl>(
           std::move(iterator), db, snapshot, failure_method_,
           fail_on_call_num_[FAIL_CLASS_LEVELDB_ITERATOR]);
     } else {
diff --git a/content/browser/installedapp/installed_app_provider_impl_default.cc b/content/browser/installedapp/installed_app_provider_impl_default.cc
index a71e9d8..3a77bd7 100644
--- a/content/browser/installedapp/installed_app_provider_impl_default.cc
+++ b/content/browser/installedapp/installed_app_provider_impl_default.cc
@@ -23,7 +23,7 @@
 // static
 void InstalledAppProviderImplDefault::Create(
     blink::mojom::InstalledAppProviderRequest request) {
-  mojo::MakeStrongBinding(base::MakeUnique<InstalledAppProviderImplDefault>(),
+  mojo::MakeStrongBinding(std::make_unique<InstalledAppProviderImplDefault>(),
                           std::move(request));
 }
 
diff --git a/content/browser/keyboard_lock/keyboard_lock_service_impl.cc b/content/browser/keyboard_lock/keyboard_lock_service_impl.cc
index f4e2127..49d3535 100644
--- a/content/browser/keyboard_lock/keyboard_lock_service_impl.cc
+++ b/content/browser/keyboard_lock/keyboard_lock_service_impl.cc
@@ -26,8 +26,8 @@
     RenderFrameHost* render_frame_host,
     blink::mojom::KeyboardLockServiceRequest request) {
   mojo::MakeStrongBinding(
-        base::MakeUnique<KeyboardLockServiceImpl>(render_frame_host),
-        std::move(request));
+      std::make_unique<KeyboardLockServiceImpl>(render_frame_host),
+      std::move(request));
 }
 
 void KeyboardLockServiceImpl::RequestKeyboardLock(
diff --git a/content/browser/leveldb_wrapper_impl.cc b/content/browser/leveldb_wrapper_impl.cc
index e20d2eee..dbdfabe 100644
--- a/content/browser/leveldb_wrapper_impl.cc
+++ b/content/browser/leveldb_wrapper_impl.cc
@@ -390,7 +390,7 @@
 }
 
 void LevelDBWrapperImpl::OnGotMigrationData(std::unique_ptr<ValueMap> data) {
-  map_ = data ? std::move(data) : base::MakeUnique<ValueMap>();
+  map_ = data ? std::move(data) : std::make_unique<ValueMap>();
   bytes_used_ = 0;
   for (const auto& it : *map_)
     bytes_used_ += it.first.size() + it.second.size();
diff --git a/content/browser/loader/async_resource_handler.cc b/content/browser/loader/async_resource_handler.cc
index f0ae5c2..709b1c83f 100644
--- a/content/browser/loader/async_resource_handler.cc
+++ b/content/browser/loader/async_resource_handler.cc
@@ -215,7 +215,7 @@
 
   if (GetRequestInfo()->is_upload_progress_enabled() &&
       request()->has_upload()) {
-    upload_progress_tracker_ = base::MakeUnique<UploadProgressTracker>(
+    upload_progress_tracker_ = std::make_unique<UploadProgressTracker>(
         FROM_HERE,
         base::BindRepeating(&AsyncResourceHandler::SendUploadProgress,
                             base::Unretained(this)),
diff --git a/content/browser/loader/async_resource_handler_unittest.cc b/content/browser/loader/async_resource_handler_unittest.cc
index d37a583..c944891 100644
--- a/content/browser/loader/async_resource_handler_unittest.cc
+++ b/content/browser/loader/async_resource_handler_unittest.cc
@@ -158,13 +158,13 @@
 
   void CreateRequestWithResponseDataSize(size_t response_data_size) {
     test_job_factory_.SetProtocolHandler(
-        "test", base::MakeUnique<TestProtocolHandler>(response_data_size));
+        "test", std::make_unique<TestProtocolHandler>(response_data_size));
     context_.set_job_factory(&test_job_factory_);
     context_.Init();
     std::unique_ptr<net::URLRequest> request =
         context_.CreateRequest(GURL("test:test"), net::DEFAULT_PRIORITY,
                                nullptr, TRAFFIC_ANNOTATION_FOR_TESTS);
-    resource_context_ = base::MakeUnique<MockResourceContext>(&context_);
+    resource_context_ = std::make_unique<MockResourceContext>(&context_);
     filter_ =
         new RecordingResourceMessageFilter(resource_context_.get(), &context_);
     ResourceRequestInfoImpl* info = new ResourceRequestInfoImpl(
@@ -196,9 +196,9 @@
         false);                                 // initiated_in_secure_context
     info->AssociateWithRequest(request.get());
     std::unique_ptr<AsyncResourceHandler> handler =
-        base::MakeUnique<AsyncResourceHandler>(request.get(), &rdh_);
-    loader_ = base::MakeUnique<ResourceLoader>(
-        std::move(request), std::move(handler), this);
+        std::make_unique<AsyncResourceHandler>(request.get(), &rdh_);
+    loader_ = std::make_unique<ResourceLoader>(std::move(request),
+                                               std::move(handler), this);
   }
 
   void StartRequestAndWaitWithResponseDataSize(size_t response_data_size) {
diff --git a/content/browser/loader/cross_site_resource_handler_browsertest.cc b/content/browser/loader/cross_site_resource_handler_browsertest.cc
index 2e986ad1..07d00e5 100644
--- a/content/browser/loader/cross_site_resource_handler_browsertest.cc
+++ b/content/browser/loader/cross_site_resource_handler_browsertest.cc
@@ -57,7 +57,7 @@
       ASSERT_FALSE(throttle_created_);
       throttle_created_ = true;
 
-      throttles->push_back(base::MakeUnique<CallbackRunningResourceThrottle>(
+      throttles->push_back(std::make_unique<CallbackRunningResourceThrottle>(
           request, this, run_on_start_));
     }
   }
diff --git a/content/browser/loader/detachable_resource_handler.cc b/content/browser/loader/detachable_resource_handler.cc
index 0042087..fc6cc26 100644
--- a/content/browser/loader/detachable_resource_handler.cc
+++ b/content/browser/loader/detachable_resource_handler.cc
@@ -103,7 +103,7 @@
     // TODO(mmenke): Get rid of NullResourceController and do something more
     // reasonable.
     next_handler_->OnResponseCompleted(
-        status, base::MakeUnique<NullResourceController>(&was_resumed));
+        status, std::make_unique<NullResourceController>(&was_resumed));
     DCHECK(was_resumed);
     // If |next_handler_| were to defer its shutdown in OnResponseCompleted,
     // this would destroy it anyway. Fortunately, AsyncResourceHandler never
@@ -166,7 +166,7 @@
 
   HoldController(std::move(controller));
   next_handler_->OnRequestRedirected(redirect_info, response,
-                                     base::MakeUnique<Controller>(this));
+                                     std::make_unique<Controller>(this));
 }
 
 void DetachableResourceHandler::OnResponseStarted(
@@ -181,7 +181,7 @@
 
   HoldController(std::move(controller));
   next_handler_->OnResponseStarted(response,
-                                   base::MakeUnique<Controller>(this));
+                                   std::make_unique<Controller>(this));
 }
 
 void DetachableResourceHandler::OnWillStart(
@@ -195,7 +195,7 @@
   }
 
   HoldController(std::move(controller));
-  next_handler_->OnWillStart(url, base::MakeUnique<Controller>(this));
+  next_handler_->OnWillStart(url, std::make_unique<Controller>(this));
 }
 
 void DetachableResourceHandler::OnWillRead(
@@ -215,7 +215,7 @@
   parent_read_buffer_size_ = buf_size;
 
   HoldController(std::move(controller));
-  next_handler_->OnWillRead(buf, buf_size, base::MakeUnique<Controller>(this));
+  next_handler_->OnWillRead(buf, buf_size, std::make_unique<Controller>(this));
 }
 
 void DetachableResourceHandler::OnReadCompleted(
@@ -230,7 +230,7 @@
 
   HoldController(std::move(controller));
   next_handler_->OnReadCompleted(bytes_read,
-                                 base::MakeUnique<Controller>(this));
+                                 std::make_unique<Controller>(this));
 }
 
 void DetachableResourceHandler::OnResponseCompleted(
@@ -252,7 +252,7 @@
 
   HoldController(std::move(controller));
   next_handler_->OnResponseCompleted(status,
-                                     base::MakeUnique<Controller>(this));
+                                     std::make_unique<Controller>(this));
 }
 
 void DetachableResourceHandler::OnDataDownloaded(int bytes_downloaded) {
diff --git a/content/browser/loader/detachable_resource_handler_unittest.cc b/content/browser/loader/detachable_resource_handler_unittest.cc
index 0c1f12d5..7f01674 100644
--- a/content/browser/loader/detachable_resource_handler_unittest.cc
+++ b/content/browser/loader/detachable_resource_handler_unittest.cc
@@ -74,15 +74,15 @@
 
     std::unique_ptr<TestResourceHandler> test_handler;
     if (GetParam() != DetachPhase::DETACHED_FROM_CREATION) {
-      test_handler = base::MakeUnique<TestResourceHandler>();
+      test_handler = std::make_unique<TestResourceHandler>();
       test_handler_ = test_handler->GetWeakPtr();
     }
     // TODO(mmenke):  This file currently has no timeout tests. Should it?
-    detachable_handler_ = base::MakeUnique<DetachableResourceHandler>(
+    detachable_handler_ = std::make_unique<DetachableResourceHandler>(
         request_.get(), base::TimeDelta::FromMinutes(30),
         std::move(test_handler));
     mock_loader_ =
-        base::MakeUnique<MockResourceLoader>(detachable_handler_.get());
+        std::make_unique<MockResourceLoader>(detachable_handler_.get());
   }
 
   // If the DetachableResourceHandler is supposed to detach the next handler at
diff --git a/content/browser/loader/downloaded_temp_file_impl.cc b/content/browser/loader/downloaded_temp_file_impl.cc
index 878e3e2..7bbb539 100644
--- a/content/browser/loader/downloaded_temp_file_impl.cc
+++ b/content/browser/loader/downloaded_temp_file_impl.cc
@@ -15,7 +15,7 @@
                                                             int request_id) {
   mojo::InterfacePtr<mojom::DownloadedTempFile> ptr;
   mojo::MakeStrongBinding(
-      base::MakeUnique<DownloadedTempFileImpl>(child_id, request_id),
+      std::make_unique<DownloadedTempFileImpl>(child_id, request_id),
       mojo::MakeRequest(&ptr));
   return ptr;
 }
diff --git a/content/browser/loader/intercepting_resource_handler.cc b/content/browser/loader/intercepting_resource_handler.cc
index f74db04..d1b2ccc 100644
--- a/content/browser/loader/intercepting_resource_handler.cc
+++ b/content/browser/loader/intercepting_resource_handler.cc
@@ -161,7 +161,7 @@
   // TODO(mmenke): Get rid of NullResourceController and do something more
   // reasonable.
   next_handler_->OnResponseCompleted(
-      status, base::MakeUnique<NullResourceController>(&was_resumed));
+      status, std::make_unique<NullResourceController>(&was_resumed));
   DCHECK(was_resumed);
 
   state_ = State::PASS_THROUGH;
@@ -265,7 +265,7 @@
 
   state_ = State::WAITING_FOR_OLD_HANDLERS_BUFFER;
   next_handler_->OnWillRead(&first_read_buffer_, &first_read_buffer_size_,
-                            base::MakeUnique<Controller>(this));
+                            std::make_unique<Controller>(this));
 }
 
 void InterceptingResourceHandler::OnBufferReceived() {
@@ -293,7 +293,7 @@
 void InterceptingResourceHandler::SendOnResponseStartedToOldHandler() {
   state_ = State::SENDING_PAYLOAD_TO_OLD_HANDLER;
   next_handler_->OnResponseStarted(response_.get(),
-                                   base::MakeUnique<Controller>(this));
+                                   std::make_unique<Controller>(this));
 }
 
 void InterceptingResourceHandler::SendPayloadToOldHandler() {
@@ -311,13 +311,13 @@
     // TODO(mmenke): Get rid of NullResourceController and do something more
     // reasonable.
     next_handler_->OnResponseCompleted(
-        status, base::MakeUnique<NullResourceController>(&was_resumed));
+        status, std::make_unique<NullResourceController>(&was_resumed));
     DCHECK(was_resumed);
 
     next_handler_ = std::move(new_handler_);
     state_ = State::SENDING_ON_WILL_START_TO_NEW_HANDLER;
     next_handler_->OnWillStart(request()->url(),
-                               base::MakeUnique<Controller>(this));
+                               std::make_unique<Controller>(this));
     return;
   }
 
@@ -335,7 +335,7 @@
 
   DCHECK(!first_read_buffer_size_);
   next_handler_->OnWillRead(&first_read_buffer_, &first_read_buffer_size_,
-                            base::MakeUnique<Controller>(this));
+                            std::make_unique<Controller>(this));
 }
 
 void InterceptingResourceHandler::ReceivedBufferFromOldHandler() {
@@ -357,13 +357,13 @@
 
   state_ = State::SENDING_PAYLOAD_TO_OLD_HANDLER;
   next_handler_->OnReadCompleted(bytes_to_copy,
-                                 base::MakeUnique<Controller>(this));
+                                 std::make_unique<Controller>(this));
 }
 
 void InterceptingResourceHandler::SendOnResponseStartedToNewHandler() {
   state_ = State::SENDING_ON_RESPONSE_STARTED_TO_NEW_HANDLER;
   next_handler_->OnResponseStarted(response_.get(),
-                                   base::MakeUnique<Controller>(this));
+                                   std::make_unique<Controller>(this));
 }
 
 void InterceptingResourceHandler::SendFirstReadBufferToNewHandler() {
@@ -381,7 +381,7 @@
   state_ = State::SENDING_BUFFER_TO_NEW_HANDLER_WAITING_FOR_BUFFER;
   next_handler_->OnWillRead(&new_handler_read_buffer_,
                             &new_handler_read_buffer_size_,
-                            base::MakeUnique<Controller>(this));
+                            std::make_unique<Controller>(this));
 }
 
 void InterceptingResourceHandler::ReceivedBufferFromNewHandler() {
@@ -403,7 +403,7 @@
 
   state_ = State::SENDING_BUFFER_TO_NEW_HANDLER;
   next_handler_->OnReadCompleted(bytes_to_copy,
-                                 base::MakeUnique<Controller>(this));
+                                 std::make_unique<Controller>(this));
 }
 
 }  // namespace content
diff --git a/content/browser/loader/intercepting_resource_handler_unittest.cc b/content/browser/loader/intercepting_resource_handler_unittest.cc
index a7218ef7..7b1ba98 100644
--- a/content/browser/loader/intercepting_resource_handler_unittest.cc
+++ b/content/browser/loader/intercepting_resource_handler_unittest.cc
@@ -60,10 +60,10 @@
     std::unique_ptr<TestResourceHandler> old_handler(
         new TestResourceHandler(&old_handler_status_, &old_handler_body_));
     old_handler_ = old_handler->GetWeakPtr();
-    intercepting_handler_ = base::MakeUnique<InterceptingResourceHandler>(
+    intercepting_handler_ = std::make_unique<InterceptingResourceHandler>(
         std::move(old_handler), request_.get());
     mock_loader_ =
-        base::MakeUnique<MockResourceLoader>(intercepting_handler_.get());
+        std::make_unique<MockResourceLoader>(intercepting_handler_.get());
   }
 
  protected:
diff --git a/content/browser/loader/mime_sniffing_resource_handler.cc b/content/browser/loader/mime_sniffing_resource_handler.cc
index dfb83be..0780096 100644
--- a/content/browser/loader/mime_sniffing_resource_handler.cc
+++ b/content/browser/loader/mime_sniffing_resource_handler.cc
@@ -378,7 +378,7 @@
 
   state_ = STATE_WAITING_FOR_BUFFER;
   next_handler_->OnWillRead(&read_buffer_, &read_buffer_size_,
-                            base::MakeUnique<Controller>(this));
+                            std::make_unique<Controller>(this));
 }
 
 void MimeSniffingResourceHandler::BufferReceived() {
@@ -403,7 +403,7 @@
   DCHECK_EQ(STATE_INTERCEPTION_CHECK_DONE, state_);
   state_ = STATE_REPLAYING_RESPONSE_RECEIVED;
   next_handler_->OnResponseStarted(response_.get(),
-                                   base::MakeUnique<Controller>(this));
+                                   std::make_unique<Controller>(this));
 }
 
 void MimeSniffingResourceHandler::ReplayReadCompleted() {
@@ -423,7 +423,7 @@
   bytes_read_ = 0;
 
   next_handler_->OnReadCompleted(bytes_read,
-                                 base::MakeUnique<Controller>(this));
+                                 std::make_unique<Controller>(this));
 }
 
 bool MimeSniffingResourceHandler::MaybeStartInterception() {
diff --git a/content/browser/loader/mime_sniffing_resource_handler_unittest.cc b/content/browser/loader/mime_sniffing_resource_handler_unittest.cc
index 52be940..a770b53e 100644
--- a/content/browser/loader/mime_sniffing_resource_handler_unittest.cc
+++ b/content/browser/loader/mime_sniffing_resource_handler_unittest.cc
@@ -282,7 +282,7 @@
   TestFakePluginService plugin_service(plugin_available_, plugin_stale_);
 
   std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
-      new InterceptingResourceHandler(base::MakeUnique<TestResourceHandler>(),
+      new InterceptingResourceHandler(std::make_unique<TestResourceHandler>(),
                                       nullptr));
   std::unique_ptr<TestResourceHandler> scoped_test_handler(
       new TestResourceHandler());
@@ -341,7 +341,7 @@
 
   TestFakePluginService plugin_service(plugin_available_, plugin_stale_);
   std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
-      new InterceptingResourceHandler(base::MakeUnique<TestResourceHandler>(),
+      new InterceptingResourceHandler(std::make_unique<TestResourceHandler>(),
                                       nullptr));
 
   std::unique_ptr<TestResourceHandler> scoped_test_handler(
@@ -503,7 +503,7 @@
 
   TestFakePluginService plugin_service(plugin_available_, plugin_stale_);
   std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
-      new InterceptingResourceHandler(base::MakeUnique<TestResourceHandler>(),
+      new InterceptingResourceHandler(std::make_unique<TestResourceHandler>(),
                                       nullptr));
 
   std::unique_ptr<TestResourceHandler> scoped_test_handler(
@@ -883,7 +883,7 @@
 
   TestFakePluginService plugin_service(false, false);
   std::unique_ptr<ResourceHandler> intercepting_handler(
-      new InterceptingResourceHandler(base::MakeUnique<TestResourceHandler>(),
+      new InterceptingResourceHandler(std::make_unique<TestResourceHandler>(),
                                       nullptr));
   MimeSniffingResourceHandler mime_sniffing_handler(
       std::unique_ptr<ResourceHandler>(new TestResourceHandler()), &host,
@@ -932,7 +932,7 @@
 
   TestFakePluginService plugin_service(false, false);
   std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
-      new InterceptingResourceHandler(base::MakeUnique<TestResourceHandler>(),
+      new InterceptingResourceHandler(std::make_unique<TestResourceHandler>(),
                                       nullptr));
 
   std::unique_ptr<TestResourceHandler> scoped_test_handler(
diff --git a/content/browser/loader/mock_resource_loader.cc b/content/browser/loader/mock_resource_loader.cc
index 6971ab41..1497d92d 100644
--- a/content/browser/loader/mock_resource_loader.cc
+++ b/content/browser/loader/mock_resource_loader.cc
@@ -46,7 +46,7 @@
   EXPECT_EQ(Status::IDLE, status_);
 
   status_ = Status::CALLING_HANDLER;
-  resource_handler_->OnWillStart(url, base::MakeUnique<TestResourceController>(
+  resource_handler_->OnWillStart(url, std::make_unique<TestResourceController>(
                                           weak_factory_.GetWeakPtr()));
   if (status_ == Status::CALLING_HANDLER)
     status_ = Status::CALLBACK_PENDING;
@@ -65,7 +65,7 @@
   // needs to hold onto its own pointer to it.
   resource_handler_->OnRequestRedirected(
       redirect_info, response.get(),
-      base::MakeUnique<TestResourceController>(weak_factory_.GetWeakPtr()));
+      std::make_unique<TestResourceController>(weak_factory_.GetWeakPtr()));
   if (status_ == Status::CALLING_HANDLER)
     status_ = Status::CALLBACK_PENDING;
   return status_;
@@ -82,7 +82,7 @@
   // needs to hold onto its own pointer to it.
   resource_handler_->OnResponseStarted(
       response.get(),
-      base::MakeUnique<TestResourceController>(weak_factory_.GetWeakPtr()));
+      std::make_unique<TestResourceController>(weak_factory_.GetWeakPtr()));
   if (status_ == Status::CALLING_HANDLER)
     status_ = Status::CALLBACK_PENDING;
   return status_;
@@ -96,7 +96,7 @@
   waiting_on_buffer_ = true;
   resource_handler_->OnWillRead(
       &io_buffer_, &io_buffer_size_,
-      base::MakeUnique<TestResourceController>(weak_factory_.GetWeakPtr()));
+      std::make_unique<TestResourceController>(weak_factory_.GetWeakPtr()));
   if (status_ == Status::CALLING_HANDLER) {
     // Shouldn't update  |io_buffer_| or |io_buffer_size_| yet if Resume()
     // hasn't yet been called.
@@ -121,7 +121,7 @@
   io_buffer_size_ = 0;
   resource_handler_->OnReadCompleted(
       bytes.size(),
-      base::MakeUnique<TestResourceController>(weak_factory_.GetWeakPtr()));
+      std::make_unique<TestResourceController>(weak_factory_.GetWeakPtr()));
   if (status_ == Status::CALLING_HANDLER)
     status_ = Status::CALLBACK_PENDING;
   return status_;
@@ -141,7 +141,7 @@
   status_ = Status::CALLING_HANDLER;
   resource_handler_->OnResponseCompleted(
       status,
-      base::MakeUnique<TestResourceController>(weak_factory_.GetWeakPtr()));
+      std::make_unique<TestResourceController>(weak_factory_.GetWeakPtr()));
   if (status_ == Status::CALLING_HANDLER)
     status_ = Status::CALLBACK_PENDING;
   EXPECT_NE(Status::CANCELED, status_);
@@ -162,7 +162,7 @@
 
   resource_handler_->OnResponseCompleted(
       url_request_status,
-      base::MakeUnique<TestResourceController>(weak_factory_.GetWeakPtr()));
+      std::make_unique<TestResourceController>(weak_factory_.GetWeakPtr()));
   if (status_ == Status::CALLING_HANDLER)
     status_ = Status::CALLBACK_PENDING;
   EXPECT_NE(Status::CANCELED, status_);
diff --git a/content/browser/loader/mojo_async_resource_handler.cc b/content/browser/loader/mojo_async_resource_handler.cc
index 3cf85af..58d86c05 100644
--- a/content/browser/loader/mojo_async_resource_handler.cc
+++ b/content/browser/loader/mojo_async_resource_handler.cc
@@ -569,7 +569,7 @@
 MojoAsyncResourceHandler::CreateUploadProgressTracker(
     const base::Location& from_here,
     UploadProgressTracker::UploadProgressReportCallback callback) {
-  return base::MakeUnique<UploadProgressTracker>(from_here, std::move(callback),
+  return std::make_unique<UploadProgressTracker>(from_here, std::move(callback),
                                                  request());
 }
 
diff --git a/content/browser/loader/mojo_async_resource_handler_unittest.cc b/content/browser/loader/mojo_async_resource_handler_unittest.cc
index e25adee..02fbe79 100644
--- a/content/browser/loader/mojo_async_resource_handler_unittest.cc
+++ b/content/browser/loader/mojo_async_resource_handler_unittest.cc
@@ -268,7 +268,7 @@
       UploadProgressTracker::UploadProgressReportCallback callback) override {
     DCHECK(!upload_progress_tracker_);
 
-    auto upload_progress_tracker = base::MakeUnique<FakeUploadProgressTracker>(
+    auto upload_progress_tracker = std::make_unique<FakeUploadProgressTracker>(
         from_here, std::move(callback), request(), task_runner_);
     upload_progress_tracker_ = upload_progress_tracker.get();
     return std::move(upload_progress_tracker);
@@ -351,7 +351,7 @@
 
     ResourceRequest request;
     base::WeakPtr<mojo::StrongBinding<mojom::URLLoaderFactory>> weak_binding =
-        mojo::MakeStrongBinding(base::MakeUnique<TestURLLoaderFactory>(),
+        mojo::MakeStrongBinding(std::make_unique<TestURLLoaderFactory>(),
                                 mojo::MakeRequest(&url_loader_factory_));
 
     url_loader_factory_->CreateLoaderAndStart(
@@ -456,7 +456,7 @@
  protected:
   MojoAsyncResourceHandlerUploadTest()
       : MojoAsyncResourceHandlerTestBase(
-            base::MakeUnique<DummyUploadDataStream>()) {}
+            std::make_unique<DummyUploadDataStream>()) {}
 };
 
 TEST_F(MojoAsyncResourceHandlerTest, InFlightRequests) {
diff --git a/content/browser/loader/navigation_resource_handler.cc b/content/browser/loader/navigation_resource_handler.cc
index 4a522b1..ac4b9a92 100644
--- a/content/browser/loader/navigation_resource_handler.cc
+++ b/content/browser/loader/navigation_resource_handler.cc
@@ -117,7 +117,7 @@
 
   HoldController(std::move(controller));
   response_ = response;
-  redirect_info_ = base::MakeUnique<net::RedirectInfo>(redirect_info);
+  redirect_info_ = std::make_unique<net::RedirectInfo>(redirect_info);
 }
 
 void NavigationResourceHandler::OnResponseStarted(
diff --git a/content/browser/loader/navigation_url_loader.cc b/content/browser/loader/navigation_url_loader.cc
index 237028c..a6a4230 100644
--- a/content/browser/loader/navigation_url_loader.cc
+++ b/content/browser/loader/navigation_url_loader.cc
@@ -34,12 +34,12 @@
         std::move(navigation_ui_data), service_worker_handle, delegate);
   }
   if (base::FeatureList::IsEnabled(features::kNetworkService)) {
-    return base::MakeUnique<NavigationURLLoaderNetworkService>(
+    return std::make_unique<NavigationURLLoaderNetworkService>(
         resource_context, storage_partition, std::move(request_info),
         std::move(navigation_ui_data), service_worker_handle, appcache_handle,
         delegate, std::vector<std::unique_ptr<URLLoaderRequestHandler>>());
   } else {
-    return base::MakeUnique<NavigationURLLoaderImpl>(
+    return std::make_unique<NavigationURLLoaderImpl>(
         resource_context, storage_partition, std::move(request_info),
         std::move(navigation_ui_data), service_worker_handle, appcache_handle,
         delegate);
diff --git a/content/browser/loader/navigation_url_loader_network_service.cc b/content/browser/loader/navigation_url_loader_network_service.cc
index b868c75..eca0771 100644
--- a/content/browser/loader/navigation_url_loader_network_service.cc
+++ b/content/browser/loader/navigation_url_loader_network_service.cc
@@ -491,7 +491,7 @@
       request_info->frame_tree_node_id);
 
   // TODO(scottmg): Port over stuff from RDHI::BeginNavigationRequest() here.
-  auto new_request = base::MakeUnique<ResourceRequest>();
+  auto new_request = std::make_unique<ResourceRequest>();
 
   new_request->method = request_info->common_params.method;
   new_request->url = request_info->common_params.url;
@@ -542,7 +542,7 @@
   g_next_request_id--;
 
   DCHECK(!request_controller_);
-  request_controller_ = base::MakeUnique<URLLoaderRequestController>(
+  request_controller_ = std::make_unique<URLLoaderRequestController>(
       std::move(initial_handlers), std::move(new_request), resource_context,
       static_cast<StoragePartitionImpl*>(storage_partition)
           ->url_loader_factory_getter(),
diff --git a/content/browser/loader/navigation_url_loader_network_service_unittest.cc b/content/browser/loader/navigation_url_loader_network_service_unittest.cc
index c45f2b0..0bc50e01 100644
--- a/content/browser/loader/navigation_url_loader_network_service_unittest.cc
+++ b/content/browser/loader/navigation_url_loader_network_service_unittest.cc
@@ -90,7 +90,7 @@
     // GetNetworkService.
     service_manager::mojom::ServicePtr service;
     ServiceManagerConnection::SetForProcess(
-        base::MakeUnique<ServiceManagerConnectionImpl>(
+        std::make_unique<ServiceManagerConnectionImpl>(
             mojo::MakeRequest(&service),
             BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)));
 
@@ -130,10 +130,10 @@
 
     std::vector<std::unique_ptr<URLLoaderRequestHandler>> handlers;
     most_recent_resource_request_ = base::nullopt;
-    handlers.push_back(base::MakeUnique<TestURLLoaderRequestHandler>(
+    handlers.push_back(std::make_unique<TestURLLoaderRequestHandler>(
         &most_recent_resource_request_));
 
-    return base::MakeUnique<NavigationURLLoaderNetworkService>(
+    return std::make_unique<NavigationURLLoaderNetworkService>(
         browser_context_->GetResourceContext(),
         BrowserContext::GetDefaultStoragePartition(browser_context_.get()),
         std::move(request_info), nullptr /* navigation_ui_data */,
diff --git a/content/browser/loader/navigation_url_loader_unittest.cc b/content/browser/loader/navigation_url_loader_unittest.cc
index b9df713..09bd35f 100644
--- a/content/browser/loader/navigation_url_loader_unittest.cc
+++ b/content/browser/loader/navigation_url_loader_unittest.cc
@@ -106,7 +106,7 @@
 
 std::unique_ptr<ResourceHandler> CreateDownloadResourceHandler(
     net::URLRequest* request) {
-  return base::MakeUnique<TestResourceHandler>();
+  return std::make_unique<TestResourceHandler>();
 }
 
 }  // namespace
@@ -127,10 +127,10 @@
     job_factory_.SetProtocolHandler(
         "test", net::URLRequestTestJob::CreateProtocolHandler());
     job_factory_.SetProtocolHandler(
-        "blob", base::MakeUnique<StreamProtocolHandler>(
+        "blob", std::make_unique<StreamProtocolHandler>(
                     StreamContext::GetFor(browser_context_.get())->registry()));
     job_factory_.SetProtocolHandler(
-        "download", base::MakeUnique<DownloadProtocolHandler>());
+        "download", std::make_unique<DownloadProtocolHandler>());
     request_context->set_job_factory(&job_factory_);
 
     // NavigationURLLoader is only used for browser-side navigations.
diff --git a/content/browser/loader/redirect_to_file_resource_handler_unittest.cc b/content/browser/loader/redirect_to_file_resource_handler_unittest.cc
index 5eac0392..26c61f08 100644
--- a/content/browser/loader/redirect_to_file_resource_handler_unittest.cc
+++ b/content/browser/loader/redirect_to_file_resource_handler_unittest.cc
@@ -214,7 +214,7 @@
                                                TRAFFIC_ANNOTATION_FOR_TESTS)) {
     base::CreateTemporaryFile(&temp_file_path_);
     std::unique_ptr<TestResourceHandler> test_handler =
-        base::MakeUnique<TestResourceHandler>();
+        std::make_unique<TestResourceHandler>();
     test_handler->set_expect_on_data_downloaded(true);
     if (GetParam() == CompletionMode::ASYNC) {
       // Don't defer OnResponseCompleted, by default, since that's really
@@ -224,16 +224,16 @@
     }
     test_handler_ = test_handler->GetWeakPtr();
 
-    redirect_to_file_handler_ = base::MakeUnique<RedirectToFileResourceHandler>(
+    redirect_to_file_handler_ = std::make_unique<RedirectToFileResourceHandler>(
         std::move(test_handler), url_request_.get());
     mock_loader_ =
-        base::MakeUnique<MockResourceLoader>(redirect_to_file_handler_.get());
+        std::make_unique<MockResourceLoader>(redirect_to_file_handler_.get());
     redirect_to_file_handler_->SetCreateTemporaryFileStreamFunctionForTesting(
         base::Bind(&RedirectToFileResourceHandlerTest::
                        SetCreateTemporaryFileStreamCallback,
                    base::Unretained(this)));
 
-    file_stream_ = base::MakeUnique<MockFileStream>();
+    file_stream_ = std::make_unique<MockFileStream>();
     file_stream_->set_open_result(
         MockFileStream::OperationResult(net::OK, GetParam()));
     file_stream_->set_all_write_results(MockFileStream::OperationResult(
diff --git a/content/browser/loader/resource_dispatcher_host_browsertest.cc b/content/browser/loader/resource_dispatcher_host_browsertest.cc
index 2d39226..d8f841e 100644
--- a/content/browser/loader/resource_dispatcher_host_browsertest.cc
+++ b/content/browser/loader/resource_dispatcher_host_browsertest.cc
@@ -261,7 +261,7 @@
                      base::Unretained(ResourceDispatcherHostImpl::Get()),
                      child_id));
 
-  return base::MakeUnique<net::test_server::HungResponse>();
+  return std::make_unique<net::test_server::HungResponse>();
 }
 
 }  // namespace
@@ -843,7 +843,7 @@
       AppCacheService* appcache_service,
       ResourceType resource_type,
       std::vector<std::unique_ptr<ResourceThrottle>>* throttles) override {
-    requests_.push_back(base::MakeUnique<RequestDataForDelegate>(
+    requests_.push_back(std::make_unique<RequestDataForDelegate>(
         request->url(), request->site_for_cookies(), request->initiator(),
         request->load_flags(), request->referrer()));
   }
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc
index dc964ea..4136bb58 100644
--- a/content/browser/loader/resource_dispatcher_host_impl.cc
+++ b/content/browser/loader/resource_dispatcher_host_impl.cc
@@ -363,7 +363,7 @@
       FROM_HERE, base::BindOnce(&ResourceDispatcherHostImpl::OnInit,
                                 base::Unretained(this)));
 
-  update_load_states_timer_ = base::MakeUnique<base::RepeatingTimer>();
+  update_load_states_timer_ = std::make_unique<base::RepeatingTimer>();
 
   // Monitor per-tab outstanding requests only if OOPIF is not enabled, because
   // the routing id doesn't represent tabs in OOPIF modes.
@@ -371,7 +371,7 @@
       !SiteIsolationPolicy::IsTopDocumentIsolationEnabled() &&
       !SiteIsolationPolicy::AreIsolatedOriginsEnabled()) {
     record_outstanding_requests_stats_timer_ =
-        base::MakeUnique<base::RepeatingTimer>();
+        std::make_unique<base::RepeatingTimer>();
   }
 }
 
@@ -1257,7 +1257,7 @@
 
     if (request_data.originated_from_service_worker) {
       new_request->SetUserData(URLRequestServiceWorkerData::kUserDataKey,
-                               base::MakeUnique<URLRequestServiceWorkerData>());
+                               std::make_unique<URLRequestServiceWorkerData>());
     }
 
     // If the request is a MAIN_FRAME request, the first-party URL gets updated
@@ -1481,7 +1481,7 @@
     }
 
     std::unique_ptr<DetachableResourceHandler> detachable_handler =
-        base::MakeUnique<DetachableResourceHandler>(request, timeout,
+        std::make_unique<DetachableResourceHandler>(request, timeout,
                                                     std::move(handler));
     if (start_detached)
       detachable_handler->Detach();
@@ -1539,7 +1539,7 @@
   // PlzNavigate: the throttle is unnecessary as communication with the UI
   // thread is handled by the NavigationResourceHandler below.
   if (!IsBrowserSideNavigationEnabled() && IsResourceTypeFrame(resource_type)) {
-    throttles.push_back(base::MakeUnique<NavigationResourceThrottle>(
+    throttles.push_back(std::make_unique<NavigationResourceThrottle>(
         request, delegate_, fetch_request_context_type,
         fetch_mixed_content_context_type));
   }
@@ -1555,7 +1555,7 @@
   if (request->has_upload()) {
     // Request wake lock while uploading data.
     throttles.push_back(
-        base::MakeUnique<WakeLockResourceThrottle>(request->url().host()));
+        std::make_unique<WakeLockResourceThrottle>(request->url().host()));
   }
 
   // The Clear-Site-Data throttle.
@@ -2283,7 +2283,7 @@
     // reasonable.
     handler->OnResponseCompleted(
         request->status(),
-        base::MakeUnique<NullResourceController>(&was_resumed));
+        std::make_unique<NullResourceController>(&was_resumed));
     // TODO(darin): The handler is not ready for us to kill the request. Oops!
     DCHECK(was_resumed);
 
@@ -2534,7 +2534,7 @@
          blocked_loaders_map_.end())
       << "BlockRequestsForRoute called  multiple time for the same RFH";
   blocked_loaders_map_[global_routing_id] =
-      base::MakeUnique<BlockedLoadersList>();
+      std::make_unique<BlockedLoadersList>();
 }
 
 void ResourceDispatcherHostImpl::ResumeBlockedRequestsForRoute(
diff --git a/content/browser/loader/resource_dispatcher_host_unittest.cc b/content/browser/loader/resource_dispatcher_host_unittest.cc
index f851741..be03152 100644
--- a/content/browser/loader/resource_dispatcher_host_unittest.cc
+++ b/content/browser/loader/resource_dispatcher_host_unittest.cc
@@ -763,10 +763,10 @@
     }
 
     if (flags_ != NONE) {
-      throttles->push_back(base::MakeUnique<GenericResourceThrottle>(
+      throttles->push_back(std::make_unique<GenericResourceThrottle>(
           flags_, error_code_for_cancellation_));
       if (create_two_throttles_)
-        throttles->push_back(base::MakeUnique<GenericResourceThrottle>(
+        throttles->push_back(std::make_unique<GenericResourceThrottle>(
             flags_, error_code_for_cancellation_));
     }
   }
diff --git a/content/browser/loader/resource_hints_impl.cc b/content/browser/loader/resource_hints_impl.cc
index 46faed62..a0ab5b2 100644
--- a/content/browser/loader/resource_hints_impl.cc
+++ b/content/browser/loader/resource_hints_impl.cc
@@ -104,8 +104,8 @@
   if (!request_context)
     return net::ERR_CONTEXT_SHUT_DOWN;
 
-  auto request_holder = base::MakeUnique<RequestHolder>();
-  auto addresses = base::MakeUnique<net::AddressList>();
+  auto request_holder = std::make_unique<RequestHolder>();
+  auto addresses = std::make_unique<net::AddressList>();
 
   // Save raw pointers before the unique_ptr is invalidated by base::Passed.
   net::AddressList* raw_addresses = addresses.get();
diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc
index 1050581..e0f12593 100644
--- a/content/browser/loader/resource_loader.cc
+++ b/content/browser/loader/resource_loader.cc
@@ -251,7 +251,7 @@
                          TRACE_EVENT_FLAG_FLOW_OUT);
 
   ScopedDeferral scoped_deferral(this, DEFERRED_START);
-  handler_->OnWillStart(request_->url(), base::MakeUnique<Controller>(this));
+  handler_->OnWillStart(request_->url(), std::make_unique<Controller>(this));
 }
 
 void ResourceLoader::CancelRequest(bool from_renderer) {
@@ -359,7 +359,7 @@
   // |defer| to false instead of calling back into the URLRequest.
   deferred_stage_ = DEFERRED_SYNC;
   handler_->OnRequestRedirected(redirect_info, response.get(),
-                                base::MakeUnique<Controller>(this));
+                                std::make_unique<Controller>(this));
   if (is_deferred()) {
     *defer = true;
     deferred_redirect_url_ = redirect_info.new_url;
@@ -675,7 +675,7 @@
   // defers handling of the response.
   deferred_stage_ = DEFERRED_SYNC;
   handler_->OnResponseStarted(response.get(),
-                              base::MakeUnique<Controller>(this));
+                              std::make_unique<Controller>(this));
   if (is_deferred()) {
     deferred_stage_ = DEFERRED_READ;
   } else {
@@ -691,7 +691,7 @@
   deferred_stage_ = DEFERRED_SYNC;
 
   handler_->OnWillRead(&read_buffer_, &read_buffer_size_,
-                       base::MakeUnique<Controller>(this));
+                       std::make_unique<Controller>(this));
 
   if (is_deferred()) {
     deferred_stage_ = DEFERRED_ON_WILL_READ;
@@ -749,7 +749,7 @@
 
   ScopedDeferral scoped_deferral(
       this, bytes_read > 0 ? DEFERRED_READ : DEFERRED_RESPONSE_COMPLETE);
-  handler_->OnReadCompleted(bytes_read, base::MakeUnique<Controller>(this));
+  handler_->OnReadCompleted(bytes_read, std::make_unique<Controller>(this));
 }
 
 void ResourceLoader::ResponseCompleted() {
@@ -761,7 +761,7 @@
 
   ScopedDeferral scoped_deferral(this, DEFERRED_FINISH);
   handler_->OnResponseCompleted(request_->status(),
-                                base::MakeUnique<Controller>(this));
+                                std::make_unique<Controller>(this));
 }
 
 void ResourceLoader::CallDidFinishLoading() {
diff --git a/content/browser/loader/resource_request_info_impl.cc b/content/browser/loader/resource_request_info_impl.cc
index 07bcaef..9efcf7f0 100644
--- a/content/browser/loader/resource_request_info_impl.cc
+++ b/content/browser/loader/resource_request_info_impl.cc
@@ -322,7 +322,7 @@
   int render_frame_id;
   if (GetAssociatedRenderFrame(&render_process_id, &render_frame_id)) {
     request->SetUserData(URLRequestUserData::kUserDataKey,
-                         base::MakeUnique<URLRequestUserData>(render_process_id,
+                         std::make_unique<URLRequestUserData>(render_process_id,
                                                               render_frame_id));
   }
 }
diff --git a/content/browser/loader/resource_scheduler.cc b/content/browser/loader/resource_scheduler.cc
index 7c7d739df5..9cec9270 100644
--- a/content/browser/loader/resource_scheduler.cc
+++ b/content/browser/loader/resource_scheduler.cc
@@ -255,7 +255,7 @@
         host_port_pair_(net::HostPortPair::FromURL(request->url())),
         weak_ptr_factory_(this) {
     DCHECK(!request_->GetUserData(kUserDataKey));
-    request_->SetUserData(kUserDataKey, base::MakeUnique<UnownedPointer>(this));
+    request_->SetUserData(kUserDataKey, std::make_unique<UnownedPointer>(this));
   }
 
   ~ScheduledResourceRequest() override {
diff --git a/content/browser/loader/resource_scheduler_browsertest.cc b/content/browser/loader/resource_scheduler_browsertest.cc
index f35589b7..2aada926 100644
--- a/content/browser/loader/resource_scheduler_browsertest.cc
+++ b/content/browser/loader/resource_scheduler_browsertest.cc
@@ -48,7 +48,7 @@
         base::FieldTrialList::CreateFieldTrial(kTrialName, kGroupName);
 
     std::unique_ptr<base::FeatureList> feature_list(
-        base::MakeUnique<base::FeatureList>());
+        std::make_unique<base::FeatureList>());
     feature_list->RegisterFieldTrialOverride(
         kMaxDelayableRequestsNetworkOverride,
         base::FeatureList::OVERRIDE_ENABLE_FEATURE, field_trial);
diff --git a/content/browser/loader/resource_scheduler_unittest.cc b/content/browser/loader/resource_scheduler_unittest.cc
index 201969d..4c2a358 100644
--- a/content/browser/loader/resource_scheduler_unittest.cc
+++ b/content/browser/loader/resource_scheduler_unittest.cc
@@ -273,7 +273,7 @@
         NewURLRequestWithChildAndRoute(url, priority, child_id, route_id));
     std::unique_ptr<ResourceThrottle> throttle(scheduler_->ScheduleRequest(
         child_id, route_id, is_async, url_request.get()));
-    auto request = base::MakeUnique<TestRequest>(
+    auto request = std::make_unique<TestRequest>(
         std::move(url_request), std::move(throttle), scheduler());
     request->Start();
     return request;
@@ -394,7 +394,7 @@
     ASSERT_TRUE(field_trial);
 
     std::unique_ptr<base::FeatureList> feature_list(
-        base::MakeUnique<base::FeatureList>());
+        std::make_unique<base::FeatureList>());
     feature_list->RegisterFieldTrialOverride(
         "ThrottleDelayable",
         experiment_enabled ? base::FeatureList::OVERRIDE_ENABLE_FEATURE
@@ -425,7 +425,7 @@
     base::FieldTrial* field_trial =
         base::FieldTrialList::CreateFieldTrial(kTrialName, kGroupName);
     std::unique_ptr<base::FeatureList> feature_list(
-        base::MakeUnique<base::FeatureList>());
+        std::make_unique<base::FeatureList>());
     feature_list->RegisterFieldTrialOverride(
         kThrottleDelayable, base::FeatureList::OVERRIDE_ENABLE_FEATURE,
         field_trial);
@@ -1801,7 +1801,7 @@
   base::FieldTrial* field_trial =
       base::FieldTrialList::CreateFieldTrial(kTrialName, kGroupName);
   std::unique_ptr<base::FeatureList> feature_list(
-      base::MakeUnique<base::FeatureList>());
+      std::make_unique<base::FeatureList>());
   feature_list->RegisterFieldTrialOverride(
       kThrottleDelayable, base::FeatureList::OVERRIDE_ENABLE_FEATURE,
       field_trial);
diff --git a/content/browser/loader/test_resource_handler.cc b/content/browser/loader/test_resource_handler.cc
index 4bcf6e29..459e956 100644
--- a/content/browser/loader/test_resource_handler.cc
+++ b/content/browser/loader/test_resource_handler.cc
@@ -153,7 +153,7 @@
   // nothing may be called synchronously in response to the OnWillRead call.
   std::unique_ptr<ScopedCallDepthTracker> call_depth_tracker;
   if (call_depth_ == 0)
-    call_depth_tracker = base::MakeUnique<ScopedCallDepthTracker>(&call_depth_);
+    call_depth_tracker = std::make_unique<ScopedCallDepthTracker>(&call_depth_);
 
   ++on_will_read_called_;
 
diff --git a/content/browser/loader/upload_data_stream_builder.cc b/content/browser/loader/upload_data_stream_builder.cc
index 63a5956..1d91917 100644
--- a/content/browser/loader/upload_data_stream_builder.cc
+++ b/content/browser/loader/upload_data_stream_builder.cc
@@ -93,10 +93,10 @@
     switch (element.type()) {
       case ResourceRequestBody::Element::TYPE_BYTES:
         element_readers.push_back(
-            base::MakeUnique<BytesElementReader>(body, element));
+            std::make_unique<BytesElementReader>(body, element));
         break;
       case ResourceRequestBody::Element::TYPE_FILE:
-        element_readers.push_back(base::MakeUnique<FileElementReader>(
+        element_readers.push_back(std::make_unique<FileElementReader>(
             body, file_task_runner, element));
         break;
       case ResourceRequestBody::Element::TYPE_FILE_FILESYSTEM:
@@ -104,7 +104,7 @@
         // supplied a FileSystemContext.
         DCHECK(file_system_context);
         element_readers.push_back(
-            base::MakeUnique<content::UploadFileSystemFileElementReader>(
+            std::make_unique<content::UploadFileSystemFileElementReader>(
                 file_system_context, element.filesystem_url(), element.offset(),
                 element.length(), element.expected_modification_time()));
         break;
@@ -114,7 +114,7 @@
         std::unique_ptr<storage::BlobDataHandle> handle =
             blob_context->GetBlobDataFromUUID(element.blob_uuid());
         element_readers.push_back(
-            base::MakeUnique<storage::UploadBlobElementReader>(
+            std::make_unique<storage::UploadBlobElementReader>(
                 std::move(handle), file_system_context));
         break;
       }
@@ -127,7 +127,7 @@
     }
   }
 
-  return base::MakeUnique<net::ElementsUploadDataStream>(
+  return std::make_unique<net::ElementsUploadDataStream>(
       std::move(element_readers), body->identifier());
 }
 
diff --git a/content/browser/manifest/manifest_manager_host.cc b/content/browser/manifest/manifest_manager_host.cc
index 747d015..7fa23f0 100644
--- a/content/browser/manifest/manifest_manager_host.cc
+++ b/content/browser/manifest/manifest_manager_host.cc
@@ -32,7 +32,7 @@
 void ManifestManagerHost::GetManifest(const GetManifestCallback& callback) {
   auto& manifest_manager = GetManifestManager();
   int request_id =
-      callbacks_.Add(base::MakeUnique<GetManifestCallback>(callback));
+      callbacks_.Add(std::make_unique<GetManifestCallback>(callback));
   manifest_manager.RequestManifest(
       base::BindOnce(&ManifestManagerHost::OnRequestManifestResponse,
                      base::Unretained(this), request_id));
diff --git a/content/browser/media/android/browser_media_player_manager.cc b/content/browser/media/android/browser_media_player_manager.cc
index 026c683a..1a5ae47 100644
--- a/content/browser/media/android/browser_media_player_manager.cc
+++ b/content/browser/media/android/browser_media_player_manager.cc
@@ -95,7 +95,7 @@
     case MEDIA_PLAYER_TYPE_REMOTE_ONLY:
     case MEDIA_PLAYER_TYPE_URL: {
       const std::string user_agent = GetContentClient()->GetUserAgent();
-      auto media_player_bridge = base::MakeUnique<MediaPlayerBridge>(
+      auto media_player_bridge = std::make_unique<MediaPlayerBridge>(
           media_player_params.player_id, media_player_params.url,
           media_player_params.site_for_cookies, user_agent, hide_url_log, this,
           base::Bind(&BrowserMediaPlayerManager::OnDecoderResourcesReleased,
diff --git a/content/browser/media/capture/cursor_renderer_aura.cc b/content/browser/media/capture/cursor_renderer_aura.cc
index ca0d7d3..cccd3ad3 100644
--- a/content/browser/media/capture/cursor_renderer_aura.cc
+++ b/content/browser/media/capture/cursor_renderer_aura.cc
@@ -18,7 +18,7 @@
 // static
 std::unique_ptr<CursorRenderer> CursorRenderer::Create(
     gfx::NativeWindow window) {
-  return base::MakeUnique<CursorRendererAura>(window,
+  return std::make_unique<CursorRendererAura>(window,
                                               kCursorEnabledOnMouseMovement);
 }
 
diff --git a/content/browser/media/capture/cursor_renderer_mac.mm b/content/browser/media/capture/cursor_renderer_mac.mm
index 6bb4d13..66f8871 100644
--- a/content/browser/media/capture/cursor_renderer_mac.mm
+++ b/content/browser/media/capture/cursor_renderer_mac.mm
@@ -60,7 +60,7 @@
 
 // static
 std::unique_ptr<CursorRenderer> CursorRenderer::Create(gfx::NativeView view) {
-  return base::MakeUnique<CursorRendererMac>(view);
+  return std::make_unique<CursorRendererMac>(view);
 }
 
 CursorRendererMac::CursorRendererMac(gfx::NativeView view)
diff --git a/content/browser/media/capture/screen_capture_device_android.cc b/content/browser/media/capture/screen_capture_device_android.cc
index acdd5eb..a249ce5 100644
--- a/content/browser/media/capture/screen_capture_device_android.cc
+++ b/content/browser/media/capture/screen_capture_device_android.cc
@@ -11,7 +11,7 @@
 namespace content {
 
 ScreenCaptureDeviceAndroid::ScreenCaptureDeviceAndroid()
-    : core_(base::MakeUnique<media::ScreenCaptureMachineAndroid>()) {}
+    : core_(std::make_unique<media::ScreenCaptureMachineAndroid>()) {}
 
 ScreenCaptureDeviceAndroid::~ScreenCaptureDeviceAndroid() {
   DVLOG(2) << "ScreenCaptureDeviceAndroid@" << this << " destroying.";
diff --git a/content/browser/media/capture/screen_capture_device_android_unittest.cc b/content/browser/media/capture/screen_capture_device_android_unittest.cc
index ee0a89f..c227bd5 100644
--- a/content/browser/media/capture/screen_capture_device_android_unittest.cc
+++ b/content/browser/media/capture/screen_capture_device_android_unittest.cc
@@ -82,14 +82,14 @@
 
 TEST_F(ScreenCaptureDeviceAndroidTest, ConstructionDestruction) {
   std::unique_ptr<media::VideoCaptureDevice> capture_device =
-      base::MakeUnique<ScreenCaptureDeviceAndroid>();
+      std::make_unique<ScreenCaptureDeviceAndroid>();
 }
 
 // Place holder. Currently user input result is required to start
 // MediaProjection, so we can't start a unittest that really starts capture.
 TEST_F(ScreenCaptureDeviceAndroidTest, DISABLED_StartAndStop) {
   std::unique_ptr<media::VideoCaptureDevice> capture_device =
-      base::MakeUnique<ScreenCaptureDeviceAndroid>();
+      std::make_unique<ScreenCaptureDeviceAndroid>();
   ASSERT_TRUE(capture_device);
 
   std::unique_ptr<MockDeviceClient> client(new MockDeviceClient());
diff --git a/content/browser/media/capture/web_contents_video_capture_device_unittest.cc b/content/browser/media/capture/web_contents_video_capture_device_unittest.cc
index 9f2c312..1e21f84 100644
--- a/content/browser/media/capture/web_contents_video_capture_device_unittest.cc
+++ b/content/browser/media/capture/web_contents_video_capture_device_unittest.cc
@@ -187,7 +187,7 @@
                             int32_t main_frame_routing_id,
                             bool swapped_out)
       : TestRenderViewHost(instance,
-                           base::MakeUnique<RenderWidgetHostImpl>(
+                           std::make_unique<RenderWidgetHostImpl>(
                                widget_delegate,
                                instance->GetProcess(),
                                routing_id,
@@ -240,7 +240,7 @@
       : report_callback_(report_callback),
         error_callback_(error_callback) {
     buffer_pool_ = new media::VideoCaptureBufferPoolImpl(
-        base::MakeUnique<media::VideoCaptureBufferTrackerFactoryImpl>(), 2);
+        std::make_unique<media::VideoCaptureBufferTrackerFactoryImpl>(), 2);
   }
   ~StubClient() override {}
 
diff --git a/content/browser/media/media_internals.cc b/content/browser/media/media_internals.cc
index 8f14602..bec48b8 100644
--- a/content/browser/media/media_internals.cc
+++ b/content/browser/media/media_internals.cc
@@ -689,7 +689,7 @@
   video_capture_capabilities_cached_data_.Clear();
 
   for (const auto& device_format_pair : descriptors_and_formats) {
-    auto format_list = base::MakeUnique<base::ListValue>();
+    auto format_list = std::make_unique<base::ListValue>();
     // TODO(nisse): Representing format information as a string, to be
     // parsed by the javascript handler, is brittle. Consider passing
     // a list of mappings instead.
@@ -788,7 +788,7 @@
     } else if (!has_entry) {
       DCHECK_EQ(type, CREATE);
       audio_streams_cached_data_.Set(
-          cache_key, base::MakeUnique<base::Value>(value->Clone()));
+          cache_key, std::make_unique<base::Value>(value->Clone()));
     } else if (type == UPDATE_AND_DELETE) {
       std::unique_ptr<base::Value> out_value;
       CHECK(audio_streams_cached_data_.Remove(cache_key, &out_value));
diff --git a/content/browser/media/media_internals_ui.cc b/content/browser/media/media_internals_ui.cc
index 6e9665a0..c31ba5b 100644
--- a/content/browser/media/media_internals_ui.cc
+++ b/content/browser/media/media_internals_ui.cc
@@ -39,7 +39,7 @@
 
 MediaInternalsUI::MediaInternalsUI(WebUI* web_ui)
     : WebUIController(web_ui) {
-  web_ui->AddMessageHandler(base::MakeUnique<MediaInternalsMessageHandler>());
+  web_ui->AddMessageHandler(std::make_unique<MediaInternalsMessageHandler>());
 
   BrowserContext* browser_context =
       web_ui->GetWebContents()->GetBrowserContext();
diff --git a/content/browser/media/midi_host.cc b/content/browser/media/midi_host.cc
index 85e9f83..5e65574d 100644
--- a/content/browser/media/midi_host.cc
+++ b/content/browser/media/midi_host.cc
@@ -182,7 +182,7 @@
   // Lazy initialization
   if (received_messages_queues_[port] == nullptr)
     received_messages_queues_[port] =
-        base::MakeUnique<midi::MidiMessageQueue>(true);
+        std::make_unique<midi::MidiMessageQueue>(true);
 
   received_messages_queues_[port]->Add(data, length);
   std::vector<uint8_t> message;
diff --git a/content/browser/media/session/media_session_impl_browsertest.cc b/content/browser/media/session/media_session_impl_browsertest.cc
index 37827e1c..5d41afd0 100644
--- a/content/browser/media/session/media_session_impl_browsertest.cc
+++ b/content/browser/media/session/media_session_impl_browsertest.cc
@@ -182,7 +182,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        PlayersFromSameObserverDoNotStopEachOtherInSameSession) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -195,9 +195,9 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        PlayersFromManyObserverDoNotStopEachOtherInSameSession) {
-  auto player_observer_1 = base::MakeUnique<MockMediaSessionPlayerObserver>();
-  auto player_observer_2 = base::MakeUnique<MockMediaSessionPlayerObserver>();
-  auto player_observer_3 = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer_1 = std::make_unique<MockMediaSessionPlayerObserver>();
+  auto player_observer_2 = std::make_unique<MockMediaSessionPlayerObserver>();
+  auto player_observer_3 = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent);
@@ -210,7 +210,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        SuspendedMediaSessionStopsPlayers) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -225,7 +225,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        ResumedMediaSessionRestartsPlayers) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -241,7 +241,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        StartedPlayerOnSuspendedSessionPlaysAlone) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -264,7 +264,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, InitialVolumeMultiplier) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -275,7 +275,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        StartDuckingReducesVolumeMultiplier) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -291,7 +291,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        StopDuckingRecoversVolumeMultiplier) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -311,7 +311,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, StartPlayerGivesFocus) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -320,7 +320,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        SuspendGivesAwayAudioFocus) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -330,7 +330,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, StopGivesAwayAudioFocus) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -340,7 +340,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeGivesBackAudioFocus) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -352,7 +352,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        RemovingLastPlayerDropsAudioFocus) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -368,9 +368,9 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        RemovingLastPlayerFromManyObserversDropsAudioFocus) {
-  auto player_observer_1 = base::MakeUnique<MockMediaSessionPlayerObserver>();
-  auto player_observer_2 = base::MakeUnique<MockMediaSessionPlayerObserver>();
-  auto player_observer_3 = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer_1 = std::make_unique<MockMediaSessionPlayerObserver>();
+  auto player_observer_2 = std::make_unique<MockMediaSessionPlayerObserver>();
+  auto player_observer_3 = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent);
@@ -386,8 +386,8 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        RemovingAllPlayersFromObserversDropsAudioFocus) {
-  auto player_observer_1 = base::MakeUnique<MockMediaSessionPlayerObserver>();
-  auto player_observer_2 = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer_1 = std::make_unique<MockMediaSessionPlayerObserver>();
+  auto player_observer_2 = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent);
@@ -401,7 +401,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumePlayGivesAudioFocus) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -415,7 +415,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        ResumeSuspendAreSentOnlyOncePerPlayers) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -433,7 +433,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        ResumeSuspendAreSentOnlyOncePerPlayersAddedTwice) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -459,7 +459,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        RemovingTheSamePlayerTwiceIsANoop) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -468,7 +468,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, AudioFocusType) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   // Starting a player with a given type should set the session to that type.
   StartNewPlayer(player_observer.get(), media::MediaContentType::Transient);
@@ -520,7 +520,7 @@
   EXPECT_CALL(*mock_media_session_observer(),
               MediaSessionStateChanged(true, false));
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   // Starting a player with a content type should show the media controls.
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -534,7 +534,7 @@
   EXPECT_CALL(*mock_media_session_observer(),
               MediaSessionStateChanged(false, false));
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   // Starting a player with a transient type should not show the media controls.
   StartNewPlayer(player_observer.get(), media::MediaContentType::Transient);
@@ -550,7 +550,7 @@
               MediaSessionStateChanged(false, true))
       .After(showControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -565,7 +565,7 @@
   EXPECT_CALL(*mock_media_session_observer(),
               MediaSessionStateChanged(true, false));
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -584,7 +584,7 @@
               MediaSessionStateChanged(true, false))
       .After(dontShowControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Transient);
 
@@ -600,7 +600,7 @@
   EXPECT_CALL(*mock_media_session_observer(),
               MediaSessionStateChanged(true, false));
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Transient);
@@ -621,7 +621,7 @@
               MediaSessionStateChanged(false, true))
       .After(showControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -645,7 +645,7 @@
               MediaSessionStateChanged(false, true))
       .After(showControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -664,7 +664,7 @@
               MediaSessionStateChanged(true, true))
       .After(showControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -688,7 +688,7 @@
               MediaSessionStateChanged(true, true))
       .After(showControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -709,7 +709,7 @@
               MediaSessionStateChanged(true, false))
       .After(pauseControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   SystemSuspend(true);
@@ -727,7 +727,7 @@
               MediaSessionStateChanged(false, true))
       .After(showControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -748,7 +748,7 @@
               MediaSessionStateChanged(false, true))
       .After(pauseControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -769,7 +769,7 @@
               MediaSessionStateChanged(false, false))
       .After(pauseControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   SystemSuspend(true);
@@ -793,7 +793,7 @@
               MediaSessionStateChanged(true, false))
       .After(pauseControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   SystemSuspend(true);
@@ -816,7 +816,7 @@
               MediaSessionStateChanged(true, false))
       .After(pauseControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   SystemSuspend(true);
@@ -836,7 +836,7 @@
               MediaSessionStateChanged(true, true))
       .After(showControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   UISuspend();
@@ -856,7 +856,7 @@
               MediaSessionStateChanged(true, false))
       .After(pauseControls);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
   UISuspend();
@@ -871,7 +871,7 @@
   EXPECT_CALL(*mock_media_session_observer(),
               MediaSessionStateChanged(false, false));
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot);
 
@@ -898,7 +898,7 @@
       .Times(0)
       .After(expect_2);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot);
   RemovePlayer(player_observer.get(), 0);
@@ -916,7 +916,7 @@
               MediaSessionStateChanged(true, false))
       .After(uncontrollable);
 
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Transient);
@@ -930,7 +930,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        DontSuspendWhenOneShotIsPresent) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot);
   StartNewPlayer(player_observer.get(), media::MediaContentType::Transient);
@@ -946,7 +946,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        DontResumeBySystemUISuspendedSessions) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -961,7 +961,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        AllowUIResumeForSystemSuspend) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -975,7 +975,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeSuspendFromUI) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -989,7 +989,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeSuspendFromSystem) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
@@ -1003,7 +1003,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, OneShotTakesGainFocus) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   EXPECT_CALL(
       *mock_audio_focus_delegate(),
@@ -1019,7 +1019,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, RemovingOneShotDropsFocus) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   EXPECT_CALL(*mock_audio_focus_delegate(), AbandonAudioFocus());
   StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot);
@@ -1028,7 +1028,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        RemovingOneShotWhileStillHavingOtherPlayersKeepsFocus) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   EXPECT_CALL(*mock_audio_focus_delegate(), AbandonAudioFocus())
       .Times(1);  // Called in TearDown
@@ -1040,7 +1040,7 @@
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        ActualPlaybackStateWhilePlayerPaused) {
   EnsureMediaSessionService();
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>(
       shell()->web_contents()->GetMainFrame());
 
   ::testing::Sequence s;
@@ -1074,7 +1074,7 @@
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        ActualPlaybackStateWhilePlayerPlaying) {
   EnsureMediaSessionService();
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>(
       shell()->web_contents()->GetMainFrame());
   ::testing::Sequence s;
   EXPECT_CALL(*mock_media_session_observer(),
@@ -1103,7 +1103,7 @@
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        ActualPlaybackStateWhilePlayerRemoved) {
   EnsureMediaSessionService();
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>(
       shell()->web_contents()->GetMainFrame());
 
   ::testing::Sequence s;
@@ -1128,7 +1128,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        UMA_Suspended_SystemTransient) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
   base::HistogramTester tester;
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -1144,7 +1144,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        UMA_Suspended_SystemPermantent) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
   base::HistogramTester tester;
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -1159,7 +1159,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_UI) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
 
   base::HistogramTester tester;
 
@@ -1175,7 +1175,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_Multiple) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
   base::HistogramTester tester;
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -1200,7 +1200,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_Crossing) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
   base::HistogramTester tester;
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -1224,7 +1224,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_Stop) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
   base::HistogramTester tester;
 
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
@@ -1253,7 +1253,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        UMA_ActiveTime_SimpleActivation) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
   base::HistogramTester tester;
 
   MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
@@ -1275,7 +1275,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        UMA_ActiveTime_ActivationWithUISuspension) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
   base::HistogramTester tester;
 
   MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
@@ -1303,7 +1303,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        UMA_ActiveTime_ActivationWithSystemSuspension) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
   base::HistogramTester tester;
 
   MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
@@ -1331,7 +1331,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        UMA_ActiveTime_ActivateSuspendedButNotStopped) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
   base::HistogramTester tester;
 
   MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
@@ -1363,7 +1363,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        UMA_ActiveTime_ActivateSuspendStopTwice) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
   base::HistogramTester tester;
 
   MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
@@ -1391,7 +1391,7 @@
 
 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest,
                        UMA_ActiveTime_MultipleActivations) {
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>();
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>();
   base::HistogramTester tester;
 
   MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
@@ -1445,7 +1445,7 @@
       mock_media_session_service_->actions();
 
   // Make sure the service is routed,
-  auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(
+  auto player_observer = std::make_unique<MockMediaSessionPlayerObserver>(
       shell()->web_contents()->GetMainFrame());
   StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent);
 
diff --git a/content/browser/media/session/media_session_impl_service_routing_unittest.cc b/content/browser/media/session/media_session_impl_service_routing_unittest.cc
index d928c9a2..dbc1f2ef 100644
--- a/content/browser/media/session/media_session_impl_service_routing_unittest.cc
+++ b/content/browser/media/session/media_session_impl_service_routing_unittest.cc
@@ -108,8 +108,8 @@
 
   void CreateServiceForFrame(TestRenderFrameHost* frame) {
     services_[frame] =
-        base::MakeUnique<NiceMock<MockMediaSessionServiceImpl>>(frame);
-    clients_[frame] = base::MakeUnique<NiceMock<MockMediaSessionClient>>();
+        std::make_unique<NiceMock<MockMediaSessionServiceImpl>>(frame);
+    clients_[frame] = std::make_unique<NiceMock<MockMediaSessionClient>>();
     services_[frame]->SetClient(clients_[frame]->CreateInterfacePtrAndBind());
   }
 
@@ -125,7 +125,7 @@
 
   void StartPlayerForFrame(TestRenderFrameHost* frame) {
     players_[frame] =
-        base::MakeUnique<NiceMock<MockMediaSessionPlayerObserver>>(frame);
+        std::make_unique<NiceMock<MockMediaSessionPlayerObserver>>(frame);
     MediaSessionImpl::Get(contents())
         ->AddPlayer(players_[frame].get(), kPlayerId,
                     media::MediaContentType::Persistent);
diff --git a/content/browser/media/url_provision_fetcher.cc b/content/browser/media/url_provision_fetcher.cc
index 935fe0a..8cf4c2c 100644
--- a/content/browser/media/url_provision_fetcher.cc
+++ b/content/browser/media/url_provision_fetcher.cc
@@ -105,7 +105,7 @@
 std::unique_ptr<media::ProvisionFetcher> CreateProvisionFetcher(
     net::URLRequestContextGetter* context_getter) {
   DCHECK(context_getter);
-  return base::MakeUnique<URLProvisionFetcher>(context_getter);
+  return std::make_unique<URLProvisionFetcher>(context_getter);
 }
 
 }  // namespace content
diff --git a/content/browser/memory/memory_coordinator_impl.cc b/content/browser/memory/memory_coordinator_impl.cc
index 347a3f0..9ca628e3 100644
--- a/content/browser/memory/memory_coordinator_impl.cc
+++ b/content/browser/memory/memory_coordinator_impl.cc
@@ -128,12 +128,12 @@
     scoped_refptr<base::SingleThreadTaskRunner> task_runner,
     std::unique_ptr<MemoryMonitor> memory_monitor)
     : task_runner_(task_runner),
-      policy_(base::MakeUnique<MemoryCoordinatorDefaultPolicy>(this)),
+      policy_(std::make_unique<MemoryCoordinatorDefaultPolicy>(this)),
       delegate_(GetContentClient()->browser()->GetMemoryCoordinatorDelegate()),
       memory_monitor_(std::move(memory_monitor)),
       condition_observer_(
-          base::MakeUnique<MemoryConditionObserver>(this, task_runner)),
-      tick_clock_(base::MakeUnique<base::DefaultTickClock>()),
+          std::make_unique<MemoryConditionObserver>(this, task_runner)),
+      tick_clock_(std::make_unique<base::DefaultTickClock>()),
       minimum_state_transition_period_(base::TimeDelta::FromSeconds(
           kDefaultMinimumTransitionPeriodSeconds)) {
   DCHECK(memory_monitor_.get());
diff --git a/content/browser/memory/memory_coordinator_impl_unittest.cc b/content/browser/memory/memory_coordinator_impl_unittest.cc
index f44c9fb..43f703e 100644
--- a/content/browser/memory/memory_coordinator_impl_unittest.cc
+++ b/content/browser/memory/memory_coordinator_impl_unittest.cc
@@ -155,9 +155,9 @@
   TestMemoryCoordinatorImpl(
       scoped_refptr<base::TestMockTimeTaskRunner> task_runner)
       : MemoryCoordinatorImpl(task_runner,
-                              base::MakeUnique<MockMemoryMonitor>()) {
-    SetDelegateForTesting(base::MakeUnique<TestMemoryCoordinatorDelegate>());
-    SetPolicyForTesting(base::MakeUnique<MockMemoryCoordinatorPolicy>(this));
+                              std::make_unique<MockMemoryMonitor>()) {
+    SetDelegateForTesting(std::make_unique<TestMemoryCoordinatorDelegate>());
+    SetPolicyForTesting(std::make_unique<MockMemoryCoordinatorPolicy>(this));
     SetTickClockForTesting(task_runner->GetMockTickClock());
   }
 
@@ -172,7 +172,7 @@
     children_.push_back(std::unique_ptr<Child>(new Child(&cmc_ptr)));
     AddChildForTesting(process_id, std::move(cmc_ptr));
     render_process_hosts_[process_id] =
-        base::MakeUnique<MockRenderProcessHost>(&browser_context_);
+        std::make_unique<MockRenderProcessHost>(&browser_context_);
     return &children_.back()->cmc;
   }
 
@@ -448,9 +448,9 @@
   base::Process process1 = SpawnChild("process1");
   base::Process process2 = SpawnChild("process2");
   coordinator_->GetMockRenderProcessHost(1)->SetProcessHandle(
-      base::MakeUnique<base::ProcessHandle>(process1.Handle()));
+      std::make_unique<base::ProcessHandle>(process1.Handle()));
   coordinator_->GetMockRenderProcessHost(2)->SetProcessHandle(
-      base::MakeUnique<base::ProcessHandle>(process2.Handle()));
+      std::make_unique<base::ProcessHandle>(process2.Handle()));
 
   EXPECT_EQ(base::MemoryState::NORMAL,
             coordinator_->GetStateForProcess(process1.Handle()));
diff --git a/content/browser/memory/memory_monitor_android.cc b/content/browser/memory/memory_monitor_android.cc
index 93a0e70..447b187e 100644
--- a/content/browser/memory/memory_monitor_android.cc
+++ b/content/browser/memory/memory_monitor_android.cc
@@ -88,7 +88,7 @@
   DCHECK(delegate_.get());
   RegisterComponentCallbacks();
   application_state_listener_ =
-      base::MakeUnique<base::android::ApplicationStatusListener>(
+      std::make_unique<base::android::ApplicationStatusListener>(
           base::Bind(&MemoryMonitorAndroid::OnApplicationStateChange,
                      base::Unretained(this)));
 }
diff --git a/content/browser/memory/memory_monitor_chromeos.cc b/content/browser/memory/memory_monitor_chromeos.cc
index 36d8ff8..b0315ece 100644
--- a/content/browser/memory/memory_monitor_chromeos.cc
+++ b/content/browser/memory/memory_monitor_chromeos.cc
@@ -44,7 +44,7 @@
 // static
 std::unique_ptr<MemoryMonitorChromeOS> MemoryMonitorChromeOS::Create(
     MemoryMonitorDelegate* delegate) {
-  return base::MakeUnique<MemoryMonitorChromeOS>(delegate);
+  return std::make_unique<MemoryMonitorChromeOS>(delegate);
 }
 
 // Implementation of factory function defined in memory_monitor.h.
diff --git a/content/browser/memory/memory_monitor_linux.cc b/content/browser/memory/memory_monitor_linux.cc
index 68421c8..2901e7f4 100644
--- a/content/browser/memory/memory_monitor_linux.cc
+++ b/content/browser/memory/memory_monitor_linux.cc
@@ -43,7 +43,7 @@
 // static
 std::unique_ptr<MemoryMonitorLinux> MemoryMonitorLinux::Create(
     MemoryMonitorDelegate* delegate) {
-  return base::MakeUnique<MemoryMonitorLinux>(delegate);
+  return std::make_unique<MemoryMonitorLinux>(delegate);
 }
 
 // Implementation of factory function defined in memory_monitor.h.
diff --git a/content/browser/mime_registry_impl.cc b/content/browser/mime_registry_impl.cc
index b6b853c..e5b26a66 100644
--- a/content/browser/mime_registry_impl.cc
+++ b/content/browser/mime_registry_impl.cc
@@ -19,7 +19,7 @@
 // static
 void MimeRegistryImpl::Create(
     blink::mojom::MimeRegistryRequest request) {
-  mojo::MakeStrongBinding(base::MakeUnique<MimeRegistryImpl>(),
+  mojo::MakeStrongBinding(std::make_unique<MimeRegistryImpl>(),
                           std::move(request));
 }
 
diff --git a/content/browser/net/network_quality_observer_impl.cc b/content/browser/net/network_quality_observer_impl.cc
index 1d871bc7..879df30 100644
--- a/content/browser/net/network_quality_observer_impl.cc
+++ b/content/browser/net/network_quality_observer_impl.cc
@@ -140,7 +140,7 @@
   network_quality_estimator_->AddRTTAndThroughputEstimatesObserver(this);
   network_quality_estimator_->AddEffectiveConnectionTypeObserver(this);
 
-  ui_thread_observer_ = base::MakeUnique<UiThreadObserver>();
+  ui_thread_observer_ = std::make_unique<UiThreadObserver>();
   BrowserThread::PostTask(
       BrowserThread::UI, FROM_HERE,
       base::BindOnce(&UiThreadObserver::InitOnUIThread,
@@ -217,7 +217,7 @@
 std::unique_ptr<net::RTTAndThroughputEstimatesObserver>
 CreateNetworkQualityObserver(
     net::NetworkQualityEstimator* network_quality_estimator) {
-  return base::MakeUnique<NetworkQualityObserverImpl>(
+  return std::make_unique<NetworkQualityObserverImpl>(
       network_quality_estimator);
 }
 
diff --git a/content/browser/net_info_browsertest.cc b/content/browser/net_info_browsertest.cc
index 8a4fcbc..5b5ffa72 100644
--- a/content/browser/net_info_browsertest.cc
+++ b/content/browser/net_info_browsertest.cc
@@ -221,7 +221,7 @@
   base::HistogramTester histogram_tester;
   net::TestNetworkQualityEstimator estimator(
       nullptr, std::map<std::string, std::string>(), false, false, true,
-      base::MakeUnique<net::BoundTestNetLog>());
+      std::make_unique<net::BoundTestNetLog>());
   NetworkQualityObserverImpl impl(&estimator);
 
   EXPECT_TRUE(embedded_test_server()->Start());
@@ -241,7 +241,7 @@
   base::HistogramTester histogram_tester;
   net::TestNetworkQualityEstimator estimator(
       nullptr, std::map<std::string, std::string>(), false, false, true,
-      base::MakeUnique<net::BoundTestNetLog>());
+      std::make_unique<net::BoundTestNetLog>());
   NetworkQualityObserverImpl impl(&estimator);
 
   net::nqe::internal::NetworkQuality network_quality_1(
@@ -283,7 +283,7 @@
   base::HistogramTester histogram_tester;
   net::TestNetworkQualityEstimator estimator(
       nullptr, std::map<std::string, std::string>(), false, false, true,
-      base::MakeUnique<net::BoundTestNetLog>());
+      std::make_unique<net::BoundTestNetLog>());
   NetworkQualityObserverImpl impl(&estimator);
 
   net::nqe::internal::NetworkQuality network_quality_1(
@@ -321,7 +321,7 @@
   net::TestNetworkQualityEstimator estimator(
       std::unique_ptr<net::ExternalEstimateProvider>(),
       std::map<std::string, std::string>(), false, false, true,
-      base::MakeUnique<net::BoundTestNetLog>());
+      std::make_unique<net::BoundTestNetLog>());
   NetworkQualityObserverImpl impl(&estimator);
 
   // Verify that the network quality is rounded properly.
@@ -366,7 +366,7 @@
   net::TestNetworkQualityEstimator estimator(
       std::unique_ptr<net::ExternalEstimateProvider>(),
       std::map<std::string, std::string>(), false, false, true,
-      base::MakeUnique<net::BoundTestNetLog>());
+      std::make_unique<net::BoundTestNetLog>());
   NetworkQualityObserverImpl impl(&estimator);
 
   net::nqe::internal::NetworkQuality network_quality(
@@ -388,7 +388,7 @@
   net::TestNetworkQualityEstimator estimator(
       std::unique_ptr<net::ExternalEstimateProvider>(),
       std::map<std::string, std::string>(), false, false, true,
-      base::MakeUnique<net::BoundTestNetLog>());
+      std::make_unique<net::BoundTestNetLog>());
   NetworkQualityObserverImpl impl(&estimator);
 
   net::nqe::internal::NetworkQuality network_quality(
@@ -449,7 +449,7 @@
   base::HistogramTester histogram_tester;
   net::TestNetworkQualityEstimator estimator(
       nullptr, std::map<std::string, std::string>(), false, false, true,
-      base::MakeUnique<net::BoundTestNetLog>());
+      std::make_unique<net::BoundTestNetLog>());
   NetworkQualityObserverImpl impl(&estimator);
 
   // Verify that the network quality is rounded properly.
diff --git a/content/browser/payments/payment_app_context_impl.cc b/content/browser/payments/payment_app_context_impl.cc
index de6c443..8a2f059 100644
--- a/content/browser/payments/payment_app_context_impl.cc
+++ b/content/browser/payments/payment_app_context_impl.cc
@@ -70,7 +70,7 @@
     scoped_refptr<ServiceWorkerContextWrapper> service_worker_context) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   payment_app_database_ =
-      base::MakeUnique<PaymentAppDatabase>(service_worker_context);
+      std::make_unique<PaymentAppDatabase>(service_worker_context);
 }
 
 void PaymentAppContextImpl::CreatePaymentManagerOnIO(
diff --git a/content/browser/payments/payment_app_database.cc b/content/browser/payments/payment_app_database.cc
index 037640ea..f9c9b1e 100644
--- a/content/browser/payments/payment_app_database.cc
+++ b/content/browser/payments/payment_app_database.cc
@@ -93,7 +93,7 @@
   if (!app_proto.ParseFromString(input))
     return std::unique_ptr<StoredPaymentApp>();
 
-  std::unique_ptr<StoredPaymentApp> app = base::MakeUnique<StoredPaymentApp>();
+  std::unique_ptr<StoredPaymentApp> app = std::make_unique<StoredPaymentApp>();
   app->registration_id = app_proto.registration_id();
   app->scope = GURL(app_proto.scope());
   app->name = app_proto.name();
@@ -113,7 +113,7 @@
     gfx::Image icon_image = gfx::Image::CreateFrom1xPNGBytes(
         reinterpret_cast<const unsigned char*>(icon_raw_data.data()),
         icon_raw_data.size());
-    app->icon = base::MakeUnique<SkBitmap>(icon_image.AsBitmap());
+    app->icon = std::make_unique<SkBitmap>(icon_image.AsBitmap());
   }
 
   return app;
diff --git a/content/browser/payments/payment_app_info_fetcher.cc b/content/browser/payments/payment_app_info_fetcher.cc
index 6a3e0050..2fc47a1 100644
--- a/content/browser/payments/payment_app_info_fetcher.cc
+++ b/content/browser/payments/payment_app_info_fetcher.cc
@@ -22,7 +22,7 @@
 PaymentAppInfoFetcher::PaymentAppInfoFetcher()
     : context_process_id_(-1),
       context_frame_id_(-1),
-      fetched_payment_app_info_(base::MakeUnique<PaymentAppInfo>()) {}
+      fetched_payment_app_info_(std::make_unique<PaymentAppInfo>()) {}
 PaymentAppInfoFetcher::~PaymentAppInfoFetcher() {}
 
 void PaymentAppInfoFetcher::Start(
diff --git a/content/browser/permissions/permission_service_context.cc b/content/browser/permissions/permission_service_context.cc
index 2b42bcf..e4f237e 100644
--- a/content/browser/permissions/permission_service_context.cc
+++ b/content/browser/permissions/permission_service_context.cc
@@ -72,7 +72,7 @@
 
 void PermissionServiceContext::CreateService(
     blink::mojom::PermissionServiceRequest request) {
-  services_.AddBinding(base::MakeUnique<PermissionServiceImpl>(this),
+  services_.AddBinding(std::make_unique<PermissionServiceImpl>(this),
                        std::move(request));
 }
 
@@ -85,7 +85,7 @@
     return;
 
   auto subscription =
-      base::MakeUnique<PermissionSubscription>(this, std::move(observer));
+      std::make_unique<PermissionSubscription>(this, std::move(observer));
   GURL requesting_origin(origin.Serialize());
   GURL embedding_origin = GetEmbeddingOrigin();
   int subscription_id =
diff --git a/content/browser/permissions/permission_service_impl.cc b/content/browser/permissions/permission_service_impl.cc
index f306f7d..42dfa46 100644
--- a/content/browser/permissions/permission_service_impl.cc
+++ b/content/browser/permissions/permission_service_impl.cc
@@ -58,6 +58,10 @@
       return PermissionType::SENSORS;
     case PermissionName::ACCESSIBILITY_EVENTS:
       return PermissionType::ACCESSIBILITY_EVENTS;
+    case PermissionName::CLIPBOARD_READ:
+    case PermissionName::CLIPBOARD_WRITE:
+      NOTIMPLEMENTED();
+      break;
   }
 
   NOTREACHED();
@@ -118,7 +122,7 @@
   std::move(callback).Run(vector[0]);
 }
 
-} // anonymous namespace
+}  // anonymous namespace
 
 class PermissionServiceImpl::PendingRequest {
  public:
@@ -233,7 +237,7 @@
     types[i] = PermissionDescriptorToPermissionType(permissions[i]);
 
   std::unique_ptr<PendingRequest> pending_request =
-      base::MakeUnique<PendingRequest>(types, std::move(callback));
+      std::make_unique<PendingRequest>(types, std::move(callback));
   std::vector<PermissionType> request_types;
   for (size_t i = 0; i < types.size(); ++i) {
     // Check feature policy.
diff --git a/content/browser/permissions/permission_service_impl_unittest.cc b/content/browser/permissions/permission_service_impl_unittest.cc
index 33c3eb2..27b27d9 100644
--- a/content/browser/permissions/permission_service_impl_unittest.cc
+++ b/content/browser/permissions/permission_service_impl_unittest.cc
@@ -65,7 +65,7 @@
   void SetUp() override {
     RenderViewHostTestHarness::SetUp();
     static_cast<TestBrowserContext*>(browser_context())
-        ->SetPermissionManager(base::MakeUnique<TestPermissionManager>());
+        ->SetPermissionManager(std::make_unique<TestPermissionManager>());
     NavigateAndCommit(origin_.GetURL());
     service_context_.reset(new PermissionServiceContext(main_rfh()));
     service_impl_.reset(new PermissionServiceImpl(service_context_.get()));
diff --git a/content/browser/plugin_private_storage_helper.cc b/content/browser/plugin_private_storage_helper.cc
index 2049f37..12ee66f 100644
--- a/content/browser/plugin_private_storage_helper.cc
+++ b/content/browser/plugin_private_storage_helper.cc
@@ -146,7 +146,7 @@
   std::string root = storage::GetIsolatedFileSystemRootURIString(
       origin_, fsid_, ppapi::kPluginPrivateRootName);
   std::unique_ptr<storage::FileSystemOperationContext> operation_context =
-      base::MakeUnique<storage::FileSystemOperationContext>(
+      std::make_unique<storage::FileSystemOperationContext>(
           filesystem_context_);
   file_util->ReadDirectory(
       std::move(operation_context), filesystem_context_->CrackURL(GURL(root)),
@@ -185,7 +185,7 @@
       DCHECK(!file.is_directory);  // Nested directories not implemented.
 
       std::unique_ptr<storage::FileSystemOperationContext> operation_context =
-          base::MakeUnique<storage::FileSystemOperationContext>(
+          std::make_unique<storage::FileSystemOperationContext>(
               filesystem_context_);
       storage::FileSystemURL file_url = filesystem_context_->CrackURL(
           GURL(root + StringTypeToString(file.name)));
diff --git a/content/browser/ppapi_plugin_process_host.cc b/content/browser/ppapi_plugin_process_host.cc
index 8e981a3..2a10afaf 100644
--- a/content/browser/ppapi_plugin_process_host.cc
+++ b/content/browser/ppapi_plugin_process_host.cc
@@ -365,7 +365,7 @@
   }
 
   std::unique_ptr<base::CommandLine> cmd_line =
-      base::MakeUnique<base::CommandLine>(exe_path);
+      std::make_unique<base::CommandLine>(exe_path);
   cmd_line->AppendSwitchASCII(switches::kProcessType,
                               is_broker_ ? switches::kPpapiBrokerProcess
                                          : switches::kPpapiPluginProcess);
@@ -429,7 +429,7 @@
   // we are not using a plugin launcher - having a plugin launcher means we need
   // to use another process instead of just forking the zygote.
   process_->Launch(
-      base::MakeUnique<PpapiPluginSandboxedProcessLauncherDelegate>(is_broker_),
+      std::make_unique<PpapiPluginSandboxedProcessLauncherDelegate>(is_broker_),
       std::move(cmd_line), true);
   return true;
 }
diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc
index c379951..2b1c63d 100644
--- a/content/browser/renderer_host/compositor_impl_android.cc
+++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -732,7 +732,7 @@
     return;
 
   // TODO(crbug.com/582558): Need to match GL and implement DidSwapBuffers.
-  auto vulkan_surface = base::MakeUnique<VulkanOutputSurface>(
+  auto vulkan_surface = std::make_unique<VulkanOutputSurface>(
       vulkan_context_provider, base::ThreadTaskRunnerHandle::Get());
   if (!vulkan_surface->Initialize(window_))
     return;
@@ -797,7 +797,7 @@
   DidSuccessfullyInitializeContext();
 
   // Unretained is safe this owns viz::Display which owns OutputSurface.
-  auto display_output_surface = base::MakeUnique<AndroidOutputSurface>(
+  auto display_output_surface = std::make_unique<AndroidOutputSurface>(
       context_provider,
       base::Bind(&CompositorImpl::DidSwapBuffers, base::Unretained(this)));
   InitializeDisplay(std::move(display_output_surface), nullptr,
@@ -820,7 +820,7 @@
 
   viz::FrameSinkManagerImpl* manager = GetFrameSinkManager();
   auto* task_runner = base::ThreadTaskRunnerHandle::Get().get();
-  auto scheduler = base::MakeUnique<viz::DisplayScheduler>(
+  auto scheduler = std::make_unique<viz::DisplayScheduler>(
       root_window_->GetBeginFrameSource(), task_runner,
       display_output_surface->capabilities().max_frames_pending);
 
@@ -830,18 +830,18 @@
   auto* gpu_memory_buffer_manager = BrowserMainLoop::GetInstance()
                                         ->gpu_channel_establish_factory()
                                         ->GetGpuMemoryBufferManager();
-  display_ = base::MakeUnique<viz::Display>(
+  display_ = std::make_unique<viz::Display>(
       viz::ServerSharedBitmapManager::current(), gpu_memory_buffer_manager,
       renderer_settings, frame_sink_id_, std::move(display_output_surface),
       std::move(scheduler),
-      base::MakeUnique<viz::TextureMailboxDeleter>(task_runner));
+      std::make_unique<viz::TextureMailboxDeleter>(task_runner));
 
   auto layer_tree_frame_sink =
       vulkan_context_provider
-          ? base::MakeUnique<viz::DirectLayerTreeFrameSink>(
+          ? std::make_unique<viz::DirectLayerTreeFrameSink>(
                 frame_sink_id_, GetHostFrameSinkManager(), manager,
                 display_.get(), vulkan_context_provider)
-          : base::MakeUnique<viz::DirectLayerTreeFrameSink>(
+          : std::make_unique<viz::DirectLayerTreeFrameSink>(
                 frame_sink_id_, GetHostFrameSinkManager(), manager,
                 display_.get(), context_provider,
                 nullptr /* worker_context_provider */,
diff --git a/content/browser/renderer_host/cursor_manager_unittest.cc b/content/browser/renderer_host/cursor_manager_unittest.cc
index 86ed91c..5eb79bc 100644
--- a/content/browser/renderer_host/cursor_manager_unittest.cc
+++ b/content/browser/renderer_host/cursor_manager_unittest.cc
@@ -53,7 +53,7 @@
                                       int32_t routing_id) {
     mojom::WidgetPtr widget;
     std::unique_ptr<MockWidgetImpl> widget_impl =
-        base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget));
+        std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget));
 
     return new MockRenderWidgetHost(delegate, process, routing_id,
                                     std::move(widget_impl), std::move(widget));
diff --git a/content/browser/renderer_host/delegated_frame_host_client_aura.cc b/content/browser/renderer_host/delegated_frame_host_client_aura.cc
index e68b18a..71804db 100644
--- a/content/browser/renderer_host/delegated_frame_host_client_aura.cc
+++ b/content/browser/renderer_host/delegated_frame_host_client_aura.cc
@@ -70,7 +70,7 @@
   host->dispatcher()->HoldPointerMoves();
 
   gfx::Size desired_size = render_widget_host_view_->window_->bounds().size();
-  return base::MakeUnique<CompositorResizeLock>(this, desired_size);
+  return std::make_unique<CompositorResizeLock>(this, desired_size);
 }
 
 viz::LocalSurfaceId DelegatedFrameHostClientAura::GetLocalSurfaceId() const {
diff --git a/content/browser/renderer_host/file_utilities_host_impl.cc b/content/browser/renderer_host/file_utilities_host_impl.cc
index d9a01b1..e3b08f3 100644
--- a/content/browser/renderer_host/file_utilities_host_impl.cc
+++ b/content/browser/renderer_host/file_utilities_host_impl.cc
@@ -21,7 +21,7 @@
 void FileUtilitiesHostImpl::Create(
     int process_id,
     content::mojom::FileUtilitiesHostRequest request) {
-  mojo::MakeStrongBinding(base::MakeUnique<FileUtilitiesHostImpl>(process_id),
+  mojo::MakeStrongBinding(std::make_unique<FileUtilitiesHostImpl>(process_id),
                           std::move(request));
 }
 
diff --git a/content/browser/renderer_host/input/input_router_impl.cc b/content/browser/renderer_host/input/input_router_impl.cc
index 73cdc89..d6dc10a2 100644
--- a/content/browser/renderer_host/input/input_router_impl.cc
+++ b/content/browser/renderer_host/input/input_router_impl.cc
@@ -382,7 +382,7 @@
     return;
   }
 
-  std::unique_ptr<InputEvent> event = base::MakeUnique<InputEvent>(
+  std::unique_ptr<InputEvent> event = std::make_unique<InputEvent>(
       ScaleEvent(input_event, device_scale_factor_), latency_info);
   if (WebInputEventTraits::ShouldBlockEventStream(
           input_event, wheel_scroll_latching_enabled_)) {
diff --git a/content/browser/renderer_host/input/legacy_ipc_widget_input_handler.cc b/content/browser/renderer_host/input/legacy_ipc_widget_input_handler.cc
index e68cd6c..79f49e0e4 100644
--- a/content/browser/renderer_host/input/legacy_ipc_widget_input_handler.cc
+++ b/content/browser/renderer_host/input/legacy_ipc_widget_input_handler.cc
@@ -37,7 +37,7 @@
 LegacyIPCWidgetInputHandler::~LegacyIPCWidgetInputHandler() {}
 
 void LegacyIPCWidgetInputHandler::SetFocus(bool focused) {
-  SendInput(base::MakeUnique<InputMsg_SetFocus>(input_router_->routing_id(),
+  SendInput(std::make_unique<InputMsg_SetFocus>(input_router_->routing_id(),
                                                 focused));
 }
 
@@ -45,12 +45,12 @@
 
 void LegacyIPCWidgetInputHandler::SetEditCommandsForNextKeyEvent(
     const std::vector<EditCommand>& commands) {
-  SendInput(base::MakeUnique<InputMsg_SetEditCommandsForNextKeyEvent>(
+  SendInput(std::make_unique<InputMsg_SetEditCommandsForNextKeyEvent>(
       input_router_->routing_id(), commands));
 }
 
 void LegacyIPCWidgetInputHandler::CursorVisibilityChanged(bool visible) {
-  SendInput(base::MakeUnique<InputMsg_CursorVisibilityChange>(
+  SendInput(std::make_unique<InputMsg_CursorVisibilityChange>(
       input_router_->routing_id(), visible));
 }
 
@@ -62,7 +62,7 @@
     int32_t end) {
   std::vector<blink::WebImeTextSpan> ime_text_spans =
       ConvertToBlinkImeTextSpan(ui_ime_text_spans);
-  SendInput(base::MakeUnique<InputMsg_ImeSetComposition>(
+  SendInput(std::make_unique<InputMsg_ImeSetComposition>(
       input_router_->routing_id(), text, ime_text_spans, range, start, end));
 }
 
@@ -73,18 +73,18 @@
     int32_t relative_cursor_position) {
   std::vector<blink::WebImeTextSpan> ime_text_spans =
       ConvertToBlinkImeTextSpan(ui_ime_text_spans);
-  SendInput(base::MakeUnique<InputMsg_ImeCommitText>(
+  SendInput(std::make_unique<InputMsg_ImeCommitText>(
       input_router_->routing_id(), text, ime_text_spans, range,
       relative_cursor_position));
 }
 
 void LegacyIPCWidgetInputHandler::ImeFinishComposingText(bool keep_selection) {
-  SendInput(base::MakeUnique<InputMsg_ImeFinishComposingText>(
+  SendInput(std::make_unique<InputMsg_ImeFinishComposingText>(
       input_router_->routing_id(), keep_selection));
 }
 void LegacyIPCWidgetInputHandler::RequestTextInputStateUpdate() {
 #if defined(OS_ANDROID)
-  SendInput(base::MakeUnique<InputMsg_RequestTextInputStateUpdate>(
+  SendInput(std::make_unique<InputMsg_RequestTextInputStateUpdate>(
       input_router_->routing_id()));
 #endif
 }
@@ -92,7 +92,7 @@
 void LegacyIPCWidgetInputHandler::RequestCompositionUpdates(
     bool immediate_request,
     bool monitor_request) {
-  SendInput(base::MakeUnique<InputMsg_RequestCompositionUpdates>(
+  SendInput(std::make_unique<InputMsg_RequestCompositionUpdates>(
       input_router_->routing_id(), immediate_request, monitor_request));
 }
 
diff --git a/content/browser/renderer_host/input/mouse_latency_browsertest.cc b/content/browser/renderer_host/input/mouse_latency_browsertest.cc
index ae913d4..18e16642a 100644
--- a/content/browser/renderer_host/input/mouse_latency_browsertest.cc
+++ b/content/browser/renderer_host/input/mouse_latency_browsertest.cc
@@ -112,7 +112,7 @@
                        base::Unretained(this)));
 
     // Runs until we get the OnSyntheticGestureCompleted callback
-    runner_ = base::MakeUnique<base::RunLoop>();
+    runner_ = std::make_unique<base::RunLoop>();
     runner_->Run();
   }
 
@@ -135,7 +135,7 @@
                        base::Unretained(this)));
 
     // Runs until we get the OnSyntheticGestureCompleted callback
-    runner_ = base::MakeUnique<base::RunLoop>();
+    runner_ = std::make_unique<base::RunLoop>();
     runner_->Run();
   }
 
@@ -165,7 +165,7 @@
 
     // Runs until we get the OnTraceDataCollected callback, which populates
     // trace_data_;
-    runner_ = base::MakeUnique<base::RunLoop>();
+    runner_ = std::make_unique<base::RunLoop>();
     runner_->Run();
     return trace_data_;
   }
diff --git a/content/browser/renderer_host/input/mouse_wheel_event_queue.cc b/content/browser/renderer_host/input/mouse_wheel_event_queue.cc
index a269ed1..c7e3bea 100644
--- a/content/browser/renderer_host/input/mouse_wheel_event_queue.cc
+++ b/content/browser/renderer_host/input/mouse_wheel_event_queue.cc
@@ -68,7 +68,7 @@
     }
   }
 
-  wheel_queue_.push_back(base::MakeUnique<QueuedWebMouseWheelEvent>(event));
+  wheel_queue_.push_back(std::make_unique<QueuedWebMouseWheelEvent>(event));
   TryForwardNextEventToRenderer();
   LOCAL_HISTOGRAM_COUNTS_100("Renderer.WheelQueueSize", wheel_queue_.size());
 }
diff --git a/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc b/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc
index 32f1544..78106e4 100644
--- a/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc
+++ b/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc
@@ -688,7 +688,7 @@
   template<typename MockGestureTarget>
   void CreateControllerAndTarget() {
     target_ = new MockGestureTarget();
-    controller_ = base::MakeUnique<SyntheticGestureController>(
+    controller_ = std::make_unique<SyntheticGestureController>(
         &delegate_, std::unique_ptr<SyntheticGestureTarget>(target_));
   }
 
diff --git a/content/browser/renderer_host/input/synthetic_pointer_driver.cc b/content/browser/renderer_host/input/synthetic_pointer_driver.cc
index cadf8896..0189ef1 100644
--- a/content/browser/renderer_host/input/synthetic_pointer_driver.cc
+++ b/content/browser/renderer_host/input/synthetic_pointer_driver.cc
@@ -19,11 +19,11 @@
     SyntheticGestureParams::GestureSourceType gesture_source_type) {
   switch (gesture_source_type) {
     case SyntheticGestureParams::TOUCH_INPUT:
-      return base::MakeUnique<SyntheticTouchDriver>();
+      return std::make_unique<SyntheticTouchDriver>();
     case SyntheticGestureParams::MOUSE_INPUT:
-      return base::MakeUnique<SyntheticMouseDriver>();
+      return std::make_unique<SyntheticMouseDriver>();
     case SyntheticGestureParams::PEN_INPUT:
-      return base::MakeUnique<SyntheticPenDriver>();
+      return std::make_unique<SyntheticPenDriver>();
     case SyntheticGestureParams::DEFAULT_INPUT:
       return std::unique_ptr<SyntheticPointerDriver>();
   }
diff --git a/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc b/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc
index 0d5a5cf8..6d9c461 100644
--- a/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc
+++ b/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc
@@ -66,7 +66,7 @@
     // AudioInputDeviceManager accesses AudioSystem from IO thread, so it never
     // runs on the same thread with it, even on Mac.
     audio_manager_ = media::AudioManager::CreateForTesting(
-        base::MakeUnique<media::AudioThreadImpl>());
+        std::make_unique<media::AudioThreadImpl>());
     // Flush the message loop to ensure proper initialization of AudioManager.
     base::RunLoop().RunUntilIdle();
 
diff --git a/content/browser/renderer_host/media/audio_input_sync_writer.cc b/content/browser/renderer_host/media/audio_input_sync_writer.cc
index 401f671..d530e73 100644
--- a/content/browser/renderer_host/media/audio_input_sync_writer.cc
+++ b/content/browser/renderer_host/media/audio_input_sync_writer.cc
@@ -145,19 +145,19 @@
       media::ComputeAudioInputBufferSizeChecked(params,
                                                 shared_memory_segment_count);
 
-  auto shared_memory = base::MakeUnique<base::SharedMemory>();
+  auto shared_memory = std::make_unique<base::SharedMemory>();
   if (!requested_memory_size.IsValid() ||
       !shared_memory->CreateAndMapAnonymous(
           requested_memory_size.ValueOrDie())) {
     return nullptr;
   }
 
-  auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+  auto socket = std::make_unique<base::CancelableSyncSocket>();
   if (!base::CancelableSyncSocket::CreatePair(socket.get(), foreign_socket)) {
     return nullptr;
   }
 
-  return base::MakeUnique<AudioInputSyncWriter>(
+  return std::make_unique<AudioInputSyncWriter>(
       std::move(shared_memory), std::move(socket), shared_memory_segment_count,
       params);
 }
@@ -176,7 +176,7 @@
   // writing. We verify that each buffer index is in sequence.
   size_t number_of_indices_available = socket_->Peek() / sizeof(uint32_t);
   if (number_of_indices_available > 0) {
-    auto indices = base::MakeUnique<uint32_t[]>(number_of_indices_available);
+    auto indices = std::make_unique<uint32_t[]>(number_of_indices_available);
     size_t bytes_received = socket_->Receive(
         &indices[0],
         number_of_indices_available * sizeof(indices[0]));
diff --git a/content/browser/renderer_host/media/audio_input_sync_writer_unittest.cc b/content/browser/renderer_host/media/audio_input_sync_writer_unittest.cc
index 314c80d9..f534f817 100644
--- a/content/browser/renderer_host/media/audio_input_sync_writer_unittest.cc
+++ b/content/browser/renderer_host/media/audio_input_sync_writer_unittest.cc
@@ -125,12 +125,12 @@
     const uint32_t data_size =
         media::ComputeAudioInputBufferSize(audio_params, kSegments);
 
-    auto shared_memory = base::MakeUnique<base::SharedMemory>();
+    auto shared_memory = std::make_unique<base::SharedMemory>();
     EXPECT_TRUE(shared_memory->CreateAndMapAnonymous(data_size));
 
-    auto socket = base::MakeUnique<MockCancelableSyncSocket>(kSegments);
+    auto socket = std::make_unique<MockCancelableSyncSocket>(kSegments);
     socket_ = socket.get();
-    writer_ = base::MakeUnique<AudioInputSyncWriterUnderTest>(
+    writer_ = std::make_unique<AudioInputSyncWriterUnderTest>(
         std::move(shared_memory), std::move(socket), kSegments, audio_params);
     audio_bus_ = AudioBus::Create(audio_params);
   }
diff --git a/content/browser/renderer_host/media/audio_output_delegate_impl.cc b/content/browser/renderer_host/media/audio_output_delegate_impl.cc
index f704124..43d7083 100644
--- a/content/browser/renderer_host/media/audio_output_delegate_impl.cc
+++ b/content/browser/renderer_host/media/audio_output_delegate_impl.cc
@@ -94,12 +94,12 @@
     int render_process_id,
     const media::AudioParameters& params,
     const std::string& output_device_id) {
-  auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+  auto socket = std::make_unique<base::CancelableSyncSocket>();
   auto reader = AudioSyncReader::Create(params, socket.get());
   if (!reader)
     return nullptr;
 
-  return base::MakeUnique<AudioOutputDelegateImpl>(
+  return std::make_unique<AudioOutputDelegateImpl>(
       std::move(reader), std::move(socket), handler, audio_manager,
       std::move(audio_log), mirroring_manager, media_observer, stream_id,
       render_frame_id, render_process_id, params, output_device_id);
@@ -136,7 +136,7 @@
   // Since the event handler never directly calls functions on |this| but rather
   // posts them to the IO thread, passing a pointer from the constructor is
   // safe.
-  controller_event_handler_ = base::MakeUnique<ControllerEventHandler>(
+  controller_event_handler_ = std::make_unique<ControllerEventHandler>(
       weak_factory_.GetWeakPtr(), stream_id_);
   controller_ = media::AudioOutputController::Create(
       audio_manager, controller_event_handler_.get(), params, output_device_id,
diff --git a/content/browser/renderer_host/media/audio_output_delegate_impl_unittest.cc b/content/browser/renderer_host/media/audio_output_delegate_impl_unittest.cc
index eb5bad0..f7ebc95 100644
--- a/content/browser/renderer_host/media/audio_output_delegate_impl_unittest.cc
+++ b/content/browser/renderer_host/media/audio_output_delegate_impl_unittest.cc
@@ -115,11 +115,11 @@
     // AudioOutputDelegate mainly interacts with the IO and audio threads,
     // but interacts with UI for bad messages, so using these threads should
     // approximate the real conditions of AudioOutputDelegate well.
-    thread_bundle_ = base::MakeUnique<TestBrowserThreadBundle>(
+    thread_bundle_ = std::make_unique<TestBrowserThreadBundle>(
         TestBrowserThreadBundle::Options::REAL_IO_THREAD);
 
     audio_manager_.reset(new media::FakeAudioManager(
-        base::MakeUnique<media::AudioThreadImpl>(), &log_factory_));
+        std::make_unique<media::AudioThreadImpl>(), &log_factory_));
   }
   ~AudioOutputDelegateTest() { audio_manager_->Shutdown(); }
 
@@ -132,7 +132,7 @@
                 AddDiverter(kRenderProcessId, kRenderFrameId, NotNull()));
 
     {
-      auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+      auto socket = std::make_unique<base::CancelableSyncSocket>();
       auto reader = AudioSyncReader::Create(Params(), socket.get());
       AudioOutputDelegateImpl delegate(
           std::move(reader), std::move(socket), &event_handler_,
@@ -158,7 +158,7 @@
                 AddDiverter(kRenderProcessId, kRenderFrameId, NotNull()));
 
     {
-      auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+      auto socket = std::make_unique<base::CancelableSyncSocket>();
       auto reader = AudioSyncReader::Create(Params(), socket.get());
       AudioOutputDelegateImpl delegate(
           std::move(reader), std::move(socket), &event_handler_,
@@ -186,7 +186,7 @@
                 AddDiverter(kRenderProcessId, kRenderFrameId, NotNull()));
 
     {
-      auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+      auto socket = std::make_unique<base::CancelableSyncSocket>();
       auto reader = AudioSyncReader::Create(Params(), socket.get());
       AudioOutputDelegateImpl delegate(
           std::move(reader), std::move(socket), &event_handler_,
@@ -214,7 +214,7 @@
                 AddDiverter(kRenderProcessId, kRenderFrameId, NotNull()));
 
     {
-      auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+      auto socket = std::make_unique<base::CancelableSyncSocket>();
       auto reader = AudioSyncReader::Create(Params(), socket.get());
       AudioOutputDelegateImpl delegate(
           std::move(reader), std::move(socket), &event_handler_,
@@ -244,7 +244,7 @@
                 AddDiverter(kRenderProcessId, kRenderFrameId, NotNull()));
 
     {
-      auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+      auto socket = std::make_unique<base::CancelableSyncSocket>();
       auto reader = AudioSyncReader::Create(Params(), socket.get());
       AudioOutputDelegateImpl delegate(
           std::move(reader), std::move(socket), &event_handler_,
@@ -274,7 +274,7 @@
 
     DummyAudioOutputStream stream;
     {
-      auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+      auto socket = std::make_unique<base::CancelableSyncSocket>();
       auto reader = AudioSyncReader::Create(Params(), socket.get());
       AudioOutputDelegateImpl delegate(
           std::move(reader), std::move(socket), &event_handler_,
@@ -303,7 +303,7 @@
 
     DummyAudioOutputStream stream;
     {
-      auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+      auto socket = std::make_unique<base::CancelableSyncSocket>();
       auto reader = AudioSyncReader::Create(Params(), socket.get());
       AudioOutputDelegateImpl delegate(
           std::move(reader), std::move(socket), &event_handler_,
@@ -335,7 +335,7 @@
 
     DummyAudioOutputStream stream;
     {
-      auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+      auto socket = std::make_unique<base::CancelableSyncSocket>();
       auto reader = AudioSyncReader::Create(Params(), socket.get());
       AudioOutputDelegateImpl delegate(
           std::move(reader), std::move(socket), &event_handler_,
@@ -372,9 +372,9 @@
                 AddDiverter(kRenderProcessId, kRenderFrameId, NotNull()));
     EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull()));
 
-    auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+    auto socket = std::make_unique<base::CancelableSyncSocket>();
     auto reader = AudioSyncReader::Create(Params(), socket.get());
-    auto delegate = base::MakeUnique<AudioOutputDelegateImpl>(
+    auto delegate = std::make_unique<AudioOutputDelegateImpl>(
         std::move(reader), std::move(socket), &event_handler_,
         audio_manager_.get(),
         log_factory_.CreateAudioLog(
@@ -402,7 +402,7 @@
     EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull()));
 
     {
-      auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+      auto socket = std::make_unique<base::CancelableSyncSocket>();
       auto reader = AudioSyncReader::Create(Params(), socket.get());
       AudioOutputDelegateImpl delegate(
           std::move(reader), std::move(socket), &event_handler_,
@@ -425,7 +425,7 @@
     EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull()));
 
     {
-      auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+      auto socket = std::make_unique<base::CancelableSyncSocket>();
       auto reader = AudioSyncReader::Create(Params(), socket.get());
       AudioOutputDelegateImpl delegate(
           std::move(reader), std::move(socket), &event_handler_,
@@ -452,7 +452,7 @@
     EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull()));
 
     {
-      auto socket = base::MakeUnique<base::CancelableSyncSocket>();
+      auto socket = std::make_unique<base::CancelableSyncSocket>();
       auto reader = AudioSyncReader::Create(Params(), socket.get());
       AudioOutputDelegateImpl delegate(
           std::move(reader), std::move(socket), &event_handler_,
diff --git a/content/browser/renderer_host/media/audio_renderer_host_unittest.cc b/content/browser/renderer_host/media/audio_renderer_host_unittest.cc
index 92a44ac..068b0374 100644
--- a/content/browser/renderer_host/media/audio_renderer_host_unittest.cc
+++ b/content/browser/renderer_host/media/audio_renderer_host_unittest.cc
@@ -68,7 +68,7 @@
 class FakeAudioManagerWithAssociations : public media::FakeAudioManager {
  public:
   explicit FakeAudioManagerWithAssociations(media::AudioLogFactory* factory)
-      : FakeAudioManager(base::MakeUnique<media::TestAudioThread>(), factory) {}
+      : FakeAudioManager(std::make_unique<media::TestAudioThread>(), factory) {}
 
   void CreateDeviceAssociation(const std::string& input_device_id,
                                const std::string& output_device_id) {
@@ -205,12 +205,12 @@
 
     RenderViewHostTestHarness::SetUp();
     audio_manager_ =
-        base::MakeUnique<FakeAudioManagerWithAssociations>(&log_factory_);
+        std::make_unique<FakeAudioManagerWithAssociations>(&log_factory_);
     audio_system_ =
         std::make_unique<media::AudioSystemImpl>(audio_manager_.get());
-    media_stream_manager_ = base::MakeUnique<MediaStreamManager>(
+    media_stream_manager_ = std::make_unique<MediaStreamManager>(
         audio_system_.get(), audio_manager_->GetTaskRunner());
-    auth_run_loop_ = base::MakeUnique<base::RunLoop>();
+    auth_run_loop_ = std::make_unique<base::RunLoop>();
     host_ = base::MakeRefCounted<MockAudioRendererHost>(
         auth_run_loop_.get(), process()->GetID(), audio_manager_.get(),
         audio_system_.get(), &mirroring_manager_, media_stream_manager_.get());
diff --git a/content/browser/renderer_host/media/audio_sync_reader.cc b/content/browser/renderer_host/media/audio_sync_reader.cc
index fad2322..e60a288 100644
--- a/content/browser/renderer_host/media/audio_sync_reader.cc
+++ b/content/browser/renderer_host/media/audio_sync_reader.cc
@@ -131,7 +131,7 @@
       !base::CancelableSyncSocket::CreatePair(socket.get(), foreign_socket)) {
     return nullptr;
   }
-  return base::MakeUnique<AudioSyncReader>(params, std::move(shared_memory),
+  return std::make_unique<AudioSyncReader>(params, std::move(shared_memory),
                                            std::move(socket));
 }
 
diff --git a/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc b/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc
index e0d8bfc1..bf13ae02 100644
--- a/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc
+++ b/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc
@@ -37,7 +37,7 @@
 std::unique_ptr<media::VideoCaptureJpegDecoder> CreateGpuJpegDecoder(
     media::VideoCaptureJpegDecoder::DecodeDoneCB decode_done_cb,
     base::Callback<void(const std::string&)> send_log_message_cb) {
-  return base::MakeUnique<content::VideoCaptureGpuJpegDecoder>(
+  return std::make_unique<content::VideoCaptureGpuJpegDecoder>(
       std::move(decode_done_cb), std::move(send_log_message_cb));
 }
 
@@ -157,11 +157,11 @@
 
   scoped_refptr<media::VideoCaptureBufferPool> buffer_pool =
       new media::VideoCaptureBufferPoolImpl(
-          base::MakeUnique<media::VideoCaptureBufferTrackerFactoryImpl>(),
+          std::make_unique<media::VideoCaptureBufferTrackerFactoryImpl>(),
           buffer_pool_max_buffer_count);
 
-  return base::MakeUnique<media::VideoCaptureDeviceClient>(
-      base::MakeUnique<media::VideoFrameReceiverOnTaskRunner>(
+  return std::make_unique<media::VideoCaptureDeviceClient>(
+      std::make_unique<media::VideoFrameReceiverOnTaskRunner>(
           receiver, BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)),
       std::move(buffer_pool),
       base::Bind(&CreateGpuJpegDecoder,
@@ -193,7 +193,7 @@
     }
   }
 
-  auto launched_device = base::MakeUnique<InProcessLaunchedVideoCaptureDevice>(
+  auto launched_device = std::make_unique<InProcessLaunchedVideoCaptureDevice>(
       std::move(device), device_task_runner_);
 
   switch (state_copy) {
@@ -284,7 +284,7 @@
 #endif
   } else {
 #if defined(OS_ANDROID)
-    video_capture_device = base::MakeUnique<ScreenCaptureDeviceAndroid>();
+    video_capture_device = std::make_unique<ScreenCaptureDeviceAndroid>();
 #else
 #if defined(USE_AURA)
     video_capture_device = DesktopCaptureDeviceAura::Create(desktop_id);
diff --git a/content/browser/renderer_host/media/in_process_video_capture_provider.cc b/content/browser/renderer_host/media/in_process_video_capture_provider.cc
index e5a4df65..de6549f 100644
--- a/content/browser/renderer_host/media/in_process_video_capture_provider.cc
+++ b/content/browser/renderer_host/media/in_process_video_capture_provider.cc
@@ -27,7 +27,7 @@
 InProcessVideoCaptureProvider::CreateInstanceForNonDeviceCapture(
     scoped_refptr<base::SingleThreadTaskRunner> device_task_runner,
     base::RepeatingCallback<void(const std::string&)> emit_log_message_cb) {
-  return base::MakeUnique<InProcessVideoCaptureProvider>(
+  return std::make_unique<InProcessVideoCaptureProvider>(
       nullptr, std::move(device_task_runner), std::move(emit_log_message_cb));
 }
 
@@ -37,7 +37,7 @@
     std::unique_ptr<media::VideoCaptureSystem> video_capture_system,
     scoped_refptr<base::SingleThreadTaskRunner> device_task_runner,
     base::RepeatingCallback<void(const std::string&)> emit_log_message_cb) {
-  return base::MakeUnique<InProcessVideoCaptureProvider>(
+  return std::make_unique<InProcessVideoCaptureProvider>(
       std::move(video_capture_system), std::move(device_task_runner),
       std::move(emit_log_message_cb));
 }
@@ -67,7 +67,7 @@
 std::unique_ptr<VideoCaptureDeviceLauncher>
 InProcessVideoCaptureProvider::CreateDeviceLauncher() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  return base::MakeUnique<InProcessVideoCaptureDeviceLauncher>(
+  return std::make_unique<InProcessVideoCaptureDeviceLauncher>(
       device_task_runner_, video_capture_system_.get());
 }
 
diff --git a/content/browser/renderer_host/media/media_devices_dispatcher_host.cc b/content/browser/renderer_host/media/media_devices_dispatcher_host.cc
index 081da66..8c5227d 100644
--- a/content/browser/renderer_host/media/media_devices_dispatcher_host.cc
+++ b/content/browser/renderer_host/media/media_devices_dispatcher_host.cc
@@ -116,7 +116,7 @@
     ::mojom::MediaDevicesDispatcherHostRequest request) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   mojo::MakeStrongBinding(
-      base::MakeUnique<MediaDevicesDispatcherHost>(
+      std::make_unique<MediaDevicesDispatcherHost>(
           render_process_id, render_frame_id, media_stream_manager),
       std::move(request));
 }
@@ -129,7 +129,7 @@
       render_frame_id_(render_frame_id),
       group_id_salt_base_(BrowserContext::CreateRandomMediaDeviceIDSalt()),
       media_stream_manager_(media_stream_manager),
-      permission_checker_(base::MakeUnique<MediaDevicesPermissionChecker>()),
+      permission_checker_(std::make_unique<MediaDevicesPermissionChecker>()),
       num_pending_audio_input_parameters_(0),
       salt_and_origin_callback_(
           base::BindRepeating(&GetMediaDeviceSaltAndOrigin)),
diff --git a/content/browser/renderer_host/media/media_devices_dispatcher_host_unittest.cc b/content/browser/renderer_host/media/media_devices_dispatcher_host_unittest.cc
index 0f6acde..227f707 100644
--- a/content/browser/renderer_host/media/media_devices_dispatcher_host_unittest.cc
+++ b/content/browser/renderer_host/media/media_devices_dispatcher_host_unittest.cc
@@ -240,7 +240,7 @@
                                         bool enumerate_video_input,
                                         bool enumerate_audio_output,
                                         bool permission_override_value = true) {
-    host_->SetPermissionChecker(base::MakeUnique<MediaDevicesPermissionChecker>(
+    host_->SetPermissionChecker(std::make_unique<MediaDevicesPermissionChecker>(
         permission_override_value));
     base::RunLoop run_loop;
     host_->EnumerateDevices(
@@ -500,7 +500,7 @@
 
   // Reset the salt and expect different device IDs in a new enumeration, except
   // for default audio devices, which are always hashed to the same constant.
-  browser_context_ = base::MakeUnique<TestBrowserContext>();
+  browser_context_ = std::make_unique<TestBrowserContext>();
   EnumerateDevicesAndWaitForResult(true, true, true);
   EXPECT_EQ(devices.size(), enumerated_devices_.size());
   for (size_t i = 0; i < enumerated_devices_.size(); ++i) {
diff --git a/content/browser/renderer_host/media/media_devices_manager_unittest.cc b/content/browser/renderer_host/media/media_devices_manager_unittest.cc
index 7cb7e30..ea67d69 100644
--- a/content/browser/renderer_host/media/media_devices_manager_unittest.cc
+++ b/content/browser/renderer_host/media/media_devices_manager_unittest.cc
@@ -44,7 +44,7 @@
 class MockAudioManager : public media::FakeAudioManager {
  public:
   MockAudioManager()
-      : FakeAudioManager(base::MakeUnique<media::TestAudioThread>(),
+      : FakeAudioManager(std::make_unique<media::TestAudioThread>(),
                          &fake_audio_log_factory_),
         num_output_devices_(2),
         num_input_devices_(2) {}
@@ -147,12 +147,12 @@
     audio_system_ =
         std::make_unique<media::AudioSystemImpl>(audio_manager_.get());
     auto video_capture_device_factory =
-        base::MakeUnique<MockVideoCaptureDeviceFactory>();
+        std::make_unique<MockVideoCaptureDeviceFactory>();
     video_capture_device_factory_ = video_capture_device_factory.get();
-    auto video_capture_system = base::MakeUnique<media::VideoCaptureSystemImpl>(
+    auto video_capture_system = std::make_unique<media::VideoCaptureSystemImpl>(
         std::move(video_capture_device_factory));
     auto video_capture_provider =
-        base::MakeUnique<InProcessVideoCaptureProvider>(
+        std::make_unique<InProcessVideoCaptureProvider>(
             std::move(video_capture_system),
             base::ThreadTaskRunnerHandle::Get(), kIgnoreLogMessageCB);
     video_capture_manager_ = new VideoCaptureManager(
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc
index 0eff1c5..6d32aec 100644
--- a/content/browser/renderer_host/media/media_stream_manager.cc
+++ b/content/browser/renderer_host/media/media_stream_manager.cc
@@ -438,8 +438,8 @@
     device_task_runner = video_capture_thread_.task_runner();
 #endif
     if (base::FeatureList::IsEnabled(video_capture::kMojoVideoCapture)) {
-      video_capture_provider = base::MakeUnique<VideoCaptureProviderSwitcher>(
-          base::MakeUnique<ServiceVideoCaptureProvider>(
+      video_capture_provider = std::make_unique<VideoCaptureProviderSwitcher>(
+          std::make_unique<ServiceVideoCaptureProvider>(
               base::BindRepeating(&SendVideoCaptureLogMessage)),
           InProcessVideoCaptureProvider::CreateInstanceForNonDeviceCapture(
               std::move(device_task_runner),
@@ -448,7 +448,7 @@
       video_capture::uma::LogVideoCaptureServiceEvent(
           video_capture::uma::BROWSER_USING_LEGACY_CAPTURE);
       video_capture_provider = InProcessVideoCaptureProvider::CreateInstance(
-          base::MakeUnique<media::VideoCaptureSystemImpl>(
+          std::make_unique<media::VideoCaptureSystemImpl>(
               media::VideoCaptureDeviceFactory::CreateFactory(
                   BrowserThread::GetTaskRunnerForThread(BrowserThread::UI),
                   BrowserGpuMemoryBufferManager::current())),
diff --git a/content/browser/renderer_host/media/media_stream_ui_proxy_unittest.cc b/content/browser/renderer_host/media/media_stream_ui_proxy_unittest.cc
index 6408784..7a9ed8f3 100644
--- a/content/browser/renderer_host/media/media_stream_ui_proxy_unittest.cc
+++ b/content/browser/renderer_host/media/media_stream_ui_proxy_unittest.cc
@@ -306,7 +306,7 @@
   std::unique_ptr<MediaStreamRequest> CreateRequest(RenderFrameHost* rfh,
                                                     MediaStreamType mic_type,
                                                     MediaStreamType cam_type) {
-    return base::MakeUnique<MediaStreamRequest>(
+    return std::make_unique<MediaStreamRequest>(
         rfh->GetProcess()->GetID(), rfh->GetRoutingID(), 0,
         rfh->GetLastCommittedURL(), false, MEDIA_GENERATE_STREAM, std::string(),
         std::string(), mic_type, cam_type, false);
diff --git a/content/browser/renderer_host/media/render_frame_audio_output_stream_factory.cc b/content/browser/renderer_host/media/render_frame_audio_output_stream_factory.cc
index 161df0b..f9754ab 100644
--- a/content/browser/renderer_host/media/render_frame_audio_output_stream_factory.cc
+++ b/content/browser/renderer_host/media/render_frame_audio_output_stream_factory.cc
@@ -119,7 +119,7 @@
   // Since |context_| outlives |this| and |this| outlives |stream_providers_|,
   // unretained is safe.
   stream_providers_.insert(
-      base::MakeUnique<media::MojoAudioOutputStreamProvider>(
+      std::make_unique<media::MojoAudioOutputStreamProvider>(
           std::move(request),
           base::BindOnce(
               &RendererAudioOutputStreamFactoryContext::CreateDelegate,
diff --git a/content/browser/renderer_host/media/render_frame_audio_output_stream_factory_unittest.cc b/content/browser/renderer_host/media/render_frame_audio_output_stream_factory_unittest.cc
index 2355a1d..8d9cafb 100644
--- a/content/browser/renderer_host/media/render_frame_audio_output_stream_factory_unittest.cc
+++ b/content/browser/renderer_host/media/render_frame_audio_output_stream_factory_unittest.cc
@@ -144,9 +144,9 @@
   AudioOutputStreamFactoryPtr CreateFactory() {
     DCHECK(!factory_);
     AudioOutputStreamFactoryPtr ret;
-    factory_ = base::MakeUnique<RenderFrameAudioOutputStreamFactory>(
+    factory_ = std::make_unique<RenderFrameAudioOutputStreamFactory>(
         kRenderFrameId, this);
-    factory_binding_ = base::MakeUnique<
+    factory_binding_ = std::make_unique<
         mojo::Binding<mojom::RendererAudioOutputStreamFactory>>(
         factory_.get(), mojo::MakeRequest(&ret));
     return ret;
@@ -211,9 +211,9 @@
   mojo::Binding<AudioOutputStreamClient> client_binding(
       &client, mojo::MakeRequest(&client_ptr));
   media::AudioOutputDelegate::EventHandler* event_handler = nullptr;
-  auto factory_context = base::MakeUnique<MockContext>(true);
+  auto factory_context = std::make_unique<MockContext>(true);
   factory_context->PrepareDelegateForCreation(
-      base::MakeUnique<MockAudioOutputDelegate>(), &event_handler);
+      std::make_unique<MockAudioOutputDelegate>(), &event_handler);
   AudioOutputStreamFactoryPtr factory_ptr = factory_context->CreateFactory();
 
   media::OutputDeviceStatus status;
@@ -238,8 +238,8 @@
   base::SharedMemory shared_memory;
   ASSERT_TRUE(shared_memory.CreateAndMapAnonymous(100));
 
-  auto local = base::MakeUnique<base::CancelableSyncSocket>();
-  auto remote = base::MakeUnique<base::CancelableSyncSocket>();
+  auto local = std::make_unique<base::CancelableSyncSocket>();
+  auto remote = std::make_unique<base::CancelableSyncSocket>();
   ASSERT_TRUE(
       base::CancelableSyncSocket::CreatePair(local.get(), remote.get()));
   event_handler->OnStreamCreated(kStreamId, &shared_memory, std::move(remote));
@@ -252,7 +252,7 @@
 TEST(RenderFrameAudioOutputStreamFactoryTest, NotAuthorized_Denied) {
   content::TestBrowserThreadBundle thread_bundle;
   AudioOutputStreamProviderPtr output_provider;
-  auto factory_context = base::MakeUnique<MockContext>(false);
+  auto factory_context = std::make_unique<MockContext>(false);
   AudioOutputStreamFactoryPtr factory_ptr = factory_context->CreateFactory();
 
   media::OutputDeviceStatus status;
@@ -277,9 +277,9 @@
       &client, mojo::MakeRequest(&client_ptr));
   bool delegate_is_destructed = false;
   media::AudioOutputDelegate::EventHandler* event_handler = nullptr;
-  auto factory_context = base::MakeUnique<MockContext>(true);
+  auto factory_context = std::make_unique<MockContext>(true);
   factory_context->PrepareDelegateForCreation(
-      base::MakeUnique<MockAudioOutputDelegate>(
+      std::make_unique<MockAudioOutputDelegate>(
           base::BindOnce([](bool* destructed) { *destructed = true; },
                          &delegate_is_destructed)),
       &event_handler);
@@ -314,9 +314,9 @@
       &client, mojo::MakeRequest(&client_ptr));
   bool delegate_is_destructed = false;
   media::AudioOutputDelegate::EventHandler* event_handler = nullptr;
-  auto factory_context = base::MakeUnique<MockContext>(true);
+  auto factory_context = std::make_unique<MockContext>(true);
   factory_context->PrepareDelegateForCreation(
-      base::MakeUnique<MockAudioOutputDelegate>(
+      std::make_unique<MockAudioOutputDelegate>(
           base::BindOnce([](bool* destructed) { *destructed = true; },
                          &delegate_is_destructed)),
       &event_handler);
@@ -360,7 +360,7 @@
   TestBrowserThreadBundle thread_bundle;
 
   AudioOutputStreamProviderPtr output_provider;
-  auto factory_context = base::MakeUnique<MockContext>(true);
+  auto factory_context = std::make_unique<MockContext>(true);
   auto factory_ptr = factory_context->CreateFactory();
 
   int64_t session_id = std::numeric_limits<int>::max();
diff --git a/content/browser/renderer_host/media/service_video_capture_device_launcher.cc b/content/browser/renderer_host/media/service_video_capture_device_launcher.cc
index 0c6a228..9dfb2d3 100644
--- a/content/browser/renderer_host/media/service_video_capture_device_launcher.cc
+++ b/content/browser/renderer_host/media/service_video_capture_device_launcher.cc
@@ -22,8 +22,8 @@
     VideoCaptureDeviceLauncher::Callbacks* callbacks,
     base::OnceClosure done_cb) {
   auto receiver_adapter =
-      base::MakeUnique<video_capture::ReceiverMediaToMojoAdapter>(
-          base::MakeUnique<media::VideoFrameReceiverOnTaskRunner>(
+      std::make_unique<video_capture::ReceiverMediaToMojoAdapter>(
+          std::make_unique<media::VideoFrameReceiverOnTaskRunner>(
               std::move(receiver),
               BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)));
   video_capture::mojom::ReceiverPtr receiver_proxy;
@@ -31,7 +31,7 @@
       std::move(receiver_adapter), mojo::MakeRequest(&receiver_proxy));
   device->Start(params, std::move(receiver_proxy));
   callbacks->OnDeviceLaunched(
-      base::MakeUnique<ServiceLaunchedVideoCaptureDevice>(
+      std::make_unique<ServiceLaunchedVideoCaptureDevice>(
           std::move(device), std::move(connection_lost_cb)));
   base::ResetAndReturn(&done_cb).Run();
 }
diff --git a/content/browser/renderer_host/media/service_video_capture_device_launcher_unittest.cc b/content/browser/renderer_host/media/service_video_capture_device_launcher_unittest.cc
index 0a6bae1d3..36a3366c 100644
--- a/content/browser/renderer_host/media/service_video_capture_device_launcher_unittest.cc
+++ b/content/browser/renderer_host/media/service_video_capture_device_launcher_unittest.cc
@@ -66,9 +66,9 @@
  protected:
   void SetUp() override {
     factory_binding_ =
-        base::MakeUnique<mojo::Binding<video_capture::mojom::DeviceFactory>>(
+        std::make_unique<mojo::Binding<video_capture::mojom::DeviceFactory>>(
             &mock_device_factory_, mojo::MakeRequest(&device_factory_));
-    launcher_ = base::MakeUnique<ServiceVideoCaptureDeviceLauncher>(
+    launcher_ = std::make_unique<ServiceVideoCaptureDeviceLauncher>(
         connect_to_device_factory_cb_.Get());
     launcher_has_connected_to_device_factory_ = false;
     launcher_has_released_device_factory_ = false;
@@ -77,7 +77,7 @@
         .WillByDefault(Invoke(
             [this](std::unique_ptr<VideoCaptureFactoryDelegate>* out_factory) {
               launcher_has_connected_to_device_factory_ = true;
-              *out_factory = base::MakeUnique<VideoCaptureFactoryDelegate>(
+              *out_factory = std::make_unique<VideoCaptureFactoryDelegate>(
                   &device_factory_, release_connection_cb_.Get());
             }));
 
diff --git a/content/browser/renderer_host/media/service_video_capture_provider.cc b/content/browser/renderer_host/media/service_video_capture_provider.cc
index df14047..b837db09 100644
--- a/content/browser/renderer_host/media/service_video_capture_provider.cc
+++ b/content/browser/renderer_host/media/service_video_capture_provider.cc
@@ -42,7 +42,7 @@
 
 ServiceVideoCaptureProvider::ServiceVideoCaptureProvider(
     base::RepeatingCallback<void(const std::string&)> emit_log_message_cb)
-    : ServiceVideoCaptureProvider(base::MakeUnique<ServiceConnectorImpl>(),
+    : ServiceVideoCaptureProvider(std::make_unique<ServiceConnectorImpl>(),
                                   std::move(emit_log_message_cb)) {}
 
 ServiceVideoCaptureProvider::ServiceVideoCaptureProvider(
@@ -79,7 +79,7 @@
 std::unique_ptr<VideoCaptureDeviceLauncher>
 ServiceVideoCaptureProvider::CreateDeviceLauncher() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  return base::MakeUnique<ServiceVideoCaptureDeviceLauncher>(
+  return std::make_unique<ServiceVideoCaptureDeviceLauncher>(
       base::BindRepeating(&ServiceVideoCaptureProvider::ConnectToDeviceFactory,
                           weak_ptr_factory_.GetWeakPtr()));
 }
@@ -90,7 +90,7 @@
   IncreaseUsageCount();
   LazyConnectToService();
   launcher_has_connected_to_device_factory_ = true;
-  *out_factory = base::MakeUnique<VideoCaptureFactoryDelegate>(
+  *out_factory = std::make_unique<VideoCaptureFactoryDelegate>(
       &device_factory_,
       base::BindOnce(&ServiceVideoCaptureProvider::DecreaseUsageCount,
                      weak_ptr_factory_.GetWeakPtr()));
diff --git a/content/browser/renderer_host/media/service_video_capture_provider_unittest.cc b/content/browser/renderer_host/media/service_video_capture_provider_unittest.cc
index c5347f15..ed85dee 100644
--- a/content/browser/renderer_host/media/service_video_capture_provider_unittest.cc
+++ b/content/browser/renderer_host/media/service_video_capture_provider_unittest.cc
@@ -89,9 +89,9 @@
 
  protected:
   void SetUp() override {
-    auto mock_service_connector = base::MakeUnique<MockServiceConnector>();
+    auto mock_service_connector = std::make_unique<MockServiceConnector>();
     mock_service_connector_ = mock_service_connector.get();
-    provider_ = base::MakeUnique<ServiceVideoCaptureProvider>(
+    provider_ = std::make_unique<ServiceVideoCaptureProvider>(
         std::move(mock_service_connector), kIgnoreLogMessageCB);
 
     ON_CALL(*mock_service_connector_, BindFactoryProvider(_))
diff --git a/content/browser/renderer_host/media/video_capture_buffer_pool_unittest.cc b/content/browser/renderer_host/media/video_capture_buffer_pool_unittest.cc
index 110a071..c5b4bda 100644
--- a/content/browser/renderer_host/media/video_capture_buffer_pool_unittest.cc
+++ b/content/browser/renderer_host/media/video_capture_buffer_pool_unittest.cc
@@ -72,7 +72,7 @@
   VideoCaptureBufferPoolTest()
       : expected_dropped_id_(0),
         pool_(new media::VideoCaptureBufferPoolImpl(
-            base::MakeUnique<media::VideoCaptureBufferTrackerFactoryImpl>(),
+            std::make_unique<media::VideoCaptureBufferTrackerFactoryImpl>(),
             kTestBufferPoolSize)) {}
 
   void ExpectDroppedId(int expected_dropped_id) {
diff --git a/content/browser/renderer_host/media/video_capture_controller.cc b/content/browser/renderer_host/media/video_capture_controller.cc
index e9fb72a..97dcb2ed 100644
--- a/content/browser/renderer_host/media/video_capture_controller.cc
+++ b/content/browser/renderer_host/media/video_capture_controller.cc
@@ -235,7 +235,7 @@
     event_handler->OnStarted(id);
 
   std::unique_ptr<ControllerClient> client =
-      base::MakeUnique<ControllerClient>(id, event_handler, session_id, params);
+      std::make_unique<ControllerClient>(id, event_handler, session_id, params);
   // If we already have gotten frame_info from the device, repeat it to the new
   // client.
   if (state_ != VIDEO_CAPTURE_STATE_ERROR) {
diff --git a/content/browser/renderer_host/media/video_capture_controller_unittest.cc b/content/browser/renderer_host/media/video_capture_controller_unittest.cc
index fd9e24f..3ef1925 100644
--- a/content/browser/renderer_host/media/video_capture_controller_unittest.cc
+++ b/content/browser/renderer_host/media/video_capture_controller_unittest.cc
@@ -47,7 +47,7 @@
 
 std::unique_ptr<media::VideoCaptureJpegDecoder> CreateGpuJpegDecoder(
     media::VideoCaptureJpegDecoder::DecodeDoneCB decode_done_cb) {
-  return base::MakeUnique<content::VideoCaptureGpuJpegDecoder>(
+  return std::make_unique<content::VideoCaptureGpuJpegDecoder>(
       std::move(decode_done_cb), base::Bind([](const std::string&) {}));
 }
 
@@ -138,14 +138,14 @@
     const MediaStreamType arbitrary_stream_type =
         content::MEDIA_DEVICE_VIDEO_CAPTURE;
     const media::VideoCaptureParams arbitrary_params;
-    auto device_launcher = base::MakeUnique<MockVideoCaptureDeviceLauncher>();
+    auto device_launcher = std::make_unique<MockVideoCaptureDeviceLauncher>();
     controller_ = new VideoCaptureController(
         arbitrary_device_id, arbitrary_stream_type, arbitrary_params,
         std::move(device_launcher),
         base::BindRepeating([](const std::string&) {}));
     InitializeNewDeviceClientAndBufferPoolInstances();
     auto mock_launched_device =
-        base::MakeUnique<MockLaunchedVideoCaptureDevice>();
+        std::make_unique<MockLaunchedVideoCaptureDevice>();
     mock_launched_device_ = mock_launched_device.get();
     controller_->OnDeviceLaunched(std::move(mock_launched_device));
     client_a_.reset(
@@ -158,10 +158,10 @@
 
   void InitializeNewDeviceClientAndBufferPoolInstances() {
     buffer_pool_ = new media::VideoCaptureBufferPoolImpl(
-        base::MakeUnique<media::VideoCaptureBufferTrackerFactoryImpl>(),
+        std::make_unique<media::VideoCaptureBufferTrackerFactoryImpl>(),
         kPoolSize);
     device_client_.reset(new media::VideoCaptureDeviceClient(
-        base::MakeUnique<media::VideoFrameReceiverOnTaskRunner>(
+        std::make_unique<media::VideoFrameReceiverOnTaskRunner>(
             controller_->GetWeakPtrForIOThread(),
             BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)),
         buffer_pool_,
diff --git a/content/browser/renderer_host/media/video_capture_host.cc b/content/browser/renderer_host/media/video_capture_host.cc
index da26a5c4..d437d3c 100644
--- a/content/browser/renderer_host/media/video_capture_host.cc
+++ b/content/browser/renderer_host/media/video_capture_host.cc
@@ -81,7 +81,7 @@
                               mojom::VideoCaptureHostRequest request) {
   DVLOG(1) << __func__;
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  mojo::MakeStrongBinding(base::MakeUnique<VideoCaptureHost>(
+  mojo::MakeStrongBinding(std::make_unique<VideoCaptureHost>(
                               render_process_id, media_stream_manager),
                           std::move(request));
 }
diff --git a/content/browser/renderer_host/media/video_capture_manager_unittest.cc b/content/browser/renderer_host/media/video_capture_manager_unittest.cc
index 582b388..7e0186a 100644
--- a/content/browser/renderer_host/media/video_capture_manager_unittest.cc
+++ b/content/browser/renderer_host/media/video_capture_manager_unittest.cc
@@ -106,7 +106,7 @@
 
   std::unique_ptr<media::VideoCaptureDevice> CreateDevice(
       const media::VideoCaptureDeviceDescriptor& device_descriptor) final {
-    return base::MakeUnique<WrappedDevice>(
+    return std::make_unique<WrappedDevice>(
         FakeVideoCaptureDeviceFactory::CreateDevice(device_descriptor), this);
   }
 
@@ -201,12 +201,12 @@
   void SetUp() override {
     listener_.reset(new MockMediaStreamProviderListener());
     auto video_capture_device_factory =
-        base::MakeUnique<WrappedDeviceFactory>();
+        std::make_unique<WrappedDeviceFactory>();
     video_capture_device_factory_ = video_capture_device_factory.get();
-    auto video_capture_system = base::MakeUnique<media::VideoCaptureSystemImpl>(
+    auto video_capture_system = std::make_unique<media::VideoCaptureSystemImpl>(
         std::move(video_capture_device_factory));
     auto video_capture_provider =
-        base::MakeUnique<InProcessVideoCaptureProvider>(
+        std::make_unique<InProcessVideoCaptureProvider>(
             std::move(video_capture_system),
             base::ThreadTaskRunnerHandle::Get(), kIgnoreLogMessageCB);
     vcm_ =
diff --git a/content/browser/renderer_host/media/video_capture_provider_switcher.cc b/content/browser/renderer_host/media/video_capture_provider_switcher.cc
index 26e91d9..d1b8b74f 100644
--- a/content/browser/renderer_host/media/video_capture_provider_switcher.cc
+++ b/content/browser/renderer_host/media/video_capture_provider_switcher.cc
@@ -77,7 +77,7 @@
 
 std::unique_ptr<VideoCaptureDeviceLauncher>
 VideoCaptureProviderSwitcher::CreateDeviceLauncher() {
-  return base::MakeUnique<VideoCaptureDeviceLauncherSwitcher>(
+  return std::make_unique<VideoCaptureDeviceLauncherSwitcher>(
       media_device_capture_provider_->CreateDeviceLauncher(),
       other_types_capture_provider_->CreateDeviceLauncher());
 }
diff --git a/content/browser/renderer_host/media/video_capture_unittest.cc b/content/browser/renderer_host/media/video_capture_unittest.cc
index 65003093..6df9e82 100644
--- a/content/browser/renderer_host/media/video_capture_unittest.cc
+++ b/content/browser/renderer_host/media/video_capture_unittest.cc
@@ -130,7 +130,7 @@
 
     base::CommandLine::ForCurrentProcess()->AppendSwitch(
         switches::kUseFakeDeviceForMediaStream);
-    media_stream_manager_ = base::MakeUnique<MediaStreamManager>(
+    media_stream_manager_ = std::make_unique<MediaStreamManager>(
         audio_system_.get(), audio_manager_->GetTaskRunner());
     media_stream_manager_->UseFakeUIFactoryForTests(
         base::Bind(&VideoCaptureTest::CreateFakeUI, base::Unretained(this)));
diff --git a/content/browser/renderer_host/offscreen_canvas_provider_impl.cc b/content/browser/renderer_host/offscreen_canvas_provider_impl.cc
index 279340b..6169a95 100644
--- a/content/browser/renderer_host/offscreen_canvas_provider_impl.cc
+++ b/content/browser/renderer_host/offscreen_canvas_provider_impl.cc
@@ -41,7 +41,7 @@
       &OffscreenCanvasProviderImpl::DestroyOffscreenCanvasSurface,
       base::Unretained(this), frame_sink_id);
 
-  canvas_map_[frame_sink_id] = base::MakeUnique<OffscreenCanvasSurfaceImpl>(
+  canvas_map_[frame_sink_id] = std::make_unique<OffscreenCanvasSurfaceImpl>(
       host_frame_sink_manager_, parent_frame_sink_id, frame_sink_id,
       std::move(client), std::move(request), std::move(destroy_callback));
 }
diff --git a/content/browser/renderer_host/offscreen_canvas_provider_impl_unittest.cc b/content/browser/renderer_host/offscreen_canvas_provider_impl_unittest.cc
index 0e611878..872b58b 100644
--- a/content/browser/renderer_host/offscreen_canvas_provider_impl_unittest.cc
+++ b/content/browser/renderer_host/offscreen_canvas_provider_impl_unittest.cc
@@ -124,14 +124,14 @@
     ImageTransportFactory::SetFactory(
         std::make_unique<NoTransportImageTransportFactory>());
 #endif
-    host_frame_sink_manager_ = base::MakeUnique<viz::HostFrameSinkManager>();
+    host_frame_sink_manager_ = std::make_unique<viz::HostFrameSinkManager>();
 
     // The FrameSinkManagerImpl implementation is in-process here for tests.
-    frame_sink_manager_ = base::MakeUnique<viz::FrameSinkManagerImpl>();
+    frame_sink_manager_ = std::make_unique<viz::FrameSinkManagerImpl>();
     surface_utils::ConnectWithLocalFrameSinkManager(
         host_frame_sink_manager_.get(), frame_sink_manager_.get());
 
-    provider_ = base::MakeUnique<OffscreenCanvasProviderImpl>(
+    provider_ = std::make_unique<OffscreenCanvasProviderImpl>(
         host_frame_sink_manager_.get(), kRendererClientId);
   }
   void TearDown() override {
diff --git a/content/browser/renderer_host/p2p/socket_dispatcher_host.cc b/content/browser/renderer_host/p2p/socket_dispatcher_host.cc
index a06a265..26729a3 100644
--- a/content/browser/renderer_host/p2p/socket_dispatcher_host.cc
+++ b/content/browser/renderer_host/p2p/socket_dispatcher_host.cc
@@ -228,7 +228,7 @@
 
 void P2PSocketDispatcherHost::OnGetHostAddress(const std::string& host_name,
                                                int32_t request_id) {
-  std::unique_ptr<DnsRequest> request = base::MakeUnique<DnsRequest>(
+  std::unique_ptr<DnsRequest> request = std::make_unique<DnsRequest>(
       request_id, resource_context_->GetHostResolver());
   DnsRequest* request_ptr = request.get();
   dns_requests_.insert(std::move(request));
diff --git a/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc b/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc
index 4df3558..924bf66 100644
--- a/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc
+++ b/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc
@@ -194,7 +194,7 @@
     base::circular_deque<FakeDatagramServerSocket::UDPPacket>* sent_packets,
     std::vector<uint16_t>* used_ports,
     net::NetLog* net_log) {
-  return base::MakeUnique<FakeDatagramServerSocket>(sent_packets, used_ports);
+  return std::make_unique<FakeDatagramServerSocket>(sent_packets, used_ports);
 }
 
 }  // namespace
diff --git a/content/browser/renderer_host/pepper/browser_ppapi_host_impl.cc b/content/browser/renderer_host/pepper/browser_ppapi_host_impl.cc
index 36c26f8..9479695 100644
--- a/content/browser/renderer_host/pepper/browser_ppapi_host_impl.cc
+++ b/content/browser/renderer_host/pepper/browser_ppapi_host_impl.cc
@@ -154,7 +154,7 @@
   // See http://crbug.com/733548.
   if (instance_map_.find(instance) == instance_map_.end()) {
     instance_map_[instance] =
-        base::MakeUnique<InstanceData>(renderer_instance_data);
+        std::make_unique<InstanceData>(renderer_instance_data);
   } else {
     NOTREACHED();
   }
diff --git a/content/browser/renderer_host/pepper/content_browser_pepper_host_factory.cc b/content/browser/renderer_host/pepper/content_browser_pepper_host_factory.cc
index 3b38831a..f0cd482c 100644
--- a/content/browser/renderer_host/pepper/content_browser_pepper_host_factory.cc
+++ b/content/browser/renderer_host/pepper/content_browser_pepper_host_factory.cc
@@ -167,7 +167,7 @@
       case PpapiHostMsg_VpnProvider_Create::ID: {
         scoped_refptr<PepperVpnProviderMessageFilter> vpn_provider(
             new PepperVpnProviderMessageFilter(host_, instance));
-        return base::MakeUnique<ppapi::host::MessageFilterHost>(
+        return std::make_unique<ppapi::host::MessageFilterHost>(
             host_->GetPpapiHost(), instance, resource, std::move(vpn_provider));
       }
 #endif
diff --git a/content/browser/renderer_host/pepper/pepper_socket_utils.cc b/content/browser/renderer_host/pepper/pepper_socket_utils.cc
index b766a7f..d1bf34b4 100644
--- a/content/browser/renderer_host/pepper/pepper_socket_utils.cc
+++ b/content/browser/renderer_host/pepper/pepper_socket_utils.cc
@@ -81,36 +81,36 @@
                           ppapi::PPB_X509Certificate_Fields* fields) {
   const net::CertPrincipal& issuer = cert.issuer();
   fields->SetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_COMMON_NAME,
-                   base::MakeUnique<base::Value>(issuer.common_name));
+                   std::make_unique<base::Value>(issuer.common_name));
   fields->SetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_LOCALITY_NAME,
-                   base::MakeUnique<base::Value>(issuer.locality_name));
+                   std::make_unique<base::Value>(issuer.locality_name));
   fields->SetField(
       PP_X509CERTIFICATE_PRIVATE_ISSUER_STATE_OR_PROVINCE_NAME,
-      base::MakeUnique<base::Value>(issuer.state_or_province_name));
+      std::make_unique<base::Value>(issuer.state_or_province_name));
   fields->SetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_COUNTRY_NAME,
-                   base::MakeUnique<base::Value>(issuer.country_name));
+                   std::make_unique<base::Value>(issuer.country_name));
   fields->SetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_ORGANIZATION_NAME,
-                   base::MakeUnique<base::Value>(
+                   std::make_unique<base::Value>(
                        base::JoinString(issuer.organization_names, "\n")));
   fields->SetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_ORGANIZATION_UNIT_NAME,
-                   base::MakeUnique<base::Value>(
+                   std::make_unique<base::Value>(
                        base::JoinString(issuer.organization_unit_names, "\n")));
 
   const net::CertPrincipal& subject = cert.subject();
   fields->SetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_COMMON_NAME,
-                   base::MakeUnique<base::Value>(subject.common_name));
+                   std::make_unique<base::Value>(subject.common_name));
   fields->SetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_LOCALITY_NAME,
-                   base::MakeUnique<base::Value>(subject.locality_name));
+                   std::make_unique<base::Value>(subject.locality_name));
   fields->SetField(
       PP_X509CERTIFICATE_PRIVATE_SUBJECT_STATE_OR_PROVINCE_NAME,
-      base::MakeUnique<base::Value>(subject.state_or_province_name));
+      std::make_unique<base::Value>(subject.state_or_province_name));
   fields->SetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_COUNTRY_NAME,
-                   base::MakeUnique<base::Value>(subject.country_name));
+                   std::make_unique<base::Value>(subject.country_name));
   fields->SetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_ORGANIZATION_NAME,
-                   base::MakeUnique<base::Value>(
+                   std::make_unique<base::Value>(
                        base::JoinString(subject.organization_names, "\n")));
   fields->SetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_ORGANIZATION_UNIT_NAME,
-                   base::MakeUnique<base::Value>(base::JoinString(
+                   std::make_unique<base::Value>(base::JoinString(
                        subject.organization_unit_names, "\n")));
 
   const std::string& serial_number = cert.serial_number();
@@ -119,10 +119,10 @@
                                                        serial_number.length()));
   fields->SetField(
       PP_X509CERTIFICATE_PRIVATE_VALIDITY_NOT_BEFORE,
-      base::MakeUnique<base::Value>(cert.valid_start().ToDoubleT()));
+      std::make_unique<base::Value>(cert.valid_start().ToDoubleT()));
   fields->SetField(
       PP_X509CERTIFICATE_PRIVATE_VALIDITY_NOT_AFTER,
-      base::MakeUnique<base::Value>(cert.valid_expiry().ToDoubleT()));
+      std::make_unique<base::Value>(cert.valid_expiry().ToDoubleT()));
   std::string der;
   net::X509Certificate::GetDEREncoded(cert.os_cert_handle(), &der);
   fields->SetField(
diff --git a/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.cc b/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.cc
index 8799b033..5327e8d 100644
--- a/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.cc
+++ b/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.cc
@@ -210,16 +210,16 @@
         !recv_buffer->CreateAndMapAnonymous(kBufferSize))
       return PP_ERROR_NOMEMORY;
 
-    send_packet_buffer_ = base::MakeUnique<ppapi::VpnProviderSharedBuffer>(
+    send_packet_buffer_ = std::make_unique<ppapi::VpnProviderSharedBuffer>(
         kMaxBufferedPackets, kMaxPacketSize, std::move(send_buffer));
-    recv_packet_buffer_ = base::MakeUnique<ppapi::VpnProviderSharedBuffer>(
+    recv_packet_buffer_ = std::make_unique<ppapi::VpnProviderSharedBuffer>(
         kMaxBufferedPackets, kMaxPacketSize, std::move(recv_buffer));
   }
 
   vpn_service_proxy_->Bind(
       document_url_.host(), configuration_id_, configuration_name_,
       success_callback, failure_callback,
-      base::MakeUnique<PepperVpnProviderResourceHostProxyImpl>(
+      std::make_unique<PepperVpnProviderResourceHostProxyImpl>(
           weak_factory_.GetWeakPtr()));
 
   return PP_OK_COMPLETIONPENDING;
diff --git a/content/browser/renderer_host/render_process_host_browsertest.cc b/content/browser/renderer_host/render_process_host_browsertest.cc
index 657bb97..0872d53 100644
--- a/content/browser/renderer_host/render_process_host_browsertest.cc
+++ b/content/browser/renderer_host/render_process_host_browsertest.cc
@@ -58,14 +58,14 @@
     const net::test_server::HttpRequest& request) {
   if (request.relative_url != "/beacon")
     return nullptr;
-  return base::MakeUnique<net::test_server::BasicHttpResponse>();
+  return std::make_unique<net::test_server::BasicHttpResponse>();
 }
 
 std::unique_ptr<net::test_server::HttpResponse> HandleHungBeacon(
     const net::test_server::HttpRequest& request) {
   if (request.relative_url != "/beacon")
     return nullptr;
-  return base::MakeUnique<net::test_server::HungResponse>();
+  return std::make_unique<net::test_server::HungResponse>();
 }
 
 class RenderProcessHostTest : public ContentBrowserTest,
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 828d9f8..bfd6f1e 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -1506,7 +1506,7 @@
     // Build command line for renderer.  We call AppendRendererCommandLine()
     // first so the process type argument will appear first.
     std::unique_ptr<base::CommandLine> cmd_line =
-        base::MakeUnique<base::CommandLine>(renderer_path);
+        std::make_unique<base::CommandLine>(renderer_path);
     if (!renderer_prefix.empty())
       cmd_line->PrependWrapper(renderer_prefix);
     AppendRendererCommandLine(cmd_line.get());
@@ -1515,7 +1515,7 @@
     // As long as there's no renderer prefix, we can use the zygote process
     // at this stage.
     child_process_launcher_.reset(new ChildProcessLauncher(
-        base::MakeUnique<RendererSandboxedProcessLauncherDelegate>(),
+        std::make_unique<RendererSandboxedProcessLauncherDelegate>(),
         std::move(cmd_line), GetID(), this,
         std::move(broker_client_invitation_),
         base::Bind(&RenderProcessHostImpl::OnMojoError, id_)));
@@ -1564,7 +1564,7 @@
 
   // Establish a ServiceManager connection for the new render service instance.
   broker_client_invitation_ =
-      base::MakeUnique<mojo::edk::OutgoingBrokerClientInvitation>();
+      std::make_unique<mojo::edk::OutgoingBrokerClientInvitation>();
   service_manager::Identity child_identity(
       mojom::kRendererServiceName,
       BrowserContext::GetServiceUserIdFor(GetBrowserContext()),
@@ -1778,7 +1778,7 @@
 }
 
 void RenderProcessHostImpl::RegisterMojoInterfaces() {
-  auto registry = base::MakeUnique<service_manager::BinderRegistry>();
+  auto registry = std::make_unique<service_manager::BinderRegistry>();
 
   channel_->AddAssociatedInterfaceForIOThread(
       base::Bind(&IndexedDBDispatcherHost::AddBinding,
@@ -2002,7 +2002,7 @@
   if (!offscreen_canvas_provider_) {
     // The client id gets converted to a uint32_t in FrameSinkId.
     uint32_t renderer_client_id = base::checked_cast<uint32_t>(id_);
-    offscreen_canvas_provider_ = base::MakeUnique<OffscreenCanvasProviderImpl>(
+    offscreen_canvas_provider_ = std::make_unique<OffscreenCanvasProviderImpl>(
         GetHostFrameSinkManager(), renderer_client_id);
   }
   offscreen_canvas_provider_->Add(std::move(request));
@@ -2128,12 +2128,12 @@
 
   if (!resource_coordinator::IsResourceCoordinatorEnabled()) {
     process_resource_coordinator_ =
-        base::MakeUnique<resource_coordinator::ResourceCoordinatorInterface>(
+        std::make_unique<resource_coordinator::ResourceCoordinatorInterface>(
             nullptr, resource_coordinator::CoordinationUnitType::kProcess);
   } else {
     auto* connection = ServiceManagerConnection::GetForProcess();
     process_resource_coordinator_ =
-        base::MakeUnique<resource_coordinator::ResourceCoordinatorInterface>(
+        std::make_unique<resource_coordinator::ResourceCoordinatorInterface>(
             connection ? connection->GetConnector() : nullptr,
             resource_coordinator::CoordinationUnitType::kProcess);
   }
diff --git a/content/browser/renderer_host/render_process_host_unittest.cc b/content/browser/renderer_host/render_process_host_unittest.cc
index 2af6de9a..fbbba99 100644
--- a/content/browser/renderer_host/render_process_host_unittest.cc
+++ b/content/browser/renderer_host/render_process_host_unittest.cc
@@ -67,7 +67,7 @@
   ASSERT_NE(0u, kMaxRendererProcessCount);
   std::vector<std::unique_ptr<MockRenderProcessHost>> hosts;
   for (size_t i = 0; i < kMaxRendererProcessCount; ++i) {
-    hosts.push_back(base::MakeUnique<MockRenderProcessHost>(browser_context()));
+    hosts.push_back(std::make_unique<MockRenderProcessHost>(browser_context()));
   }
 
   // Verify that the renderer sharing will happen.
@@ -86,7 +86,7 @@
   ASSERT_NE(0u, kMaxRendererProcessCount);
   std::vector<std::unique_ptr<MockRenderProcessHost>> hosts;
   for (size_t i = 0; i < kMaxRendererProcessCount; ++i) {
-    hosts.push_back(base::MakeUnique<MockRenderProcessHost>(browser_context()));
+    hosts.push_back(std::make_unique<MockRenderProcessHost>(browser_context()));
   }
 
   // Verify that the renderer sharing still won't happen.
diff --git a/content/browser/renderer_host/render_view_host_factory.cc b/content/browser/renderer_host/render_view_host_factory.cc
index 831b6c7..c6b6cf1 100644
--- a/content/browser/renderer_host/render_view_host_factory.cc
+++ b/content/browser/renderer_host/render_view_host_factory.cc
@@ -50,7 +50,7 @@
   }
   return new RenderViewHostImpl(
       instance,
-      base::MakeUnique<RenderWidgetHostImpl>(
+      std::make_unique<RenderWidgetHostImpl>(
           widget_delegate, instance->GetProcess(), routing_id, nullptr, hidden),
       delegate, main_frame_routing_id, swapped_out,
       true /* has_initialized_audio_host */);
diff --git a/content/browser/renderer_host/render_view_host_unittest.cc b/content/browser/renderer_host/render_view_host_unittest.cc
index 132ed24e..ca1837cb 100644
--- a/content/browser/renderer_host/render_view_host_unittest.cc
+++ b/content/browser/renderer_host/render_view_host_unittest.cc
@@ -83,7 +83,7 @@
 
   mojom::WidgetPtr widget;
   std::unique_ptr<MockWidgetImpl> widget_impl =
-      base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget));
+      std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget));
   test_rvh()->CreateNewFullscreenWidget(routing_id, std::move(widget));
 }
 
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 358d7db..8b2826c 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -813,7 +813,7 @@
     const ResizeParams& resize_params) {
   resize_ack_pending_ = resize_params.needs_resize_ack;
 
-  old_resize_params_ = base::MakeUnique<ResizeParams>(resize_params);
+  old_resize_params_ = std::make_unique<ResizeParams>(resize_params);
 }
 
 void RenderWidgetHostImpl::WasResized() {
@@ -1396,7 +1396,7 @@
     base::OnceCallback<void(SyntheticGesture::Result)> on_complete) {
   if (!synthetic_gesture_controller_ && view_) {
     synthetic_gesture_controller_ =
-        base::MakeUnique<SyntheticGestureController>(
+        std::make_unique<SyntheticGestureController>(
             this, view_->CreateSyntheticGestureTarget());
   }
   if (synthetic_gesture_controller_) {
@@ -2829,12 +2829,12 @@
     // widget shutdown, so we present an UnboundWidgetInputHandler had
     // DLOGS the message calls.
     legacy_widget_input_handler_ =
-        base::MakeUnique<UnboundWidgetInputHandler>();
+        std::make_unique<UnboundWidgetInputHandler>();
   } else {
     input_router_.reset(new LegacyInputRouterImpl(
         process_, this, this, routing_id_, GetInputRouterConfigForPlatform()));
     legacy_widget_input_handler_ =
-        base::MakeUnique<LegacyIPCWidgetInputHandler>(
+        std::make_unique<LegacyIPCWidgetInputHandler>(
             static_cast<LegacyInputRouterImpl*>(input_router_.get()));
   }
 }
diff --git a/content/browser/renderer_host/render_widget_host_input_event_router_unittest.cc b/content/browser/renderer_host/render_widget_host_input_event_router_unittest.cc
index a419726..e08df123 100644
--- a/content/browser/renderer_host/render_widget_host_input_event_router_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_input_event_router_unittest.cc
@@ -85,28 +85,28 @@
  protected:
   // testing::Test:
   void SetUp() override {
-    browser_context_ = base::MakeUnique<TestBrowserContext>();
+    browser_context_ = std::make_unique<TestBrowserContext>();
     process_host1_ =
-        base::MakeUnique<MockRenderProcessHost>(browser_context_.get());
+        std::make_unique<MockRenderProcessHost>(browser_context_.get());
     process_host2_ =
-        base::MakeUnique<MockRenderProcessHost>(browser_context_.get());
+        std::make_unique<MockRenderProcessHost>(browser_context_.get());
     mojom::WidgetPtr widget1;
     widget_impl1_ =
-        base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget1));
-    widget_host1_ = base::MakeUnique<RenderWidgetHostImpl>(
+        std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget1));
+    widget_host1_ = std::make_unique<RenderWidgetHostImpl>(
         &delegate_, process_host1_.get(), process_host1_->GetNextRoutingID(),
         std::move(widget1), false);
     mojom::WidgetPtr widget2;
     widget_impl2_ =
-        base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget2));
-    widget_host2_ = base::MakeUnique<RenderWidgetHostImpl>(
+        std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget2));
+    widget_host2_ = std::make_unique<RenderWidgetHostImpl>(
         &delegate_, process_host2_.get(), process_host2_->GetNextRoutingID(),
         std::move(widget2), false);
 
-    view_root_ = base::MakeUnique<MockRootRenderWidgetHostView>(
+    view_root_ = std::make_unique<MockRootRenderWidgetHostView>(
         widget_host1_.get(), frame_sink_id_map_);
     view_other_ =
-        base::MakeUnique<MockRenderWidgetHostView>(widget_host2_.get());
+        std::make_unique<MockRenderWidgetHostView>(widget_host2_.get());
 
     // Set up the RWHIER's FrameSinkId to RWHV map so that we can control the
     // result of RWHIER's hittesting.
diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc
index f31b50c..c824efa5 100644
--- a/content/browser/renderer_host/render_widget_host_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_unittest.cc
@@ -182,7 +182,7 @@
       input_router_.reset(new LegacyInputRouterImpl(
           process_, this, this, routing_id_, InputRouter::Config()));
       legacy_widget_input_handler_ =
-          base::MakeUnique<LegacyIPCWidgetInputHandler>(
+          std::make_unique<LegacyIPCWidgetInputHandler>(
               static_cast<LegacyInputRouterImpl*>(input_router_.get()));
     }
   }
@@ -209,7 +209,7 @@
                                       int32_t routing_id) {
     mojom::WidgetPtr widget;
     std::unique_ptr<MockWidgetImpl> widget_impl =
-        base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget));
+        std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget));
 
     return new MockRenderWidgetHost(delegate, process, routing_id,
                                     std::move(widget_impl), std::move(widget));
@@ -641,7 +641,7 @@
     viz::mojom::CompositorFrameSinkClientRequest client_request =
         mojo::MakeRequest(&renderer_compositor_frame_sink_ptr_);
     renderer_compositor_frame_sink_ =
-        base::MakeUnique<FakeRendererCompositorFrameSink>(
+        std::make_unique<FakeRendererCompositorFrameSink>(
             std::move(sink), std::move(client_request));
     host_->RequestCompositorFrameSink(
         std::move(sink_request),
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index aa4632c..8cb720f 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -348,11 +348,13 @@
   config.enable_longpress_drag_selection =
       base::CommandLine::ForCurrentProcess()->HasSwitch(
           switches::kEnableLongpressDragSelection);
-  return base::MakeUnique<ui::TouchSelectionController>(client, config);
+  return std::make_unique<ui::TouchSelectionController>(client, config);
 }
 
 gfx::RectF GetSelectionRect(const ui::TouchSelectionController& controller) {
   gfx::RectF rect = controller.GetRectBetweenBounds();
+  if (rect.IsEmpty())
+    return rect;
 
   rect.Union(controller.GetStartHandleRect());
   rect.Union(controller.GetEndHandleRect());
@@ -506,7 +508,7 @@
 
   host_->SetView(this);
   touch_selection_controller_client_manager_ =
-      base::MakeUnique<TouchSelectionControllerClientManagerAndroid>(this);
+      std::make_unique<TouchSelectionControllerClientManagerAndroid>(this);
   SetContentViewCore(content_view_core);
 
   CreateOverscrollControllerIfPossible();
@@ -2417,13 +2419,13 @@
   if (!compositor)
     return;
 
-  overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>(
+  overscroll_controller_ = std::make_unique<OverscrollControllerAndroid>(
       overscroll_refresh_handler, compositor, view_.GetDipScale());
 }
 
 void RenderWidgetHostViewAndroid::SetOverscrollControllerForTesting(
     ui::OverscrollRefreshHandler* overscroll_refresh_handler) {
-  overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>(
+  overscroll_controller_ = std::make_unique<OverscrollControllerAndroid>(
       overscroll_refresh_handler, view_.GetWindowAndroid()->GetCompositor(),
       view_.GetDipScale());
 }
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 37b65ba..b119ec4 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -1930,12 +1930,12 @@
   // Tests may set |delegated_frame_host_client_|.
   if (!delegated_frame_host_client_) {
     delegated_frame_host_client_ =
-        base::MakeUnique<DelegatedFrameHostClientAura>(this);
+        std::make_unique<DelegatedFrameHostClientAura>(this);
   }
 
   const bool enable_viz =
       base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableViz);
-  delegated_frame_host_ = base::MakeUnique<DelegatedFrameHost>(
+  delegated_frame_host_ = std::make_unique<DelegatedFrameHost>(
       frame_sink_id_, delegated_frame_host_client_.get(),
       enable_surface_synchronization_, enable_viz);
 
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
index f8a0ed48..17b6658 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -413,7 +413,7 @@
   std::unique_ptr<ui::CompositorLock> GetCompositorLock(
       ui::CompositorLockClient* client) override {
     resize_locked_ = compositor_locked_ = true;
-    return base::MakeUnique<ui::CompositorLock>(nullptr,
+    return std::make_unique<ui::CompositorLock>(nullptr,
                                                 weak_ptr_factory_.GetWeakPtr());
   }
   // CompositorResizeLockClient implemention. Overrides from
@@ -460,7 +460,7 @@
     viz::mojom::CompositorFrameSinkClientRequest client_request =
         mojo::MakeRequest(&renderer_compositor_frame_sink_ptr_);
     renderer_compositor_frame_sink_ =
-        base::MakeUnique<FakeRendererCompositorFrameSink>(
+        std::make_unique<FakeRendererCompositorFrameSink>(
             std::move(sink), std::move(client_request));
     DidCreateNewRendererCompositorFrameSink(
         renderer_compositor_frame_sink_ptr_.get());
@@ -601,7 +601,7 @@
                                           int32_t routing_id) {
     mojom::WidgetPtr widget;
     std::unique_ptr<MockWidgetImpl> widget_impl =
-        base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget));
+        std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget));
 
     return new MockRenderWidgetHostImpl(delegate, process, routing_id,
                                         std::move(widget_impl),
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.cc b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
index 4845503..e2a083f 100644
--- a/content/browser/renderer_host/render_widget_host_view_child_frame.cc
+++ b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
@@ -168,7 +168,7 @@
       // We have managers in Aura and Android, as well as outside of content/.
       // There is no manager for Mac OS.
       selection_controller_client_ =
-          base::MakeUnique<TouchSelectionControllerClientChildFrame>(this,
+          std::make_unique<TouchSelectionControllerClientChildFrame>(this,
                                                                      manager);
       manager->AddObserver(this);
     }
@@ -813,7 +813,7 @@
   if (!IsSurfaceAvailableForCopy()) {
     // Defer submitting the copy request until after a frame is drawn, at which
     // point we should be guaranteed that the surface is available.
-    RegisterFrameSwappedCallback(base::MakeUnique<base::Closure>(base::Bind(
+    RegisterFrameSwappedCallback(std::make_unique<base::Closure>(base::Bind(
         &RenderWidgetHostViewChildFrame::SubmitSurfaceCopyRequest, AsWeakPtr(),
         src_rect, output_size, callback, preferred_color_type)));
     return;
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame_unittest.cc b/content/browser/renderer_host/render_widget_host_view_child_frame_unittest.cc
index b1c69c4..ed97af4 100644
--- a/content/browser/renderer_host/render_widget_host_view_child_frame_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_view_child_frame_unittest.cc
@@ -94,7 +94,7 @@
         new MockRenderProcessHost(browser_context_.get());
     int32_t routing_id = process_host->GetNextRoutingID();
     mojom::WidgetPtr widget;
-    widget_impl_ = base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget));
+    widget_impl_ = std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget));
     widget_host_ = new RenderWidgetHostImpl(
         &delegate_, process_host, routing_id, std::move(widget), false);
     view_ = RenderWidgetHostViewChildFrame::Create(widget_host_);
@@ -108,7 +108,7 @@
     viz::mojom::CompositorFrameSinkClientRequest client_request =
         mojo::MakeRequest(&renderer_compositor_frame_sink_ptr_);
     renderer_compositor_frame_sink_ =
-        base::MakeUnique<FakeRendererCompositorFrameSink>(
+        std::make_unique<FakeRendererCompositorFrameSink>(
             std::move(sink), std::move(client_request));
     view_->DidCreateNewRendererCompositorFrameSink(
         renderer_compositor_frame_sink_ptr_.get());
diff --git a/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper_unittest.mm b/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper_unittest.mm
index 167a2f75..b575cb19 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper_unittest.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper_unittest.mm
@@ -143,7 +143,7 @@
   int32_t routing_id = process_host->GetNextRoutingID();
   mojom::WidgetPtr widget;
   std::unique_ptr<MockWidgetImpl> widget_impl =
-      base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget));
+      std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget));
 
   RenderWidgetHostImpl* render_widget = new RenderWidgetHostImpl(
       &delegate, process_host, routing_id, std::move(widget), false);
diff --git a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
index e378cb3..9869018 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
@@ -245,7 +245,7 @@
                                           int32_t routing_id) {
     mojom::WidgetPtr widget;
     std::unique_ptr<MockWidgetImpl> widget_impl =
-        base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget));
+        std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget));
 
     return new MockRenderWidgetHostImpl(delegate, process, routing_id,
                                         std::move(widget_impl),
diff --git a/content/browser/renderer_host/text_input_client_mac_unittest.mm b/content/browser/renderer_host/text_input_client_mac_unittest.mm
index b742d36..3f9607c 100644
--- a/content/browser/renderer_host/text_input_client_mac_unittest.mm
+++ b/content/browser/renderer_host/text_input_client_mac_unittest.mm
@@ -61,7 +61,7 @@
     int32_t routing_id = rph->GetNextRoutingID();
     mojom::WidgetPtr widget;
     mock_widget_impl_ =
-        base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget));
+        std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget));
 
     widget_.reset(new RenderWidgetHostImpl(&delegate_, rph, routing_id,
                                            std::move(widget), false));
diff --git a/content/browser/renderer_host/ui_events_helper.cc b/content/browser/renderer_host/ui_events_helper.cc
index 9bfc3bb..5e4c6f9 100644
--- a/content/browser/renderer_host/ui_events_helper.cc
+++ b/content/browser/renderer_host/ui_events_helper.cc
@@ -77,7 +77,7 @@
       location = point.PositionInWidget();
     else
       location = point.PositionInScreen();
-    auto uievent = base::MakeUnique<ui::TouchEvent>(
+    auto uievent = std::make_unique<ui::TouchEvent>(
         type, gfx::Point(), timestamp,
         ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH, point.id,
                            point.radius_x, point.radius_y, point.force),
diff --git a/content/browser/renderer_host/web_database_host_impl.cc b/content/browser/renderer_host/web_database_host_impl.cc
index 1be7488c..a0078eef0 100644
--- a/content/browser/renderer_host/web_database_host_impl.cc
+++ b/content/browser/renderer_host/web_database_host_impl.cc
@@ -72,7 +72,7 @@
     content::mojom::WebDatabaseHostRequest request) {
   DCHECK(db_tracker->task_runner()->RunsTasksInCurrentSequence());
   mojo::MakeStrongBinding(
-      base::MakeUnique<WebDatabaseHostImpl>(process_id, std::move(db_tracker)),
+      std::make_unique<WebDatabaseHostImpl>(process_id, std::move(db_tracker)),
       std::move(request));
 }
 
diff --git a/content/browser/resource_context_impl.cc b/content/browser/resource_context_impl.cc
index 7821d7d..895a9367 100644
--- a/content/browser/resource_context_impl.cc
+++ b/content/browser/resource_context_impl.cc
@@ -51,7 +51,7 @@
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   if (!context->GetUserData(kURLDataManagerBackendKeyName)) {
     context->SetUserData(kURLDataManagerBackendKeyName,
-                         base::MakeUnique<URLDataManagerBackend>());
+                         std::make_unique<URLDataManagerBackend>());
   }
   return static_cast<URLDataManagerBackend*>(
       context->GetUserData(kURLDataManagerBackendKeyName));
@@ -62,11 +62,11 @@
 
   resource_context->SetUserData(
       kBlobStorageContextKeyName,
-      base::MakeUnique<UserDataAdapter<ChromeBlobStorageContext>>(
+      std::make_unique<UserDataAdapter<ChromeBlobStorageContext>>(
           ChromeBlobStorageContext::GetFor(browser_context)));
 
   resource_context->SetUserData(
-      kStreamContextKeyName, base::MakeUnique<UserDataAdapter<StreamContext>>(
+      kStreamContextKeyName, std::make_unique<UserDataAdapter<StreamContext>>(
                                  StreamContext::GetFor(browser_context)));
 
   resource_context->DetachFromSequence();
diff --git a/content/browser/security_exploit_browsertest.cc b/content/browser/security_exploit_browsertest.cc
index 35af2be..fee17d1a 100644
--- a/content/browser/security_exploit_browsertest.cc
+++ b/content/browser/security_exploit_browsertest.cc
@@ -300,7 +300,7 @@
 
   mojom::WidgetPtr widget;
   std::unique_ptr<MockWidgetImpl> widget_impl =
-      base::MakeUnique<MockWidgetImpl>(mojo::MakeRequest(&widget));
+      std::make_unique<MockWidgetImpl>(mojo::MakeRequest(&widget));
 
   // Since this test executes on the UI thread and hopping threads might cause
   // different timing in the test, let's simulate a CreateNewWidget call coming
@@ -550,7 +550,7 @@
   // Create commit params with different origins in params.url and
   // params.origin.
   std::unique_ptr<FrameHostMsg_DidCommitProvisionalLoad_Params> params =
-      base::MakeUnique<FrameHostMsg_DidCommitProvisionalLoad_Params>();
+      std::make_unique<FrameHostMsg_DidCommitProvisionalLoad_Params>();
   params->nav_entry_id = 0;
   params->did_create_new_entry = false;
   params->url = url;
@@ -668,7 +668,7 @@
   // put a PageState on the cross-site iframe's FrameNavigationEntry.  Forge a
   // data URL within the PageState that differs from child1_url.
   std::unique_ptr<FrameHostMsg_DidCommitProvisionalLoad_Params> params =
-      base::MakeUnique<FrameHostMsg_DidCommitProvisionalLoad_Params>();
+      std::make_unique<FrameHostMsg_DidCommitProvisionalLoad_Params>();
   params->nav_entry_id = nav_entry_id;
   params->did_create_new_entry = false;
   params->url = GURL("about:blank");
diff --git a/content/browser/service_manager/common_browser_interfaces.cc b/content/browser/service_manager/common_browser_interfaces.cc
index 6956634..43852b5 100644
--- a/content/browser/service_manager/common_browser_interfaces.cc
+++ b/content/browser/service_manager/common_browser_interfaces.cc
@@ -83,7 +83,7 @@
 }  // namespace
 
 void RegisterCommonBrowserInterfaces(ServiceManagerConnection* connection) {
-  connection->AddConnectionFilter(base::MakeUnique<ConnectionFilterImpl>());
+  connection->AddConnectionFilter(std::make_unique<ConnectionFilterImpl>());
 }
 
 }  // namespace content
diff --git a/content/browser/service_manager/service_manager_context.cc b/content/browser/service_manager/service_manager_context.cc
index 1dfd4c2..21957a3 100644
--- a/content/browser/service_manager/service_manager_context.cc
+++ b/content/browser/service_manager/service_manager_context.cc
@@ -266,8 +266,8 @@
       std::unique_ptr<BuiltinManifestProvider> manifest_provider,
       service_manager::mojom::ServicePtrInfo packaged_services_service_info) {
     manifest_provider_ = std::move(manifest_provider);
-    service_manager_ = base::MakeUnique<service_manager::ServiceManager>(
-        base::MakeUnique<NullServiceProcessLauncherFactory>(), nullptr,
+    service_manager_ = std::make_unique<service_manager::ServiceManager>(
+        std::make_unique<NullServiceProcessLauncherFactory>(), nullptr,
         manifest_provider_.get());
 
     service_manager::mojom::ServicePtr packaged_services_service;
@@ -317,7 +317,7 @@
         service_manager::GetServiceRequestFromCommandLine(invitation.get());
   } else {
     std::unique_ptr<BuiltinManifestProvider> manifest_provider =
-        base::MakeUnique<BuiltinManifestProvider>();
+        std::make_unique<BuiltinManifestProvider>();
 
     static const struct ManifestInfo {
       const char* name;
diff --git a/content/browser/service_worker/embedded_worker_instance.cc b/content/browser/service_worker/embedded_worker_instance.cc
index 6a1a454..ad571a7 100644
--- a/content/browser/service_worker/embedded_worker_instance.cc
+++ b/content/browser/service_worker/embedded_worker_instance.cc
@@ -93,7 +93,7 @@
     SetupProcessCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   auto process_info =
-      base::MakeUnique<ServiceWorkerProcessManager::AllocatedProcessInfo>();
+      std::make_unique<ServiceWorkerProcessManager::AllocatedProcessInfo>();
   std::unique_ptr<EmbeddedWorkerInstance::DevToolsProxy> devtools_proxy;
   if (!process_manager) {
     BrowserThread::PostTask(
@@ -141,7 +141,7 @@
   params->worker_devtools_agent_route_id = routing_id;
   // Create DevToolsProxy here to ensure that the WorkerCreated() call is
   // balanced by DevToolsProxy's destructor calling WorkerDestroyed().
-  devtools_proxy = base::MakeUnique<EmbeddedWorkerInstance::DevToolsProxy>(
+  devtools_proxy = std::make_unique<EmbeddedWorkerInstance::DevToolsProxy>(
       process_id, routing_id);
 
   // Set EmbeddedWorkerSettings for content settings only readable from the UI
@@ -416,7 +416,7 @@
     // Notify the instance that a process is allocated.
     state_ = ProcessAllocationState::ALLOCATED;
     instance_->OnProcessAllocated(
-        base::MakeUnique<WorkerProcessHandle>(instance_->context_,
+        std::make_unique<WorkerProcessHandle>(instance_->context_,
                                               instance_->embedded_worker_id(),
                                               process_info->process_id),
         start_situation);
@@ -651,7 +651,7 @@
   instance_host_binding_.Bind(mojo::MakeRequest(&host_ptr_info));
 
   blink::mojom::WorkerContentSettingsProxyPtr content_settings_proxy_ptr_info;
-  content_settings_ = base::MakeUnique<ServiceWorkerContentSettingsProxyImpl>(
+  content_settings_ = std::make_unique<ServiceWorkerContentSettingsProxyImpl>(
       params->script_url, context_,
       mojo::MakeRequest(&content_settings_proxy_ptr_info));
 
diff --git a/content/browser/service_worker/embedded_worker_instance_unittest.cc b/content/browser/service_worker/embedded_worker_instance_unittest.cc
index 090e30c..c374d3a 100644
--- a/content/browser/service_worker/embedded_worker_instance_unittest.cc
+++ b/content/browser/service_worker/embedded_worker_instance_unittest.cc
@@ -174,7 +174,7 @@
   std::unique_ptr<EmbeddedWorkerStartParams>
   CreateStartParams(int version_id, const GURL& scope, const GURL& script_url) {
     std::unique_ptr<EmbeddedWorkerStartParams> params =
-        base::MakeUnique<EmbeddedWorkerStartParams>();
+        std::make_unique<EmbeddedWorkerStartParams>();
     params->service_worker_version_id = version_id;
     params->scope = scope;
     params->script_url = script_url;
@@ -186,7 +186,7 @@
   mojom::ServiceWorkerProviderInfoForStartWorkerPtr CreateProviderInfo(
       int /* process_id */) {
     provider_host_endpoints_.emplace_back(
-        base::MakeUnique<ProviderHostEndpoints>());
+        std::make_unique<ProviderHostEndpoints>());
     return provider_host_endpoints_.back()->CreateProviderInfoPtr();
   }
 
@@ -692,7 +692,7 @@
 
   bool was_resume_after_download_called = false;
   helper_->RegisterMockInstanceClient(
-      base::MakeUnique<DontReceiveResumeAfterDownloadInstanceClient>(
+      std::make_unique<DontReceiveResumeAfterDownloadInstanceClient>(
           helper_->AsWeakPtr(), &was_resume_after_download_called));
 
   std::unique_ptr<EmbeddedWorkerInstance> worker =
@@ -882,7 +882,7 @@
 
   // Let StartWorker fail; binding is discarded in the middle of IPC
   helper_->RegisterMockInstanceClient(
-      base::MakeUnique<FailEmbeddedWorkerInstanceClientImpl>(
+      std::make_unique<FailEmbeddedWorkerInstanceClientImpl>(
           helper_->AsWeakPtr()));
   ASSERT_EQ(mock_instance_clients()->size(), 1UL);
 
@@ -936,7 +936,7 @@
   const GURL pattern("http://example.com/");
   const GURL url("http://example.com/worker.js");
   std::unique_ptr<StoreMessageInstanceClient> instance_client =
-      base::MakeUnique<StoreMessageInstanceClient>(helper_->AsWeakPtr());
+      std::make_unique<StoreMessageInstanceClient>(helper_->AsWeakPtr());
   StoreMessageInstanceClient* instance_client_rawptr = instance_client.get();
   helper_->RegisterMockInstanceClient(std::move(instance_client));
   ASSERT_EQ(mock_instance_clients()->size(), 1UL);
@@ -987,7 +987,7 @@
   std::unique_ptr<EmbeddedWorkerInstance> worker =
       embedded_worker_registry()->CreateWorker();
   SetWorkerStatus(worker.get(), EmbeddedWorkerStatus::STARTING);
-  auto params = base::MakeUnique<EmbeddedWorkerStartParams>();
+  auto params = std::make_unique<EmbeddedWorkerStartParams>();
   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 969595d2..5ecc446a 100644
--- a/content/browser/service_worker/embedded_worker_test_helper.cc
+++ b/content/browser/service_worker/embedded_worker_test_helper.cc
@@ -136,7 +136,7 @@
   ASSERT_GE(clients->size(), next_client_index);
   if (clients->size() == next_client_index) {
     clients->push_back(
-        base::MakeUnique<MockEmbeddedWorkerInstanceClient>(helper));
+        std::make_unique<MockEmbeddedWorkerInstanceClient>(helper));
   }
 
   std::unique_ptr<MockEmbeddedWorkerInstanceClient>& client =
@@ -153,7 +153,7 @@
                      int thread_id,
                      mojom::ServiceWorkerEventDispatcherRequest request) {
     mojo::MakeStrongBinding(
-        base::MakeUnique<MockServiceWorkerEventDispatcher>(helper, thread_id),
+        std::make_unique<MockServiceWorkerEventDispatcher>(helper, thread_id),
         std::move(request));
   }
 
@@ -377,11 +377,11 @@
 EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper(
     const base::FilePath& user_data_directory,
     scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter)
-    : browser_context_(base::MakeUnique<TestBrowserContext>()),
+    : browser_context_(std::make_unique<TestBrowserContext>()),
       render_process_host_(
-          base::MakeUnique<MockRenderProcessHost>(browser_context_.get())),
+          std::make_unique<MockRenderProcessHost>(browser_context_.get())),
       new_render_process_host_(
-          base::MakeUnique<MockRenderProcessHost>(browser_context_.get())),
+          std::make_unique<MockRenderProcessHost>(browser_context_.get())),
       wrapper_(base::MakeRefCounted<ServiceWorkerContextWrapper>(
           browser_context_.get())),
       mock_instance_clients_next_index_(0),
@@ -408,17 +408,17 @@
   // Install a mocked mojom::Renderer interface to catch requests to
   // establish Mojo connection for EWInstanceClient.
   mock_renderer_interface_ =
-      base::MakeUnique<MockRendererInterface>(AsWeakPtr());
+      std::make_unique<MockRendererInterface>(AsWeakPtr());
 
   auto renderer_interface_ptr =
-      base::MakeUnique<mojom::RendererAssociatedPtr>();
+      std::make_unique<mojom::RendererAssociatedPtr>();
   mock_renderer_interface_->AddBinding(
       mojo::MakeIsolatedRequest(renderer_interface_ptr.get()));
   render_process_host_->OverrideRendererInterfaceForTesting(
       std::move(renderer_interface_ptr));
 
   auto new_renderer_interface_ptr =
-      base::MakeUnique<mojom::RendererAssociatedPtr>();
+      std::make_unique<mojom::RendererAssociatedPtr>();
   mock_renderer_interface_->AddBinding(
       mojo::MakeIsolatedRequest(new_renderer_interface_ptr.get()));
   new_render_process_host_->OverrideRendererInterfaceForTesting(
@@ -622,13 +622,13 @@
         finish_callback) {
   response_callback->OnResponse(
       ServiceWorkerResponse(
-          base::MakeUnique<std::vector<GURL>>(), 200, "OK",
+          std::make_unique<std::vector<GURL>>(), 200, "OK",
           network::mojom::FetchResponseType::kDefault,
-          base::MakeUnique<ServiceWorkerHeaderMap>(), std::string(), 0,
+          std::make_unique<ServiceWorkerHeaderMap>(), std::string(), 0,
           nullptr /* blob */, blink::kWebServiceWorkerResponseErrorUnknown,
           base::Time(), false /* is_in_cache_storage */,
           std::string() /* cache_storage_cache_name */,
-          base::MakeUnique<
+          std::make_unique<
               ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
       base::Time::Now());
   std::move(finish_callback)
diff --git a/content/browser/service_worker/embedded_worker_test_helper.h b/content/browser/service_worker/embedded_worker_test_helper.h
index 990eac3..aa0e603 100644
--- a/content/browser/service_worker/embedded_worker_test_helper.h
+++ b/content/browser/service_worker/embedded_worker_test_helper.h
@@ -417,7 +417,7 @@
 MockType* EmbeddedWorkerTestHelper::CreateAndRegisterMockInstanceClient(
     Args&&... args) {
   std::unique_ptr<MockType> mock =
-      base::MakeUnique<MockType>(std::forward<Args>(args)...);
+      std::make_unique<MockType>(std::forward<Args>(args)...);
   MockType* mock_rawptr = mock.get();
   RegisterMockInstanceClient(std::move(mock));
   return mock_rawptr;
diff --git a/content/browser/service_worker/foreign_fetch_request_handler_unittest.cc b/content/browser/service_worker/foreign_fetch_request_handler_unittest.cc
index 3423d01..c8de6a4 100644
--- a/content/browser/service_worker/foreign_fetch_request_handler_unittest.cc
+++ b/content/browser/service_worker/foreign_fetch_request_handler_unittest.cc
@@ -86,7 +86,7 @@
 
     // Fix the time for testing to kNowTimestamp
     std::unique_ptr<base::SimpleTestClock> clock =
-        base::MakeUnique<base::SimpleTestClock>();
+        std::make_unique<base::SimpleTestClock>();
     clock->SetNow(base::Time::FromDoubleT(kNowTimestamp));
     version_->SetClockForTesting(std::move(clock));
 
@@ -139,7 +139,7 @@
 
   static std::unique_ptr<net::HttpResponseInfo> CreateTestHttpResponseInfo() {
     std::unique_ptr<net::HttpResponseInfo> http_info(
-        base::MakeUnique<net::HttpResponseInfo>());
+        std::make_unique<net::HttpResponseInfo>());
     http_info->ssl_info.cert =
         net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem");
     DCHECK(http_info->ssl_info.is_valid());
diff --git a/content/browser/service_worker/link_header_support.cc b/content/browser/service_worker/link_header_support.cc
index aebedfb..a505f5c 100644
--- a/content/browser/service_worker/link_header_support.cc
+++ b/content/browser/service_worker/link_header_support.cc
@@ -143,8 +143,8 @@
   if (rel_param == params.end() || !rel_param->second)
     return;
 
-  const auto validator = base::MakeUnique<blink::TrialTokenValidator>(
-      base::MakeUnique<TrialPolicyImpl>());
+  const auto validator = std::make_unique<blink::TrialTokenValidator>(
+      std::make_unique<TrialPolicyImpl>());
   for (const auto& rel : base::SplitStringPiece(rel_param->second.value(),
                                                 HTTP_LWS, base::TRIM_WHITESPACE,
                                                 base::SPLIT_WANT_NONEMPTY)) {
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc
index f33b101..d3b99114 100644
--- a/content/browser/service_worker/service_worker_browsertest.cc
+++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -242,7 +242,7 @@
 VerifySaveDataHeaderNotInRequest(const net::test_server::HttpRequest& request) {
   auto it = request.headers.find("Save-Data");
   EXPECT_EQ(request.headers.end(), it);
-  return base::MakeUnique<net::test_server::BasicHttpResponse>();
+  return std::make_unique<net::test_server::BasicHttpResponse>();
 }
 
 std::unique_ptr<net::test_server::HttpResponse>
@@ -1690,7 +1690,7 @@
     if (request.relative_url.substr(0, query_position) != relative_url)
       return std::unique_ptr<net::test_server::HttpResponse>();
     std::unique_ptr<net::test_server::BasicHttpResponse> http_response(
-        base::MakeUnique<net::test_server::BasicHttpResponse>());
+        std::make_unique<net::test_server::BasicHttpResponse>());
     http_response->set_code(net::HTTP_OK);
     http_response->set_content(content);
     http_response->set_content_type(content_type);
@@ -1704,7 +1704,7 @@
     const size_t query_position = request.relative_url.find('?');
     if (request.relative_url.substr(0, query_position) != relative_url)
       return std::unique_ptr<net::test_server::HttpResponse>();
-    return base::MakeUnique<CustomResponse>(response);
+    return std::make_unique<CustomResponse>(response);
   }
 
   std::unique_ptr<net::test_server::HttpResponse> KeepSearchRedirectHandler(
diff --git a/content/browser/service_worker/service_worker_client_utils.cc b/content/browser/service_worker/service_worker_client_utils.cc
index ab849450..27e0bd2 100644
--- a/content/browser/service_worker/service_worker_client_utils.cc
+++ b/content/browser/service_worker/service_worker_client_utils.cc
@@ -531,7 +531,7 @@
                 const ClientsCallback& callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  auto clients = base::MakeUnique<ServiceWorkerClients>();
+  auto clients = std::make_unique<ServiceWorkerClients>();
   if (!controller->HasControllee() && !options.include_uncontrolled) {
     DidGetClients(callback, std::move(clients));
     return;
diff --git a/content/browser/service_worker/service_worker_context_core.cc b/content/browser/service_worker/service_worker_context_core.cc
index 738513a..562af31 100644
--- a/content/browser/service_worker/service_worker_context_core.cc
+++ b/content/browser/service_worker/service_worker_context_core.cc
@@ -244,8 +244,8 @@
         observer_list,
     ServiceWorkerContextWrapper* wrapper)
     : wrapper_(wrapper),
-      providers_(base::MakeUnique<ProcessToProviderMap>()),
-      provider_by_uuid_(base::MakeUnique<ProviderByClientUUIDMap>()),
+      providers_(std::make_unique<ProcessToProviderMap>()),
+      provider_by_uuid_(std::make_unique<ProviderByClientUUIDMap>()),
       loader_factory_getter_(url_loader_factory_getter),
       force_update_on_page_load_(false),
       next_handle_id_(0),
@@ -329,7 +329,7 @@
   int provider_id = host->provider_id();
   ProviderMap* map = GetProviderMapForProcess(process_id);
   if (!map) {
-    providers_->AddWithID(base::MakeUnique<ProviderMap>(), process_id);
+    providers_->AddWithID(std::make_unique<ProviderMap>(), process_id);
     map = GetProviderMapForProcess(process_id);
   }
   map->AddWithID(std::move(host), provider_id);
diff --git a/content/browser/service_worker/service_worker_context_request_handler_unittest.cc b/content/browser/service_worker/service_worker_context_request_handler_unittest.cc
index ca94fec..01a8615 100644
--- a/content/browser/service_worker/service_worker_context_request_handler_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_request_handler_unittest.cc
@@ -109,7 +109,7 @@
   // Creates a ServiceWorkerContextHandler directly.
   std::unique_ptr<ServiceWorkerContextRequestHandler> CreateHandler(
       ResourceType resource_type) {
-    return base::MakeUnique<ServiceWorkerContextRequestHandler>(
+    return std::make_unique<ServiceWorkerContextRequestHandler>(
         context()->AsWeakPtr(), provider_host_,
         base::WeakPtr<storage::BlobStorageContext>(), resource_type);
   }
diff --git a/content/browser/service_worker/service_worker_context_watcher.cc b/content/browser/service_worker/service_worker_context_watcher.cc
index fb18ad99..430bff3 100644
--- a/content/browser/service_worker/service_worker_context_watcher.cc
+++ b/content/browser/service_worker/service_worker_context_watcher.cc
@@ -83,13 +83,13 @@
     StoreVersionInfo(version);
 
   std::unique_ptr<std::vector<ServiceWorkerRegistrationInfo>> registrations =
-      base::MakeUnique<std::vector<ServiceWorkerRegistrationInfo>>();
+      std::make_unique<std::vector<ServiceWorkerRegistrationInfo>>();
   registrations->reserve(registration_info_map.size());
   for (const auto& registration_id_info_pair : registration_info_map)
     registrations->push_back(*registration_id_info_pair.second);
 
   std::unique_ptr<std::vector<ServiceWorkerVersionInfo>> versions =
-      base::MakeUnique<std::vector<ServiceWorkerVersionInfo>>();
+      std::make_unique<std::vector<ServiceWorkerVersionInfo>>();
   versions->reserve(version_info_map_.size());
 
   for (auto version_it = version_info_map_.begin();
@@ -131,7 +131,7 @@
       blink::mojom::kInvalidServiceWorkerRegistrationId)
     return;
   (*info_map)[registration_info.registration_id] =
-      base::MakeUnique<ServiceWorkerRegistrationInfo>(registration_info);
+      std::make_unique<ServiceWorkerRegistrationInfo>(registration_info);
   StoreVersionInfo(registration_info.active_version);
   StoreVersionInfo(registration_info.waiting_version);
   StoreVersionInfo(registration_info.installing_version);
@@ -143,7 +143,7 @@
   if (version_info.version_id == blink::mojom::kInvalidServiceWorkerVersionId)
     return;
   version_info_map_[version_info.version_id] =
-      base::MakeUnique<ServiceWorkerVersionInfo>(version_info);
+      std::make_unique<ServiceWorkerVersionInfo>(version_info);
 }
 
 void ServiceWorkerContextWatcher::SendRegistrationInfo(
@@ -152,7 +152,7 @@
     ServiceWorkerRegistrationInfo::DeleteFlag delete_flag) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   std::unique_ptr<std::vector<ServiceWorkerRegistrationInfo>> registrations =
-      base::MakeUnique<std::vector<ServiceWorkerRegistrationInfo>>();
+      std::make_unique<std::vector<ServiceWorkerRegistrationInfo>>();
   ServiceWorkerRegistration* registration =
       context_->GetLiveRegistration(registration_id);
   if (registration) {
@@ -172,7 +172,7 @@
     const ServiceWorkerVersionInfo& version_info) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   std::unique_ptr<std::vector<ServiceWorkerVersionInfo>> versions =
-      base::MakeUnique<std::vector<ServiceWorkerVersionInfo>>();
+      std::make_unique<std::vector<ServiceWorkerVersionInfo>>();
   versions->push_back(version_info);
   BrowserThread::PostTask(
       BrowserThread::UI, FROM_HERE,
@@ -226,7 +226,7 @@
   }
 
   std::unique_ptr<ServiceWorkerVersionInfo> version =
-      base::MakeUnique<ServiceWorkerVersionInfo>(version_info);
+      std::make_unique<ServiceWorkerVersionInfo>(version_info);
   SendVersionInfo(*version);
   if (!IsStoppedAndRedundant(*version))
     version_info_map_[version_id] = std::move(version);
@@ -311,7 +311,7 @@
       BrowserThread::UI, FROM_HERE,
       base::BindOnce(
           &ServiceWorkerContextWatcher::RunWorkerErrorReportedCallback, this,
-          registration_id, version_id, base::MakeUnique<ErrorInfo>(info)));
+          registration_id, version_id, std::make_unique<ErrorInfo>(info)));
 }
 
 void ServiceWorkerContextWatcher::OnReportConsoleMessage(
@@ -332,7 +332,7 @@
       base::BindOnce(
           &ServiceWorkerContextWatcher::RunWorkerErrorReportedCallback, this,
           registration_id, version_id,
-          base::MakeUnique<ErrorInfo>(message.message, message.line_number, -1,
+          std::make_unique<ErrorInfo>(message.message, message.line_number, -1,
                                       message.source_url)));
 }
 
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler.cc b/content/browser/service_worker/service_worker_controllee_request_handler.cc
index 2254f706..abc9db26 100644
--- a/content/browser/service_worker/service_worker_controllee_request_handler.cc
+++ b/content/browser/service_worker/service_worker_controllee_request_handler.cc
@@ -166,7 +166,7 @@
           credentials_mode_, redirect_mode_, integrity_, resource_type_,
           request_context_type_, frame_type_, body_,
           ServiceWorkerFetchType::FETCH, base::nullopt, this));
-  url_job_ = base::MakeUnique<ServiceWorkerURLJobWrapper>(job->GetWeakPtr());
+  url_job_ = std::make_unique<ServiceWorkerURLJobWrapper>(job->GetWeakPtr());
 
   resource_context_ = resource_context;
 
@@ -219,8 +219,8 @@
   }
 #endif  // BUILDFLAG(ENABLE_OFFLINE_PAGES)
 
-  url_job_ = base::MakeUnique<ServiceWorkerURLJobWrapper>(
-      base::MakeUnique<ServiceWorkerURLLoaderJob>(
+  url_job_ = std::make_unique<ServiceWorkerURLJobWrapper>(
+      std::make_unique<ServiceWorkerURLLoaderJob>(
           std::move(callback), this, resource_request,
           base::WrapRefCounted(context_->loader_factory_getter()),
           blob_storage_context_));
diff --git a/content/browser/service_worker/service_worker_data_pipe_reader_unittest.cc b/content/browser/service_worker/service_worker_data_pipe_reader_unittest.cc
index dc85bc31..910cc8c 100644
--- a/content/browser/service_worker/service_worker_data_pipe_reader_unittest.cc
+++ b/content/browser/service_worker/service_worker_data_pipe_reader_unittest.cc
@@ -77,9 +77,9 @@
       : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {}
 
   void SetUp() override {
-    helper_ = base::MakeUnique<EmbeddedWorkerTestHelper>(base::FilePath());
+    helper_ = std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath());
     mock_url_request_job_ =
-        base::MakeUnique<MockServiceWorkerURLRequestJob>(this);
+        std::make_unique<MockServiceWorkerURLRequestJob>(this);
     blink::mojom::ServiceWorkerRegistrationOptions options(
         GURL("https://example.com/"));
     registration_ = new ServiceWorkerRegistration(
@@ -102,7 +102,7 @@
         blink::mojom::ServiceWorkerStreamHandle::New();
     stream_handle->stream = std::move(data_pipe->consumer_handle);
     stream_handle->callback_request = mojo::MakeRequest(stream_callback);
-    return base::MakeUnique<ServiceWorkerDataPipeReader>(
+    return std::make_unique<ServiceWorkerDataPipeReader>(
         mock_url_request_job_.get(), version_, std::move(stream_handle));
   }
 
diff --git a/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc b/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
index 6ee6561..a606f4c7 100644
--- a/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
+++ b/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
@@ -81,7 +81,7 @@
       BrowserThread::UI, FROM_HERE,
       base::Bind(
           [](ServiceWorkerContextWrapper* wrapper) {
-            return base::MakeUnique<ServiceWorkerNavigationHandleCore>(nullptr,
+            return std::make_unique<ServiceWorkerNavigationHandleCore>(nullptr,
                                                                        wrapper);
           },
           base::RetainedRef(context_wrapper)),
@@ -150,7 +150,7 @@
       : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {}
 
   void SetUp() override {
-    Initialize(base::MakeUnique<EmbeddedWorkerTestHelper>(base::FilePath()));
+    Initialize(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath()));
   }
 
   void TearDown() override {
diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher.cc b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
index 3811540..ba006ed 100644
--- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc
+++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
@@ -561,7 +561,7 @@
   prepare_callback.Run();
 
   mojom::ServiceWorkerFetchResponseCallbackPtr mojo_response_callback_ptr;
-  auto response_callback = base::MakeUnique<ResponseCallback>(
+  auto response_callback = std::make_unique<ResponseCallback>(
       mojo::MakeRequest(&mojo_response_callback_ptr),
       weak_factory_.GetWeakPtr(), version_.get());
   ResponseCallback* response_callback_rawptr = response_callback.get();
@@ -728,7 +728,7 @@
   mojom::URLLoaderClientPtr url_loader_client_ptr;
   preload_handle_->url_loader_client_request =
       mojo::MakeRequest(&url_loader_client_ptr);
-  auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>(
+  auto url_loader_client = std::make_unique<DelegatingURLLoaderClient>(
       std::move(url_loader_client_ptr), std::move(on_response), request);
   mojom::URLLoaderClientPtr url_loader_client_ptr_to_pass;
   url_loader_client->Bind(&url_loader_client_ptr_to_pass);
@@ -789,7 +789,7 @@
   mojom::URLLoaderClientPtr url_loader_client_ptr;
   preload_handle_->url_loader_client_request =
       mojo::MakeRequest(&url_loader_client_ptr);
-  auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>(
+  auto url_loader_client = std::make_unique<DelegatingURLLoaderClient>(
       std::move(url_loader_client_ptr), std::move(on_response),
       resource_request);
 
diff --git a/content/browser/service_worker/service_worker_installed_scripts_sender.cc b/content/browser/service_worker/service_worker_installed_scripts_sender.cc
index 2d7ef81..9594dac 100644
--- a/content/browser/service_worker/service_worker_installed_scripts_sender.cc
+++ b/content/browser/service_worker/service_worker_installed_scripts_sender.cc
@@ -133,7 +133,7 @@
         CompleteSendIfNeeded(FinishedReason::kCreateDataPipeError);
         return;
       }
-      meta_data_sender_ = base::MakeUnique<MetaDataSender>(
+      meta_data_sender_ = std::make_unique<MetaDataSender>(
           http_info->http_info->metadata, std::move(meta_data_producer));
       meta_data_sender_->Start(
           base::BindOnce(&Sender::OnMetaDataSent, AsWeakPtr()));
@@ -339,7 +339,7 @@
   auto reader = owner_->context()->storage()->CreateResponseReader(resource_id);
   TRACE_EVENT_NESTABLE_ASYNC_BEGIN1("ServiceWorker", "SendingScript", this,
                                     "script_url", current_sending_url_.spec());
-  running_sender_ = base::MakeUnique<Sender>(std::move(reader), this);
+  running_sender_ = std::make_unique<Sender>(std::move(reader), this);
   running_sender_->Start();
 }
 
diff --git a/content/browser/service_worker/service_worker_installed_scripts_sender_unittest.cc b/content/browser/service_worker/service_worker_installed_scripts_sender_unittest.cc
index 6576d5b..8342093f 100644
--- a/content/browser/service_worker/service_worker_installed_scripts_sender_unittest.cc
+++ b/content/browser/service_worker/service_worker_installed_scripts_sender_unittest.cc
@@ -169,7 +169,7 @@
 
  protected:
   void SetUp() override {
-    helper_ = base::MakeUnique<EmbeddedWorkerTestHelper>(base::FilePath());
+    helper_ = std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath());
 
     context()->storage()->LazyInitializeForTest(
         base::BindOnce(&base::DoNothing));
@@ -253,7 +253,7 @@
   }
 
   auto sender =
-      base::MakeUnique<ServiceWorkerInstalledScriptsSender>(version());
+      std::make_unique<ServiceWorkerInstalledScriptsSender>(version());
 
   std::unique_ptr<MockServiceWorkerInstalledScriptsManager> renderer_manager;
   {
@@ -266,7 +266,7 @@
       EXPECT_TRUE(base::ContainsKey(kExpectedScriptInfoMap, url));
     EXPECT_TRUE(scripts_info->manager_request.is_pending());
     renderer_manager =
-        base::MakeUnique<MockServiceWorkerInstalledScriptsManager>(
+        std::make_unique<MockServiceWorkerInstalledScriptsManager>(
             std::move(scripts_info->manager_request));
   }
   ASSERT_TRUE(renderer_manager);
@@ -310,7 +310,7 @@
   }
 
   auto sender =
-      base::MakeUnique<ServiceWorkerInstalledScriptsSender>(version());
+      std::make_unique<ServiceWorkerInstalledScriptsSender>(version());
 
   std::unique_ptr<MockServiceWorkerInstalledScriptsManager> renderer_manager;
   {
@@ -323,7 +323,7 @@
       EXPECT_TRUE(base::ContainsKey(kExpectedScriptInfoMap, url));
     EXPECT_TRUE(scripts_info->manager_request.is_pending());
     renderer_manager =
-        base::MakeUnique<MockServiceWorkerInstalledScriptsManager>(
+        std::make_unique<MockServiceWorkerInstalledScriptsManager>(
             std::move(scripts_info->manager_request));
   }
   ASSERT_TRUE(renderer_manager);
@@ -370,7 +370,7 @@
   }
 
   auto sender =
-      base::MakeUnique<ServiceWorkerInstalledScriptsSender>(version());
+      std::make_unique<ServiceWorkerInstalledScriptsSender>(version());
 
   std::unique_ptr<MockServiceWorkerInstalledScriptsManager> renderer_manager;
   {
@@ -383,7 +383,7 @@
       EXPECT_TRUE(base::ContainsKey(kExpectedScriptInfoMap, url));
     EXPECT_TRUE(scripts_info->manager_request.is_pending());
     renderer_manager =
-        base::MakeUnique<MockServiceWorkerInstalledScriptsManager>(
+        std::make_unique<MockServiceWorkerInstalledScriptsManager>(
             std::move(scripts_info->manager_request));
   }
   ASSERT_TRUE(renderer_manager);
@@ -441,7 +441,7 @@
   }
 
   auto sender =
-      base::MakeUnique<ServiceWorkerInstalledScriptsSender>(version());
+      std::make_unique<ServiceWorkerInstalledScriptsSender>(version());
 
   std::unique_ptr<MockServiceWorkerInstalledScriptsManager> renderer_manager;
   {
@@ -454,7 +454,7 @@
       EXPECT_TRUE(base::ContainsKey(kExpectedScriptInfoMap, url));
     EXPECT_TRUE(scripts_info->manager_request.is_pending());
     renderer_manager =
-        base::MakeUnique<MockServiceWorkerInstalledScriptsManager>(
+        std::make_unique<MockServiceWorkerInstalledScriptsManager>(
             std::move(scripts_info->manager_request));
   }
   ASSERT_TRUE(renderer_manager);
@@ -522,7 +522,7 @@
   }
 
   auto sender =
-      base::MakeUnique<ServiceWorkerInstalledScriptsSender>(version());
+      std::make_unique<ServiceWorkerInstalledScriptsSender>(version());
 
   std::unique_ptr<MockServiceWorkerInstalledScriptsManager> renderer_manager;
   mojom::ServiceWorkerInstalledScriptsManagerHostPtr manager_host_ptr;
@@ -536,7 +536,7 @@
       EXPECT_TRUE(base::ContainsKey(kExpectedScriptInfoMap, url));
     EXPECT_TRUE(scripts_info->manager_request.is_pending());
     renderer_manager =
-        base::MakeUnique<MockServiceWorkerInstalledScriptsManager>(
+        std::make_unique<MockServiceWorkerInstalledScriptsManager>(
             std::move(scripts_info->manager_request));
     manager_host_ptr = std::move(scripts_info->manager_host_ptr);
   }
@@ -609,7 +609,7 @@
   }
 
   auto sender =
-      base::MakeUnique<ServiceWorkerInstalledScriptsSender>(version());
+      std::make_unique<ServiceWorkerInstalledScriptsSender>(version());
 
   std::unique_ptr<MockServiceWorkerInstalledScriptsManager> renderer_manager;
   mojom::ServiceWorkerInstalledScriptsManagerHostPtr manager_host_ptr;
@@ -623,7 +623,7 @@
       EXPECT_TRUE(base::ContainsKey(kExpectedScriptInfoMap, url));
     EXPECT_TRUE(scripts_info->manager_request.is_pending());
     renderer_manager =
-        base::MakeUnique<MockServiceWorkerInstalledScriptsManager>(
+        std::make_unique<MockServiceWorkerInstalledScriptsManager>(
             std::move(scripts_info->manager_request));
     manager_host_ptr = std::move(scripts_info->manager_host_ptr);
   }
diff --git a/content/browser/service_worker/service_worker_internals_ui.cc b/content/browser/service_worker/service_worker_internals_ui.cc
index 27315b1..e799954 100644
--- a/content/browser/service_worker/service_worker_internals_ui.cc
+++ b/content/browser/service_worker/service_worker_internals_ui.cc
@@ -155,27 +155,27 @@
 
 std::unique_ptr<ListValue> GetRegistrationListValue(
     const std::vector<ServiceWorkerRegistrationInfo>& registrations) {
-  auto result = base::MakeUnique<ListValue>();
+  auto result = std::make_unique<ListValue>();
   for (std::vector<ServiceWorkerRegistrationInfo>::const_iterator it =
            registrations.begin();
        it != registrations.end();
        ++it) {
     const ServiceWorkerRegistrationInfo& registration = *it;
-    auto registration_info = base::MakeUnique<DictionaryValue>();
+    auto registration_info = std::make_unique<DictionaryValue>();
     registration_info->SetString("scope", registration.pattern.spec());
     registration_info->SetString(
         "registration_id", base::Int64ToString(registration.registration_id));
 
     if (registration.active_version.version_id !=
         blink::mojom::kInvalidServiceWorkerVersionId) {
-      auto active_info = base::MakeUnique<DictionaryValue>();
+      auto active_info = std::make_unique<DictionaryValue>();
       UpdateVersionInfo(registration.active_version, active_info.get());
       registration_info->Set("active", std::move(active_info));
     }
 
     if (registration.waiting_version.version_id !=
         blink::mojom::kInvalidServiceWorkerVersionId) {
-      auto waiting_info = base::MakeUnique<DictionaryValue>();
+      auto waiting_info = std::make_unique<DictionaryValue>();
       UpdateVersionInfo(registration.waiting_version, waiting_info.get());
       registration_info->Set("waiting", std::move(waiting_info));
     }
@@ -187,12 +187,12 @@
 
 std::unique_ptr<ListValue> GetVersionListValue(
     const std::vector<ServiceWorkerVersionInfo>& versions) {
-  auto result = base::MakeUnique<ListValue>();
+  auto result = std::make_unique<ListValue>();
   for (std::vector<ServiceWorkerVersionInfo>::const_iterator it =
            versions.begin();
        it != versions.end();
        ++it) {
-    auto info = base::MakeUnique<DictionaryValue>();
+    auto info = std::make_unique<DictionaryValue>();
     UpdateVersionInfo(*it, info.get());
     result->Append(std::move(info));
   }
@@ -234,8 +234,8 @@
   args.push_back(GetRegistrationListValue(live_registrations));
   args.push_back(GetVersionListValue(live_versions));
   args.push_back(GetRegistrationListValue(stored_registrations));
-  args.push_back(base::MakeUnique<Value>(partition_id));
-  args.push_back(base::MakeUnique<Value>(context_path.value()));
+  args.push_back(std::make_unique<Value>(partition_id));
+  args.push_back(std::make_unique<Value>(context_path.value()));
   internals->web_ui()->CallJavascriptFunctionUnsafe(
       "serviceworker.onPartitionData", ConvertToRawPtrVector(args));
 }
@@ -269,11 +269,11 @@
                        const ErrorInfo& info) override {
     DCHECK_CURRENTLY_ON(BrowserThread::UI);
     std::vector<std::unique_ptr<const Value>> args;
-    args.push_back(base::MakeUnique<Value>(partition_id_));
-    args.push_back(base::MakeUnique<Value>(base::Int64ToString(version_id)));
-    args.push_back(base::MakeUnique<Value>(process_id));
-    args.push_back(base::MakeUnique<Value>(thread_id));
-    auto value = base::MakeUnique<DictionaryValue>();
+    args.push_back(std::make_unique<Value>(partition_id_));
+    args.push_back(std::make_unique<Value>(base::Int64ToString(version_id)));
+    args.push_back(std::make_unique<Value>(process_id));
+    args.push_back(std::make_unique<Value>(thread_id));
+    auto value = std::make_unique<DictionaryValue>();
     value->SetString("message", info.error_message);
     value->SetInteger("lineNumber", info.line_number);
     value->SetInteger("columnNumber", info.column_number);
@@ -288,11 +288,11 @@
                               const ConsoleMessage& message) override {
     DCHECK_CURRENTLY_ON(BrowserThread::UI);
     std::vector<std::unique_ptr<const Value>> args;
-    args.push_back(base::MakeUnique<Value>(partition_id_));
-    args.push_back(base::MakeUnique<Value>(base::Int64ToString(version_id)));
-    args.push_back(base::MakeUnique<Value>(process_id));
-    args.push_back(base::MakeUnique<Value>(thread_id));
-    auto value = base::MakeUnique<DictionaryValue>();
+    args.push_back(std::make_unique<Value>(partition_id_));
+    args.push_back(std::make_unique<Value>(base::Int64ToString(version_id)));
+    args.push_back(std::make_unique<Value>(process_id));
+    args.push_back(std::make_unique<Value>(thread_id));
+    auto value = std::make_unique<DictionaryValue>();
     value->SetInteger("sourceIdentifier", message.source_identifier);
     value->SetInteger("message_level", message.message_level);
     value->SetString("message", message.message);
@@ -419,7 +419,7 @@
   } else {
     partition_id = next_partition_id_++;
     auto new_observer =
-        base::MakeUnique<PartitionObserver>(partition_id, web_ui());
+        std::make_unique<PartitionObserver>(partition_id, web_ui());
     context->AddObserver(new_observer.get());
     observers_[reinterpret_cast<uintptr_t>(partition)] =
         std::move(new_observer);
diff --git a/content/browser/service_worker/service_worker_lifetime_tracker.cc b/content/browser/service_worker/service_worker_lifetime_tracker.cc
index 4691bddf..f10fe80 100644
--- a/content/browser/service_worker/service_worker_lifetime_tracker.cc
+++ b/content/browser/service_worker/service_worker_lifetime_tracker.cc
@@ -12,7 +12,7 @@
 namespace content {
 
 ServiceWorkerLifetimeTracker::ServiceWorkerLifetimeTracker()
-    : ServiceWorkerLifetimeTracker(base::MakeUnique<base::DefaultTickClock>()) {
+    : ServiceWorkerLifetimeTracker(std::make_unique<base::DefaultTickClock>()) {
 }
 
 ServiceWorkerLifetimeTracker::ServiceWorkerLifetimeTracker(
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 01dca660..52c6326 100644
--- a/content/browser/service_worker/service_worker_process_manager_unittest.cc
+++ b/content/browser/service_worker/service_worker_process_manager_unittest.cc
@@ -43,7 +43,7 @@
   }
 
   std::unique_ptr<MockRenderProcessHost> CreateRenderProcessHost() {
-    return base::MakeUnique<MockRenderProcessHost>(browser_context_.get());
+    return std::make_unique<MockRenderProcessHost>(browser_context_.get());
   }
 
  protected:
diff --git a/content/browser/service_worker/service_worker_provider_host.cc b/content/browser/service_worker/service_worker_provider_host.cc
index f55dc2e..96a1cf32 100644
--- a/content/browser/service_worker/service_worker_provider_host.cc
+++ b/content/browser/service_worker/service_worker_provider_host.cc
@@ -482,15 +482,15 @@
   if (skip_service_worker) {
     if (!ServiceWorkerUtils::IsMainResourceType(resource_type))
       return std::unique_ptr<ServiceWorkerRequestHandler>();
-    return base::MakeUnique<ServiceWorkerURLTrackingRequestHandler>(
+    return std::make_unique<ServiceWorkerURLTrackingRequestHandler>(
         context_, AsWeakPtr(), blob_storage_context, resource_type);
   }
   if (IsHostToRunningServiceWorker()) {
-    return base::MakeUnique<ServiceWorkerContextRequestHandler>(
+    return std::make_unique<ServiceWorkerContextRequestHandler>(
         context_, AsWeakPtr(), blob_storage_context, resource_type);
   }
   if (ServiceWorkerUtils::IsMainResourceType(resource_type) || controller()) {
-    return base::MakeUnique<ServiceWorkerControlleeRequestHandler>(
+    return std::make_unique<ServiceWorkerControlleeRequestHandler>(
         context_, AsWeakPtr(), blob_storage_context, request_mode,
         credentials_mode, redirect_mode, integrity, resource_type,
         request_context_type, frame_type, body);
@@ -737,7 +737,7 @@
   mojom::URLLoaderFactoryAssociatedPtrInfo script_loader_factory_ptr_info;
   if (ServiceWorkerUtils::IsServicificationEnabled()) {
     mojo::MakeStrongAssociatedBinding(
-        base::MakeUnique<ServiceWorkerScriptURLLoaderFactory>(
+        std::make_unique<ServiceWorkerScriptURLLoaderFactory>(
             context_, AsWeakPtr(), context_->loader_factory_getter()),
         mojo::MakeRequest(&script_loader_factory_ptr_info));
     provider_info->script_loader_factory_ptr_info =
@@ -1159,7 +1159,7 @@
                            this);
   DCHECK(!get_ready_callback_);
   get_ready_callback_ =
-      base::MakeUnique<GetRegistrationForReadyCallback>(std::move(callback));
+      std::make_unique<GetRegistrationForReadyCallback>(std::move(callback));
   ReturnRegistrationForReadyIfNeeded();
 }
 
diff --git a/content/browser/service_worker/service_worker_provider_host_unittest.cc b/content/browser/service_worker/service_worker_provider_host_unittest.cc
index 60b064f..827bfa3 100644
--- a/content/browser/service_worker/service_worker_provider_host_unittest.cc
+++ b/content/browser/service_worker/service_worker_provider_host_unittest.cc
@@ -495,7 +495,7 @@
                                      true /* is_parent_frame_secure */);
   remote_endpoints_.emplace_back();
   remote_endpoints_.back().BindWithProviderHostInfo(&info);
-  auto container = base::MakeUnique<MockServiceWorkerContainer>(
+  auto container = std::make_unique<MockServiceWorkerContainer>(
       std::move(*remote_endpoints_.back().client_request()));
 
   // Create an active version and then start the navigation.
@@ -535,7 +535,7 @@
                                      true /* is_parent_frame_secure */);
   remote_endpoints_.emplace_back();
   remote_endpoints_.back().BindWithProviderHostInfo(&info);
-  auto container = base::MakeUnique<MockServiceWorkerContainer>(
+  auto container = std::make_unique<MockServiceWorkerContainer>(
       std::move(*remote_endpoints_.back().client_request()));
 
   // Create an installing version and then start the navigation.
diff --git a/content/browser/service_worker/service_worker_read_from_cache_job_unittest.cc b/content/browser/service_worker/service_worker_read_from_cache_job_unittest.cc
index 7cdd704..7b8bfd68 100644
--- a/content/browser/service_worker/service_worker_read_from_cache_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_read_from_cache_job_unittest.cc
@@ -199,7 +199,7 @@
                                           net::DEFAULT_PRIORITY, &delegate_,
                                           TRAFFIC_ANNOTATION_FOR_TESTS);
   test_job_interceptor_->set_main_intercept_job(
-      base::MakeUnique<ServiceWorkerReadFromCacheJob>(
+      std::make_unique<ServiceWorkerReadFromCacheJob>(
           request.get(), nullptr /* NetworkDelegate */,
           RESOURCE_TYPE_SERVICE_WORKER, context()->AsWeakPtr(), version_,
           main_script_.resource_id));
@@ -218,7 +218,7 @@
                                           net::DEFAULT_PRIORITY, &delegate_,
                                           TRAFFIC_ANNOTATION_FOR_TESTS);
   test_job_interceptor_->set_main_intercept_job(
-      base::MakeUnique<ServiceWorkerReadFromCacheJob>(
+      std::make_unique<ServiceWorkerReadFromCacheJob>(
           request.get(), nullptr /* NetworkDelegate */, RESOURCE_TYPE_SCRIPT,
           context()->AsWeakPtr(), version_, imported_script_.resource_id));
   StartAndWaitForRequest(request.get());
@@ -249,7 +249,7 @@
                                           TRAFFIC_ANNOTATION_FOR_TESTS);
   const int64_t kNonexistentResourceId = 100;
   test_job_interceptor_->set_main_intercept_job(
-      base::MakeUnique<ServiceWorkerReadFromCacheJob>(
+      std::make_unique<ServiceWorkerReadFromCacheJob>(
           request.get(), nullptr /* NetworkDelegate */,
           RESOURCE_TYPE_SERVICE_WORKER, context()->AsWeakPtr(), version_,
           kNonexistentResourceId));
diff --git a/content/browser/service_worker/service_worker_register_job.cc b/content/browser/service_worker/service_worker_register_job.cc
index 0436b13..506a376 100644
--- a/content/browser/service_worker/service_worker_register_job.cc
+++ b/content/browser/service_worker/service_worker_register_job.cc
@@ -467,7 +467,7 @@
                  weak_factory_.GetWeakPtr()));
 
   std::unique_ptr<InstallEventMethodsReceiver> install_methods_receiver =
-      base::MakeUnique<InstallEventMethodsReceiver>(new_version());
+      std::make_unique<InstallEventMethodsReceiver>(new_version());
   mojom::ServiceWorkerInstallEventMethodsAssociatedPtrInfo ptr_info;
   install_methods_receiver->BindInterface(&ptr_info);
   new_version()->event_dispatcher()->DispatchInstallEvent(
diff --git a/content/browser/service_worker/service_worker_script_url_loader_factory.cc b/content/browser/service_worker/service_worker_script_url_loader_factory.cc
index d2ffd40..2d63cb4 100644
--- a/content/browser/service_worker/service_worker_script_url_loader_factory.cc
+++ b/content/browser/service_worker/service_worker_script_url_loader_factory.cc
@@ -50,7 +50,7 @@
     return;
   }
   mojo::MakeStrongBinding(
-      base::MakeUnique<ServiceWorkerScriptURLLoader>(
+      std::make_unique<ServiceWorkerScriptURLLoader>(
           routing_id, request_id, options, resource_request, std::move(client),
           provider_host_->running_hosted_version(), loader_factory_getter_,
           traffic_annotation),
diff --git a/content/browser/service_worker/service_worker_url_loader_job_unittest.cc b/content/browser/service_worker/service_worker_url_loader_job_unittest.cc
index 46d6245..d3a10ac 100644
--- a/content/browser/service_worker/service_worker_url_loader_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_url_loader_job_unittest.cc
@@ -102,17 +102,17 @@
     // FetchEvent#respondWith.
     response_callback_->OnResponseStream(
         ServiceWorkerResponse(
-            base::MakeUnique<std::vector<GURL>>(
+            std::make_unique<std::vector<GURL>>(
                 response_head_.url_list_via_service_worker),
             response_head_.headers->response_code(),
             response_head_.headers->GetStatusText(),
             response_head_.response_type_via_service_worker,
-            base::MakeUnique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
+            std::make_unique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
             0 /* blob_size */, nullptr /* blob */,
             blink::kWebServiceWorkerResponseErrorUnknown, base::Time(),
             false /* response_is_in_cache_storage */,
             std::string() /* response_cache_storage_cache_name */,
-            base::MakeUnique<
+            std::make_unique<
                 ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
         std::move(stream_handle), base::Time::Now());
     std::move(finish_callback_)
@@ -202,7 +202,7 @@
             base::FilePath(),
             base::MakeRefCounted<URLLoaderFactoryGetter>()) {
     mojom::URLLoaderFactoryPtr mock_loader_factory;
-    mojo::MakeStrongBinding(base::MakeUnique<MockNetworkURLLoaderFactory>(),
+    mojo::MakeStrongBinding(std::make_unique<MockNetworkURLLoaderFactory>(),
                             MakeRequest(&mock_loader_factory));
     url_loader_factory_getter()->SetNetworkFactoryForTesting(
         std::move(mock_loader_factory));
@@ -298,14 +298,14 @@
       case ResponseMode::kBlob:
         response_callback->OnResponse(
             ServiceWorkerResponse(
-                base::MakeUnique<std::vector<GURL>>(), 200, "OK",
+                std::make_unique<std::vector<GURL>>(), 200, "OK",
                 network::mojom::FetchResponseType::kDefault,
-                base::MakeUnique<ServiceWorkerHeaderMap>(), blob_uuid_,
+                std::make_unique<ServiceWorkerHeaderMap>(), blob_uuid_,
                 blob_size_, nullptr /* blob */,
                 blink::kWebServiceWorkerResponseErrorUnknown, base::Time(),
                 false /* response_is_in_cache_storage */,
                 std::string() /* response_cache_storage_cache_name */,
-                base::MakeUnique<
+                std::make_unique<
                     ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
             base::Time::Now());
         std::move(finish_callback)
@@ -315,14 +315,14 @@
       case ResponseMode::kStream:
         response_callback->OnResponseStream(
             ServiceWorkerResponse(
-                base::MakeUnique<std::vector<GURL>>(), 200, "OK",
+                std::make_unique<std::vector<GURL>>(), 200, "OK",
                 network::mojom::FetchResponseType::kDefault,
-                base::MakeUnique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
+                std::make_unique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
                 0 /* blob_size */, nullptr /* blob */,
                 blink::kWebServiceWorkerResponseErrorUnknown, base::Time(),
                 false /* response_is_in_cache_storage */,
                 std::string() /* response_cache_storage_cache_name */,
-                base::MakeUnique<
+                std::make_unique<
                     ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
             std::move(stream_handle_), base::Time::Now());
         std::move(finish_callback)
@@ -338,15 +338,15 @@
       case ResponseMode::kErrorResponse:
         response_callback->OnResponse(
             ServiceWorkerResponse(
-                base::MakeUnique<std::vector<GURL>>(), 0 /* status_code */,
+                std::make_unique<std::vector<GURL>>(), 0 /* status_code */,
                 "" /* status_text */,
                 network::mojom::FetchResponseType::kDefault,
-                base::MakeUnique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
+                std::make_unique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
                 0 /* blob_size */, nullptr /* blob */,
                 blink::kWebServiceWorkerResponseErrorPromiseRejected,
                 base::Time(), false /* response_is_in_cache_storage */,
                 std::string() /* response_cache_storage_cache_name */,
-                base::MakeUnique<
+                std::make_unique<
                     ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
             base::Time::Now());
         std::move(finish_callback)
@@ -379,30 +379,30 @@
         finish_callback_ = std::move(finish_callback);
         response_callback->OnResponse(
             ServiceWorkerResponse(
-                base::MakeUnique<std::vector<GURL>>(), 200, "OK",
+                std::make_unique<std::vector<GURL>>(), 200, "OK",
                 network::mojom::FetchResponseType::kDefault,
-                base::MakeUnique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
+                std::make_unique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
                 0 /* blob_size */, nullptr /* blob */,
                 blink::kWebServiceWorkerResponseErrorUnknown, base::Time(),
                 false /* response_is_in_cache_storage */,
                 std::string() /* response_cache_storage_cache_name */,
-                base::MakeUnique<
+                std::make_unique<
                     ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
             base::Time::Now());
         // Now the caller must call FinishWaitUntil() to finish the event.
         return;
       case ResponseMode::kRedirect:
-        auto headers = base::MakeUnique<ServiceWorkerHeaderMap>();
+        auto headers = std::make_unique<ServiceWorkerHeaderMap>();
         (*headers)["location"] = redirected_url_.spec();
         response_callback->OnResponse(
             ServiceWorkerResponse(
-                base::MakeUnique<std::vector<GURL>>(), 301, "Moved Permanently",
+                std::make_unique<std::vector<GURL>>(), 301, "Moved Permanently",
                 network::mojom::FetchResponseType::kDefault, std::move(headers),
                 "" /* blob_uuid */, 0 /* blob_size */, nullptr /* blob */,
                 blink::kWebServiceWorkerResponseErrorUnknown, base::Time(),
                 false /* response_is_in_cache_storage */,
                 std::string() /* response_cache_storage_cache_name */,
-                base::MakeUnique<
+                std::make_unique<
                     ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
             base::Time::Now());
         std::move(finish_callback)
@@ -480,7 +480,7 @@
  public:
   ServiceWorkerURLLoaderJobTest()
       : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP),
-        helper_(base::MakeUnique<Helper>()) {}
+        helper_(std::make_unique<Helper>()) {}
   ~ServiceWorkerURLLoaderJobTest() override = default;
 
   void SetUp() override {
@@ -535,7 +535,7 @@
     // Start a ServiceWorkerURLLoaderJob. It should return a
     // StartLoaderCallback.
     StartLoaderCallback callback;
-    job_ = base::MakeUnique<ServiceWorkerURLLoaderJob>(
+    job_ = std::make_unique<ServiceWorkerURLLoaderJob>(
         base::BindOnce(&ReceiveStartLoaderCallback, &callback), this, *request,
         base::WrapRefCounted<URLLoaderFactoryGetter>(
             helper_->context()->loader_factory_getter()),
@@ -574,7 +574,7 @@
 
   std::unique_ptr<ResourceRequest> CreateRequest() {
     std::unique_ptr<ResourceRequest> request =
-        base::MakeUnique<ResourceRequest>();
+        std::make_unique<ResourceRequest>();
     request->url = GURL("https://www.example.com/");
     request->method = "GET";
     request->fetch_request_mode = network::mojom::FetchRequestMode::kNavigate;
@@ -664,7 +664,7 @@
 TEST_F(ServiceWorkerURLLoaderJobTest, BlobResponse) {
   // Construct the blob to respond with.
   const std::string kResponseBody = "Here is sample text for the blob.";
-  auto blob_data = base::MakeUnique<storage::BlobDataBuilder>("blob-id:myblob");
+  auto blob_data = std::make_unique<storage::BlobDataBuilder>("blob-id:myblob");
   blob_data->AppendData(kResponseBody);
   std::unique_ptr<storage::BlobDataHandle> blob_handle =
       blob_context_.AddFinishedBlob(blob_data.get());
@@ -895,7 +895,7 @@
   request.fetch_redirect_mode = FetchRedirectMode::MANUAL_MODE;
 
   StartLoaderCallback callback;
-  auto job = base::MakeUnique<ServiceWorkerURLLoaderJob>(
+  auto job = std::make_unique<ServiceWorkerURLLoaderJob>(
       base::BindOnce(&ReceiveStartLoaderCallback, &callback), this, request,
       base::WrapRefCounted<URLLoaderFactoryGetter>(
           helper_->context()->loader_factory_getter()),
diff --git a/content/browser/service_worker/service_worker_url_request_job.cc b/content/browser/service_worker/service_worker_url_request_job.cc
index d418767..1991589 100644
--- a/content/browser/service_worker/service_worker_url_request_job.cc
+++ b/content/browser/service_worker/service_worker_url_request_job.cc
@@ -615,7 +615,7 @@
 
   if (features::IsMojoBlobsEnabled()) {
     blink::mojom::BlobPtr blob_ptr;
-    storage::BlobImpl::Create(base::MakeUnique<storage::BlobDataHandle>(
+    storage::BlobImpl::Create(std::make_unique<storage::BlobDataHandle>(
                                   *request_body_blob_data_handle_),
                               MakeRequest(&blob_ptr));
     request_body_blob_handle_ =
@@ -1005,7 +1005,7 @@
       base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent,
                  weak_factory_.GetWeakPtr())));
   worker_start_time_ = base::TimeTicks::Now();
-  nav_preload_metrics_ = base::MakeUnique<NavigationPreloadMetrics>(this);
+  nav_preload_metrics_ = std::make_unique<NavigationPreloadMetrics>(this);
   if (simulate_navigation_preload_for_test_) {
     did_navigation_preload_ = true;
   } else {
diff --git a/content/browser/service_worker/service_worker_url_request_job_unittest.cc b/content/browser/service_worker/service_worker_url_request_job_unittest.cc
index f0f911e..77aaf84 100644
--- a/content/browser/service_worker/service_worker_url_request_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_url_request_job_unittest.cc
@@ -150,12 +150,12 @@
 // the memory.
 std::unique_ptr<storage::BlobProtocolHandler> CreateMockBlobProtocolHandler(
     storage::BlobStorageContext* blob_storage_context) {
-  return base::MakeUnique<storage::BlobProtocolHandler>(blob_storage_context,
+  return std::make_unique<storage::BlobProtocolHandler>(blob_storage_context,
                                                         nullptr);
 }
 
 std::unique_ptr<ServiceWorkerHeaderMap> MakeHeaders() {
-  auto headers = base::MakeUnique<ServiceWorkerHeaderMap>();
+  auto headers = std::make_unique<ServiceWorkerHeaderMap>();
   (*headers)["Pineapple"] = "Pen";
   (*headers)["Foo"] = "Bar";
   (*headers)["Set-Cookie"] = "CookieCookieCookie";
@@ -446,7 +446,7 @@
 };
 
 TEST_F(ServiceWorkerURLRequestJobTest, Simple) {
-  SetUpWithHelper(base::MakeUnique<EmbeddedWorkerTestHelper>(base::FilePath()));
+  SetUpWithHelper(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath()));
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
   TestRequest(200, "OK", std::string(), true /* expect_valid_ssl */);
@@ -488,13 +488,13 @@
   void Respond() {
     response_callback_->OnResponse(
         ServiceWorkerResponse(
-            base::MakeUnique<std::vector<GURL>>(), 200, "OK",
+            std::make_unique<std::vector<GURL>>(), 200, "OK",
             network::mojom::FetchResponseType::kDefault,
-            base::MakeUnique<ServiceWorkerHeaderMap>(), std::string(), 0,
+            std::make_unique<ServiceWorkerHeaderMap>(), std::string(), 0,
             nullptr /* blob */, blink::kWebServiceWorkerResponseErrorUnknown,
             base::Time(), false /* response_is_in_cache_storage */,
             std::string() /* response_cache_storage_cache_name */,
-            base::MakeUnique<
+            std::make_unique<
                 ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
         base::Time::Now());
     std::move(finish_callback_)
@@ -562,7 +562,7 @@
 
 TEST_F(ServiceWorkerURLRequestJobTest,
        NavPreloadMetrics_WorkerAlreadyStarted_MainFrame) {
-  SetUpWithHelper(base::MakeUnique<DelayHelper>(this));
+  SetUpWithHelper(std::make_unique<DelayHelper>(this));
   DelayHelper* helper = static_cast<DelayHelper*>(helper_.get());
 
   // Start the worker before the navigation.
@@ -596,7 +596,7 @@
 
 TEST_F(ServiceWorkerURLRequestJobTest,
        NavPreloadMetrics_WorkerFirst_MainFrame) {
-  SetUpWithHelper(base::MakeUnique<DelayHelper>(this));
+  SetUpWithHelper(std::make_unique<DelayHelper>(this));
   DelayHelper* helper = static_cast<DelayHelper*>(helper_.get());
 
   base::HistogramTester histogram_tester;
@@ -623,7 +623,7 @@
 
 TEST_F(ServiceWorkerURLRequestJobTest,
        NavPreloadMetrics_NavPreloadFirst_MainFrame) {
-  SetUpWithHelper(base::MakeUnique<DelayHelper>(this));
+  SetUpWithHelper(std::make_unique<DelayHelper>(this));
   DelayHelper* helper = static_cast<DelayHelper*>(helper_.get());
 
   base::HistogramTester histogram_tester;
@@ -649,7 +649,7 @@
 }
 
 TEST_F(ServiceWorkerURLRequestJobTest, NavPreloadMetrics_WorkerFirst_SubFrame) {
-  SetUpWithHelper(base::MakeUnique<DelayHelper>(this));
+  SetUpWithHelper(std::make_unique<DelayHelper>(this));
   DelayHelper* helper = static_cast<DelayHelper*>(helper_.get());
 
   base::HistogramTester histogram_tester;
@@ -675,7 +675,7 @@
 
 TEST_F(ServiceWorkerURLRequestJobTest,
        NavPreloadMetrics_NavPreloadFirst_SubFrame) {
-  SetUpWithHelper(base::MakeUnique<DelayHelper>(this));
+  SetUpWithHelper(std::make_unique<DelayHelper>(this));
   DelayHelper* helper = static_cast<DelayHelper*>(helper_.get());
 
   base::HistogramTester histogram_tester;
@@ -700,13 +700,13 @@
 }
 
 TEST_F(ServiceWorkerURLRequestJobTest, CustomTimeout) {
-  SetUpWithHelper(base::MakeUnique<EmbeddedWorkerTestHelper>(base::FilePath()));
+  SetUpWithHelper(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath()));
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
 
   // Set mock clock on version_ to check timeout behavior.
   {
-    auto tick_clock = base::MakeUnique<base::SimpleTestTickClock>();
+    auto tick_clock = std::make_unique<base::SimpleTestTickClock>();
     tick_clock->SetNowTicks(base::TimeTicks::Now());
     version_->SetTickClockForTesting(std::move(tick_clock));
   }
@@ -732,13 +732,13 @@
     context()->RemoveProviderHost(mock_render_process_id(), kProviderID);
     response_callback->OnResponse(
         ServiceWorkerResponse(
-            base::MakeUnique<std::vector<GURL>>(), 200, "OK",
+            std::make_unique<std::vector<GURL>>(), 200, "OK",
             network::mojom::FetchResponseType::kDefault,
-            base::MakeUnique<ServiceWorkerHeaderMap>(), std::string(), 0,
+            std::make_unique<ServiceWorkerHeaderMap>(), std::string(), 0,
             nullptr /* blob */, blink::kWebServiceWorkerResponseErrorUnknown,
             base::Time(), false /* response_is_in_cache_storage */,
             std::string() /* response_cache_storage_cache_name */,
-            base::MakeUnique<
+            std::make_unique<
                 ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
         base::Time::Now());
     std::move(finish_callback)
@@ -753,7 +753,7 @@
 // Shouldn't crash if the ProviderHost is deleted prior to completion of the
 // fetch event.
 TEST_F(ServiceWorkerURLRequestJobTest, DeletedProviderHostOnFetchEvent) {
-  SetUpWithHelper(base::MakeUnique<ProviderDeleteHelper>());
+  SetUpWithHelper(std::make_unique<ProviderDeleteHelper>());
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
 
@@ -775,7 +775,7 @@
 }
 
 TEST_F(ServiceWorkerURLRequestJobTest, DeletedProviderHostBeforeFetchEvent) {
-  SetUpWithHelper(base::MakeUnique<EmbeddedWorkerTestHelper>(base::FilePath()));
+  SetUpWithHelper(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath()));
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
   request_ = url_request_context_.CreateRequest(
@@ -822,13 +822,13 @@
           finish_callback) override {
     response_callback->OnResponse(
         ServiceWorkerResponse(
-            base::MakeUnique<std::vector<GURL>>(), 200, "OK",
+            std::make_unique<std::vector<GURL>>(), 200, "OK",
             network::mojom::FetchResponseType::kDefault, MakeHeaders(),
             blob_uuid_, blob_size_, nullptr /* blob */,
             blink::kWebServiceWorkerResponseErrorUnknown, base::Time(),
             false /* response_is_in_cache_storage */,
             std::string() /* response_cache_storage_cache_name */,
-            base::MakeUnique<
+            std::make_unique<
                 ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
         base::Time::Now());
     std::move(finish_callback)
@@ -852,14 +852,14 @@
   std::string expected_response;
   expected_response.reserve((sizeof(kTestData) - 1) * 1024);
 
-  auto blob_data = base::MakeUnique<storage::BlobDataBuilder>("blob-id:myblob");
+  auto blob_data = std::make_unique<storage::BlobDataBuilder>("blob-id:myblob");
   for (int i = 0; i < 1024; ++i) {
     blob_data->AppendData(kTestData);
     expected_response += kTestData;
   }
   std::unique_ptr<storage::BlobDataHandle> blob_handle =
       blob_storage_context->context()->AddFinishedBlob(blob_data.get());
-  SetUpWithHelper(base::MakeUnique<BlobResponder>(blob_handle->uuid(),
+  SetUpWithHelper(std::make_unique<BlobResponder>(blob_handle->uuid(),
                                                   expected_response.size()));
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
@@ -881,7 +881,7 @@
 
 TEST_F(ServiceWorkerURLRequestJobTest, NonExistentBlobUUIDResponse) {
   SetUpWithHelper(
-      base::MakeUnique<BlobResponder>("blob-id:nothing-is-here", 0));
+      std::make_unique<BlobResponder>("blob-id:nothing-is-here", 0));
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
   TestRequest(500, "Service Worker Response Error", std::string(),
               true /* expect_valid_ssl */);
@@ -924,12 +924,12 @@
     ASSERT_FALSE(stream_handle_.is_null());
     response_callback->OnResponseStream(
         ServiceWorkerResponse(
-            base::MakeUnique<std::vector<GURL>>(), 200, "OK",
+            std::make_unique<std::vector<GURL>>(), 200, "OK",
             network::mojom::FetchResponseType::kDefault, MakeHeaders(), "", 0,
             nullptr /* blob */, blink::kWebServiceWorkerResponseErrorUnknown,
             base::Time(), false /* response_is_in_cache_storage */,
             std::string() /* response_cache_storage_cache_name */,
-            base::MakeUnique<
+            std::make_unique<
                 ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
         std::move(stream_handle_), base::Time::Now());
     std::move(finish_callback)
@@ -947,7 +947,7 @@
   blink::mojom::ServiceWorkerStreamCallbackPtr stream_callback;
   mojo::DataPipe data_pipe;
   SetUpWithHelper(
-      base::MakeUnique<StreamResponder>(mojo::MakeRequest(&stream_callback),
+      std::make_unique<StreamResponder>(mojo::MakeRequest(&stream_callback),
                                         std::move(data_pipe.consumer_handle)));
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
@@ -1000,7 +1000,7 @@
   blink::mojom::ServiceWorkerStreamCallbackPtr stream_callback;
   mojo::DataPipe data_pipe;
   SetUpWithHelper(
-      base::MakeUnique<StreamResponder>(mojo::MakeRequest(&stream_callback),
+      std::make_unique<StreamResponder>(mojo::MakeRequest(&stream_callback),
                                         std::move(data_pipe.consumer_handle)));
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
@@ -1050,7 +1050,7 @@
   blink::mojom::ServiceWorkerStreamCallbackPtr stream_callback;
   mojo::DataPipe data_pipe;
   SetUpWithHelper(
-      base::MakeUnique<StreamResponder>(mojo::MakeRequest(&stream_callback),
+      std::make_unique<StreamResponder>(mojo::MakeRequest(&stream_callback),
                                         std::move(data_pipe.consumer_handle)));
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
@@ -1103,7 +1103,7 @@
   blink::mojom::ServiceWorkerStreamCallbackPtr stream_callback;
   mojo::DataPipe data_pipe;
   SetUpWithHelper(
-      base::MakeUnique<StreamResponder>(mojo::MakeRequest(&stream_callback),
+      std::make_unique<StreamResponder>(mojo::MakeRequest(&stream_callback),
                                         std::move(data_pipe.consumer_handle)));
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
@@ -1157,7 +1157,7 @@
   blink::mojom::ServiceWorkerStreamCallbackPtr stream_callback;
   mojo::DataPipe data_pipe;
   SetUpWithHelper(
-      base::MakeUnique<StreamResponder>(mojo::MakeRequest(&stream_callback),
+      std::make_unique<StreamResponder>(mojo::MakeRequest(&stream_callback),
                                         std::move(data_pipe.consumer_handle)));
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
@@ -1211,7 +1211,7 @@
   blink::mojom::ServiceWorkerStreamCallbackPtr stream_callback;
   mojo::DataPipe data_pipe;
   SetUpWithHelper(
-      base::MakeUnique<StreamResponder>(mojo::MakeRequest(&stream_callback),
+      std::make_unique<StreamResponder>(mojo::MakeRequest(&stream_callback),
                                         std::move(data_pipe.consumer_handle)));
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
@@ -1249,7 +1249,7 @@
   blink::mojom::ServiceWorkerStreamCallbackPtr stream_callback;
   mojo::DataPipe data_pipe;
   SetUpWithHelper(
-      base::MakeUnique<StreamResponder>(mojo::MakeRequest(&stream_callback),
+      std::make_unique<StreamResponder>(mojo::MakeRequest(&stream_callback),
                                         std::move(data_pipe.consumer_handle)));
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
@@ -1321,7 +1321,7 @@
 };
 
 TEST_F(ServiceWorkerURLRequestJobTest, FailFetchDispatch) {
-  SetUpWithHelper(base::MakeUnique<FailFetchHelper>());
+  SetUpWithHelper(std::make_unique<FailFetchHelper>());
 
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
   request_ = url_request_context_.CreateRequest(
@@ -1350,7 +1350,7 @@
 }
 
 TEST_F(ServiceWorkerURLRequestJobTest, FailToActivate_MainResource) {
-  SetUpWithHelper(base::MakeUnique<EmbeddedWorkerTestHelper>(base::FilePath()));
+  SetUpWithHelper(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath()));
   RunFailToActivateTest(RESOURCE_TYPE_MAIN_FRAME);
 
   // The load should fail and we should have fallen back to network because
@@ -1367,7 +1367,7 @@
 }
 
 TEST_F(ServiceWorkerURLRequestJobTest, FailToActivate_Subresource) {
-  SetUpWithHelper(base::MakeUnique<EmbeddedWorkerTestHelper>(base::FilePath()));
+  SetUpWithHelper(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath()));
   RunFailToActivateTest(RESOURCE_TYPE_IMAGE);
 
   // The load should fail and we should not fall back to network because
@@ -1406,13 +1406,13 @@
     finish_callback_ = std::move(finish_callback);
     response_callback->OnResponse(
         ServiceWorkerResponse(
-            base::MakeUnique<std::vector<GURL>>(), 200, "OK",
+            std::make_unique<std::vector<GURL>>(), 200, "OK",
             network::mojom::FetchResponseType::kDefault,
-            base::MakeUnique<ServiceWorkerHeaderMap>(), std::string(), 0,
+            std::make_unique<ServiceWorkerHeaderMap>(), std::string(), 0,
             nullptr /* blob */, blink::kWebServiceWorkerResponseErrorUnknown,
             base::Time(), false /* response_is_in_cache_storage */,
             std::string() /* response_cache_storage_cache_name */,
-            base::MakeUnique<
+            std::make_unique<
                 ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
         base::Time::Now());
   }
@@ -1426,7 +1426,7 @@
 // This simulates the case when a response is returned and the fetch event is
 // still in flight.
 TEST_F(ServiceWorkerURLRequestJobTest, EarlyResponse) {
-  SetUpWithHelper(base::MakeUnique<EarlyResponseHelper>());
+  SetUpWithHelper(std::make_unique<EarlyResponseHelper>());
   EarlyResponseHelper* helper =
       static_cast<EarlyResponseHelper*>(helper_.get());
 
@@ -1455,7 +1455,7 @@
 
 // Test cancelling the URLRequest while the fetch event is in flight.
 TEST_F(ServiceWorkerURLRequestJobTest, CancelRequest) {
-  SetUpWithHelper(base::MakeUnique<DelayHelper>(this));
+  SetUpWithHelper(std::make_unique<DelayHelper>(this));
   DelayHelper* helper = static_cast<DelayHelper*>(helper_.get());
 
   // Start the URL request. The job will be waiting for the
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index 51cabda..b639bfe 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -289,11 +289,11 @@
       site_for_uma_(ServiceWorkerMetrics::SiteFromURL(scope_)),
       context_(context),
       script_cache_map_(this, context),
-      tick_clock_(base::MakeUnique<base::DefaultTickClock>()),
-      clock_(base::MakeUnique<base::DefaultClock>()),
+      tick_clock_(std::make_unique<base::DefaultTickClock>()),
+      clock_(std::make_unique<base::DefaultClock>()),
       ping_controller_(new PingController(this)),
-      validator_(base::MakeUnique<blink::TrialTokenValidator>(
-          base::MakeUnique<TrialPolicyImpl>())),
+      validator_(std::make_unique<blink::TrialTokenValidator>(
+          std::make_unique<TrialPolicyImpl>())),
       weak_factory_(this) {
   DCHECK_NE(blink::mojom::kInvalidServiceWorkerVersionId, version_id);
   DCHECK(context_);
@@ -575,7 +575,7 @@
       << " can only be dispatched to an active worker: " << status();
 
   int request_id = pending_requests_.Add(
-      base::MakeUnique<PendingRequest>(std::move(error_callback), clock_->Now(),
+      std::make_unique<PendingRequest>(std::move(error_callback), clock_->Now(),
                                        tick_clock_->NowTicks(), event_type));
   TRACE_EVENT_ASYNC_BEGIN2("ServiceWorker", "ServiceWorkerVersion::Request",
                            pending_requests_.Lookup(request_id), "Request id",
@@ -1525,7 +1525,7 @@
   if (!ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(site_for_uma_)) {
     DCHECK(!event_recorder_);
     event_recorder_ =
-        base::MakeUnique<ServiceWorkerMetrics::ScopedEventRecorder>(
+        std::make_unique<ServiceWorkerMetrics::ScopedEventRecorder>(
             start_worker_first_purpose_.value());
   }
   // We don't clear |start_worker_first_purpose_| here but clear in
@@ -1538,7 +1538,7 @@
       ServiceWorkerProviderHost::PreCreateForController(context());
   provider_host_ = pending_provider_host->AsWeakPtr();
 
-  auto params = base::MakeUnique<EmbeddedWorkerStartParams>();
+  auto params = std::make_unique<EmbeddedWorkerStartParams>();
   params->service_worker_version_id = version_id_;
   params->scope = scope_;
   params->script_url = script_url_;
@@ -1550,7 +1550,7 @@
       !pause_after_download_) {
     DCHECK(!installed_scripts_sender_);
     installed_scripts_sender_ =
-        base::MakeUnique<ServiceWorkerInstalledScriptsSender>(this);
+        std::make_unique<ServiceWorkerInstalledScriptsSender>(this);
     installed_scripts_info = installed_scripts_sender_->CreateInfoAndBind();
     installed_scripts_sender_->Start();
   }
diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc
index b84395e..6649e08 100644
--- a/content/browser/service_worker/service_worker_version_unittest.cc
+++ b/content/browser/service_worker/service_worker_version_unittest.cc
@@ -209,7 +209,7 @@
   }
 
   virtual std::unique_ptr<MessageReceiver> GetMessageReceiver() {
-    return base::MakeUnique<MessageReceiver>();
+    return std::make_unique<MessageReceiver>();
   }
 
   void TearDown() override {
@@ -344,7 +344,7 @@
   }
 
   std::unique_ptr<MessageReceiver> GetMessageReceiver() override {
-    return base::MakeUnique<MessageReceiverDisallowStart>();
+    return std::make_unique<MessageReceiverDisallowStart>();
   }
 
  private:
@@ -390,7 +390,7 @@
   ServiceWorkerStallInStoppingTest() : ServiceWorkerVersionTest() {}
 
   std::unique_ptr<MessageReceiver> GetMessageReceiver() override {
-    return base::MakeUnique<MessageReceiverDisallowStop>();
+    return std::make_unique<MessageReceiverDisallowStop>();
   }
 
  private:
@@ -893,7 +893,7 @@
   ServiceWorkerRequestTimeoutTest() : ServiceWorkerVersionTest() {}
 
   std::unique_ptr<MessageReceiver> GetMessageReceiver() override {
-    return base::MakeUnique<MessageReceiverControlEvents>();
+    return std::make_unique<MessageReceiverControlEvents>();
   }
 
   bool has_extendable_message_event_callback() {
diff --git a/content/browser/service_worker/service_worker_write_to_cache_job.cc b/content/browser/service_worker/service_worker_write_to_cache_job.cc
index 277a0f72..91e03ec 100644
--- a/content/browser/service_worker/service_worker_write_to_cache_job.cc
+++ b/content/browser/service_worker/service_worker_write_to_cache_job.cc
@@ -120,7 +120,7 @@
     copy_reader =
         context_->storage()->CreateResponseReader(incumbent_resource_id_);
   }
-  cache_writer_ = base::MakeUnique<ServiceWorkerCacheWriter>(
+  cache_writer_ = std::make_unique<ServiceWorkerCacheWriter>(
       std::move(compare_reader), std::move(copy_reader),
       context_->storage()->CreateResponseWriter(resource_id_));
 
@@ -237,7 +237,7 @@
   net_request_->set_initiator(request()->initiator());
   net_request_->SetReferrer(request()->referrer());
   net_request_->SetUserData(URLRequestServiceWorkerData::kUserDataKey,
-                            base::MakeUnique<URLRequestServiceWorkerData>());
+                            std::make_unique<URLRequestServiceWorkerData>());
   if (extra_load_flags)
     net_request_->SetLoadFlags(net_request_->load_flags() | extra_load_flags);
 
diff --git a/content/browser/site_instance_impl_unittest.cc b/content/browser/site_instance_impl_unittest.cc
index 6dca4eb..62ae772a 100644
--- a/content/browser/site_instance_impl_unittest.cc
+++ b/content/browser/site_instance_impl_unittest.cc
@@ -600,7 +600,7 @@
   std::vector<std::unique_ptr<MockRenderProcessHost>> hosts;
   for (size_t i = 0; i < kMaxRendererProcessCount; ++i)
     hosts.push_back(
-        base::MakeUnique<MockRenderProcessHost>(browser_context.get()));
+        std::make_unique<MockRenderProcessHost>(browser_context.get()));
 
   // Create some extension instances and make sure they share a process.
   scoped_refptr<SiteInstanceImpl> extension1_instance(
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
index 17ca86a..4b33175 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -1104,7 +1104,7 @@
       static_cast<RenderWidgetHostViewBase*>(child_rwh->GetView());
 
   std::unique_ptr<InputEventAckWaiter> gesture_fling_start_ack_observer =
-      base::MakeUnique<InputEventAckWaiter>(
+      std::make_unique<InputEventAckWaiter>(
           blink::WebInputEvent::kGestureFlingStart);
   if (child_rwhv->wheel_scroll_latching_enabled()) {
     // If wheel scroll latching is enabled, the fling start won't bubble since
@@ -1186,7 +1186,7 @@
       filter.get());
 
   std::unique_ptr<InputEventAckWaiter> ack_observer =
-      base::MakeUnique<InputEventAckWaiter>(
+      std::make_unique<InputEventAckWaiter>(
           blink::WebInputEvent::kGestureScrollEnd);
   parent_iframe_node->current_frame_host()
       ->GetRenderWidgetHost()
@@ -1433,13 +1433,13 @@
   WaitForChildFrameSurfaceReady(iframe_node->current_frame_host());
 
   std::unique_ptr<InputEventAckWaiter> scroll_begin_observer =
-      base::MakeUnique<InputEventAckWaiter>(
+      std::make_unique<InputEventAckWaiter>(
           blink::WebInputEvent::kGestureScrollBegin);
   root->current_frame_host()->GetRenderWidgetHost()->AddInputEventObserver(
       scroll_begin_observer.get());
 
   std::unique_ptr<InputEventAckWaiter> scroll_end_observer =
-      base::MakeUnique<InputEventAckWaiter>(
+      std::make_unique<InputEventAckWaiter>(
           blink::WebInputEvent::kGestureScrollEnd);
   root->current_frame_host()->GetRenderWidgetHost()->AddInputEventObserver(
       scroll_end_observer.get());
@@ -1555,7 +1555,7 @@
   WaitForChildFrameSurfaceReady(nested_iframe_node->current_frame_host());
 
   std::unique_ptr<InputEventAckWaiter> ack_observer =
-      base::MakeUnique<InputEventAckWaiter>(
+      std::make_unique<InputEventAckWaiter>(
           blink::WebInputEvent::kGestureScrollBegin);
   root->current_frame_host()->GetRenderWidgetHost()->AddInputEventObserver(
       ack_observer.get());
@@ -1564,11 +1564,11 @@
   if (root_view->wheel_scroll_latching_enabled()) {
     // All GSU events will be wrapped between a single GSB-GSE pair. The
     // expected delta value is equal to summation of all scroll update deltas.
-    scroll_observer = base::MakeUnique<ScrollObserver>(0, 15);
+    scroll_observer = std::make_unique<ScrollObserver>(0, 15);
   } else {
     // Each GSU will be wrapped betweeen its own GSB-GSE pair. The expected
     // delta value is the delta of the first GSU event.
-    scroll_observer = base::MakeUnique<ScrollObserver>(0, 5);
+    scroll_observer = std::make_unique<ScrollObserver>(0, 5);
   }
   root->current_frame_host()->GetRenderWidgetHost()->AddInputEventObserver(
       scroll_observer.get());
@@ -1784,7 +1784,7 @@
       static_cast<RenderWidgetHostViewAura*>(rwhv_root);
   std::unique_ptr<MockOverscrollControllerDelegateAura>
       mock_overscroll_delegate =
-          base::MakeUnique<MockOverscrollControllerDelegateAura>(rwhva);
+          std::make_unique<MockOverscrollControllerDelegateAura>(rwhva);
   rwhva->overscroll_controller()->set_delegate(mock_overscroll_delegate.get());
   MockOverscrollObserver* mock_overscroll_observer =
       mock_overscroll_delegate.get();
@@ -1792,7 +1792,7 @@
   RenderWidgetHostViewAndroid* rwhv_android =
       static_cast<RenderWidgetHostViewAndroid*>(rwhv_root);
   std::unique_ptr<MockOverscrollRefreshHandlerAndroid> mock_overscroll_handler =
-      base::MakeUnique<MockOverscrollRefreshHandlerAndroid>();
+      std::make_unique<MockOverscrollRefreshHandlerAndroid>();
   rwhv_android->SetOverscrollControllerForTesting(
       mock_overscroll_handler.get());
   MockOverscrollObserver* mock_overscroll_observer =
@@ -1800,13 +1800,13 @@
 #endif  // defined(USE_AURA)
 
   std::unique_ptr<InputEventAckWaiter> gesture_begin_observer_child =
-      base::MakeUnique<InputEventAckWaiter>(
+      std::make_unique<InputEventAckWaiter>(
           blink::WebInputEvent::kGestureScrollBegin);
   child_node->current_frame_host()
       ->GetRenderWidgetHost()
       ->AddInputEventObserver(gesture_begin_observer_child.get());
   std::unique_ptr<InputEventAckWaiter> gesture_end_observer_child =
-      base::MakeUnique<InputEventAckWaiter>(
+      std::make_unique<InputEventAckWaiter>(
           blink::WebInputEvent::kGestureScrollEnd);
   child_node->current_frame_host()
       ->GetRenderWidgetHost()
@@ -2997,7 +2997,7 @@
   bool network_service =
       base::FeatureList::IsEnabled(features::kNetworkService);
   mojom::URLLoaderFactoryPtr failing_factory;
-  mojo::MakeStrongBinding(base::MakeUnique<FailingLoadFactory>(),
+  mojo::MakeStrongBinding(std::make_unique<FailingLoadFactory>(),
                           mojo::MakeRequest(&failing_factory));
   StoragePartitionImpl* storage_partition = nullptr;
   if (network_service) {
@@ -6467,7 +6467,7 @@
   // Wait until renderer's compositor thread is synced.
   {
     auto observer =
-        base::MakeUnique<MainThreadFrameObserver>(render_widget_host);
+        std::make_unique<MainThreadFrameObserver>(render_widget_host);
     observer->Wait();
   }
 
@@ -6481,7 +6481,7 @@
   rwhv->OnTouchEvent(&touch_event);
   {
     auto observer =
-        base::MakeUnique<MainThreadFrameObserver>(render_widget_host);
+        std::make_unique<MainThreadFrameObserver>(render_widget_host);
     observer->Wait();
   }
 
@@ -7836,7 +7836,7 @@
 
  private:
   void RegisterCallback() {
-    view_->RegisterFrameSwappedCallback(base::MakeUnique<base::Closure>(
+    view_->RegisterFrameSwappedCallback(std::make_unique<base::Closure>(
         base::Bind(&ChildFrameCompositorFrameSwapCounter::OnFrameSwapped,
                    weak_factory_.GetWeakPtr())));
   }
@@ -10798,7 +10798,7 @@
     : public SitePerProcessBrowserTest {
  public:
   RequestDelayingSitePerProcessBrowserTest()
-      : test_server_(base::MakeUnique<net::EmbeddedTestServer>()) {}
+      : test_server_(std::make_unique<net::EmbeddedTestServer>()) {}
 
   // Must be called after any calls to SetDelayedRequestsForPath.
   void SetUpEmbeddedTestServer() {
@@ -10846,7 +10846,7 @@
     // send an empty response.
     if (it->second > 0) {
       --it->second;
-      return base::MakeUnique<DelayedResponse>(this);
+      return std::make_unique<DelayedResponse>(this);
     }
     MaybeStartRequests();
     return std::unique_ptr<net::test_server::BasicHttpResponse>();
diff --git a/content/browser/site_per_process_mac_browsertest.mm b/content/browser/site_per_process_mac_browsertest.mm
index 5e9faf9e..ccee24ea 100644
--- a/content/browser/site_per_process_mac_browsertest.mm
+++ b/content/browser/site_per_process_mac_browsertest.mm
@@ -197,10 +197,10 @@
       child_iframe_node->current_frame_host()->GetRenderWidgetHost();
 
   std::unique_ptr<InputEventAckWaiter> gesture_scroll_begin_ack_observer =
-      base::MakeUnique<InputEventAckWaiter>(
+      std::make_unique<InputEventAckWaiter>(
           blink::WebInputEvent::kGestureScrollBegin);
   std::unique_ptr<InputEventAckWaiter> gesture_scroll_end_ack_observer =
-      base::MakeUnique<InputEventAckWaiter>(
+      std::make_unique<InputEventAckWaiter>(
           blink::WebInputEvent::kGestureScrollEnd);
   child_rwh->AddInputEventObserver(gesture_scroll_begin_ack_observer.get());
   child_rwh->AddInputEventObserver(gesture_scroll_end_ack_observer.get());
diff --git a/content/browser/speech/speech_recognizer_impl_unittest.cc b/content/browser/speech/speech_recognizer_impl_unittest.cc
index 6f2b042..4515018 100644
--- a/content/browser/speech/speech_recognizer_impl_unittest.cc
+++ b/content/browser/speech/speech_recognizer_impl_unittest.cc
@@ -66,7 +66,7 @@
     const int kTestingSessionId = 1;
 
     audio_manager_.reset(new media::MockAudioManager(
-        base::MakeUnique<media::TestAudioThread>(true)));
+        std::make_unique<media::TestAudioThread>(true)));
     audio_manager_->SetInputStreamParameters(
         media::AudioParameters::UnavailableDeviceParams());
     audio_system_ =
diff --git a/content/browser/ssl/ssl_manager.cc b/content/browser/ssl/ssl_manager.cc
index 113b5cb5..c4b51cd6 100644
--- a/content/browser/ssl/ssl_manager.cc
+++ b/content/browser/ssl/ssl_manager.cc
@@ -176,7 +176,7 @@
   SSLManagerSet* managers = static_cast<SSLManagerSet*>(
       controller_->GetBrowserContext()->GetUserData(kSSLManagerKeyName));
   if (!managers) {
-    auto managers_owned = base::MakeUnique<SSLManagerSet>();
+    auto managers_owned = std::make_unique<SSLManagerSet>();
     managers = managers_owned.get();
     controller_->GetBrowserContext()->SetUserData(kSSLManagerKeyName,
                                                   std::move(managers_owned));
diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc
index 011f314b..e2f2b67 100644
--- a/content/browser/storage_partition_impl.cc
+++ b/content/browser/storage_partition_impl.cc
@@ -261,7 +261,7 @@
                   scoped_refptr<net::URLRequestContextGetter> context_getter) {
     DCHECK_CURRENTLY_ON(BrowserThread::IO);
     context_getter_ = std::move(context_getter);
-    network_context_ = base::MakeUnique<NetworkContext>(
+    network_context_ = std::make_unique<NetworkContext>(
         std::move(network_context_request),
         context_getter_->GetURLRequestContext());
   }
@@ -592,7 +592,7 @@
   if (!network_context_) {
     DCHECK(!base::FeatureList::IsEnabled(features::kNetworkService));
     DCHECK(!network_context_owner_);
-    network_context_owner_ = base::MakeUnique<NetworkContextOwner>();
+    network_context_owner_ = std::make_unique<NetworkContextOwner>();
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
         base::BindOnce(&NetworkContextOwner::Initialize,
diff --git a/content/browser/storage_partition_impl_map.cc b/content/browser/storage_partition_impl_map.cc
index c2ead6db..e03e5ab4 100644
--- a/content/browser/storage_partition_impl_map.cc
+++ b/content/browser/storage_partition_impl_map.cc
@@ -425,7 +425,7 @@
 
   URLRequestInterceptorScopedVector request_interceptors;
   request_interceptors.push_back(
-      base::MakeUnique<DevToolsURLRequestInterceptor>(browser_context_));
+      std::make_unique<DevToolsURLRequestInterceptor>(browser_context_));
   request_interceptors.push_back(ServiceWorkerRequestHandler::CreateInterceptor(
       browser_context_->GetResourceContext()));
   if (ForeignFetchRequestHandler::IsForeignFetchEnabled()) {
@@ -433,7 +433,7 @@
         ForeignFetchRequestHandler::CreateInterceptor(
             browser_context_->GetResourceContext()));
   }
-  request_interceptors.push_back(base::MakeUnique<AppCacheInterceptor>());
+  request_interceptors.push_back(std::make_unique<AppCacheInterceptor>());
 
   // These calls must happen after StoragePartitionImpl::Create().
   if (partition_domain.empty()) {
diff --git a/content/browser/storage_partition_impl_unittest.cc b/content/browser/storage_partition_impl_unittest.cc
index 51710fe..b1d88e15 100644
--- a/content/browser/storage_partition_impl_unittest.cc
+++ b/content/browser/storage_partition_impl_unittest.cc
@@ -335,7 +335,7 @@
         filesystem_context_->GetAsyncFileUtil(
             storage::kFileSystemTypePluginPrivate);
     std::unique_ptr<storage::FileSystemOperationContext> operation_context =
-        base::MakeUnique<storage::FileSystemOperationContext>(
+        std::make_unique<storage::FileSystemOperationContext>(
             filesystem_context_);
     async_file_util->CreateOrOpen(
         std::move(operation_context), clearkey_file_,
@@ -381,7 +381,7 @@
     storage::AsyncFileUtil* file_util = filesystem_context_->GetAsyncFileUtil(
         storage::kFileSystemTypePluginPrivate);
     std::unique_ptr<storage::FileSystemOperationContext> operation_context =
-        base::MakeUnique<storage::FileSystemOperationContext>(
+        std::make_unique<storage::FileSystemOperationContext>(
             filesystem_context_);
     operation_context->set_allowed_bytes_growth(
         storage::QuotaManager::kNoLimit);
@@ -398,7 +398,7 @@
     storage::AsyncFileUtil* file_util = filesystem_context_->GetAsyncFileUtil(
         storage::kFileSystemTypePluginPrivate);
     std::unique_ptr<storage::FileSystemOperationContext> operation_context =
-        base::MakeUnique<storage::FileSystemOperationContext>(
+        std::make_unique<storage::FileSystemOperationContext>(
             filesystem_context_);
     file_util->DeleteFile(
         std::move(operation_context), file_url,
@@ -415,7 +415,7 @@
     storage::AsyncFileUtil* file_util = filesystem_context_->GetAsyncFileUtil(
         storage::kFileSystemTypePluginPrivate);
     std::unique_ptr<storage::FileSystemOperationContext> operation_context =
-        base::MakeUnique<storage::FileSystemOperationContext>(
+        std::make_unique<storage::FileSystemOperationContext>(
             filesystem_context_);
     file_util->Touch(std::move(operation_context), file_url, time_stamp,
                      time_stamp,
diff --git a/content/browser/streams/stream_context.cc b/content/browser/streams/stream_context.cc
index b23d083c..7aafca3a 100644
--- a/content/browser/streams/stream_context.cc
+++ b/content/browser/streams/stream_context.cc
@@ -27,7 +27,7 @@
     scoped_refptr<StreamContext> stream = new StreamContext();
     context->SetUserData(
         kStreamContextKeyName,
-        base::MakeUnique<UserDataAdapter<StreamContext>>(stream.get()));
+        std::make_unique<UserDataAdapter<StreamContext>>(stream.get()));
     // Check first to avoid memory leak in unittests.
     if (BrowserThread::IsMessageLoopValid(BrowserThread::IO)) {
       BrowserThread::PostTask(
diff --git a/content/browser/streams/stream_url_request_job_unittest.cc b/content/browser/streams/stream_url_request_job_unittest.cc
index 2301b0d..21cfab09 100644
--- a/content/browser/streams/stream_url_request_job_unittest.cc
+++ b/content/browser/streams/stream_url_request_job_unittest.cc
@@ -61,7 +61,7 @@
     registry_.reset(new StreamRegistry());
 
     url_request_job_factory_.SetProtocolHandler(
-        "blob", base::MakeUnique<MockProtocolHandler>(registry_.get()));
+        "blob", std::make_unique<MockProtocolHandler>(registry_.get()));
     url_request_context_.set_job_factory(&url_request_job_factory_);
   }
 
diff --git a/content/browser/tracing/background_tracing_manager_impl.cc b/content/browser/tracing/background_tracing_manager_impl.cc
index b59b9be..578fb413 100644
--- a/content/browser/tracing/background_tracing_manager_impl.cc
+++ b/content/browser/tracing/background_tracing_manager_impl.cc
@@ -552,9 +552,9 @@
   if (!IsAllowedFinalization())
     return nullptr;
 
-  auto metadata_dict = base::MakeUnique<base::DictionaryValue>();
+  auto metadata_dict = std::make_unique<base::DictionaryValue>();
   if (config_) {
-    auto config_dict = base::MakeUnique<base::DictionaryValue>();
+    auto config_dict = std::make_unique<base::DictionaryValue>();
     config_->IntoDict(config_dict.get());
     metadata_dict->Set("config", std::move(config_dict));
   }
diff --git a/content/browser/tracing/etw_tracing_agent_win.cc b/content/browser/tracing/etw_tracing_agent_win.cc
index 210a4d0..f39b59d1 100644
--- a/content/browser/tracing/etw_tracing_agent_win.cc
+++ b/content/browser/tracing/etw_tracing_agent_win.cc
@@ -199,7 +199,7 @@
   now_in_us.QuadPart = now.ToInternalValue();
 
   // Add fields to the event.
-  auto value = base::MakeUnique<base::DictionaryValue>();
+  auto value = std::make_unique<base::DictionaryValue>();
   value->SetString("guid", "ClockSync");
   value->SetString("walltime",
                    base::StringPrintf("%08lX%08lX", walltime_in_us.HighPart,
@@ -212,7 +212,7 @@
 }
 
 void EtwTracingAgent::AppendEventToBuffer(EVENT_TRACE* event) {
-  auto value = base::MakeUnique<base::DictionaryValue>();
+  auto value = std::make_unique<base::DictionaryValue>();
 
   // Add header fields to the event.
   LARGE_INTEGER ts_us;
@@ -255,7 +255,7 @@
 
 void EtwTracingAgent::FlushOnThread() {
   // Add the header information to the stream.
-  auto header = base::MakeUnique<base::DictionaryValue>();
+  auto header = std::make_unique<base::DictionaryValue>();
   header->SetString("name", "ETW");
 
   // Release and pass the events buffer.
diff --git a/content/browser/tracing/memory_instrumentation_browsertest.cc b/content/browser/tracing/memory_instrumentation_browsertest.cc
index f9a3874..b935015 100644
--- a/content/browser/tracing/memory_instrumentation_browsertest.cc
+++ b/content/browser/tracing/memory_instrumentation_browsertest.cc
@@ -83,7 +83,7 @@
 
   GlobalMemoryDumpPtr before_ptr = DoGlobalDump();
 
-  std::unique_ptr<char[]> buffer = base::MakeUnique<char[]>(kAllocSize);
+  std::unique_ptr<char[]> buffer = std::make_unique<char[]>(kAllocSize);
   memset(buffer.get(), 1, kAllocSize);
   volatile char* x = static_cast<volatile char*>(buffer.get());
   EXPECT_EQ(x[0] + x[kAllocSize - 1], 2);
diff --git a/content/browser/tracing/tracing_controller_browsertest.cc b/content/browser/tracing/tracing_controller_browsertest.cc
index 66e938e6a..ba3e452 100644
--- a/content/browser/tracing/tracing_controller_browsertest.cc
+++ b/content/browser/tracing/tracing_controller_browsertest.cc
@@ -269,7 +269,7 @@
       scoped_refptr<TracingController::TraceDataEndpoint> trace_data_endpoint =
           TracingController::CreateStringEndpoint(callback);
 
-      metadata_ = base::MakeUnique<base::DictionaryValue>();
+      metadata_ = std::make_unique<base::DictionaryValue>();
       metadata_->SetString("not-whitelisted", "this_not_found");
 
       bool result = controller->StopTracing(trace_data_endpoint);
diff --git a/content/browser/tracing/tracing_controller_impl.cc b/content/browser/tracing/tracing_controller_impl.cc
index f8c62f80b..c43df00 100644
--- a/content/browser/tracing/tracing_controller_impl.cc
+++ b/content/browser/tracing/tracing_controller_impl.cc
@@ -134,18 +134,18 @@
 
 // Register tracing agents.
 #if defined(ENABLE_POWER_TRACING)
-  agents_.push_back(base::MakeUnique<PowerTracingAgent>(connector));
+  agents_.push_back(std::make_unique<PowerTracingAgent>(connector));
 #endif
 
 #if defined(OS_CHROMEOS)
-  agents_.push_back(base::MakeUnique<CrOSTracingAgent>(connector));
-  agents_.push_back(base::MakeUnique<ArcTracingAgentImpl>(connector));
+  agents_.push_back(std::make_unique<CrOSTracingAgent>(connector));
+  agents_.push_back(std::make_unique<ArcTracingAgentImpl>(connector));
 #elif defined(OS_WIN)
-  agents_.push_back(base::MakeUnique<EtwTracingAgent>(connector));
+  agents_.push_back(std::make_unique<EtwTracingAgent>(connector));
 #endif
 
   auto chrome_agent =
-      base::MakeUnique<tracing::ChromeTraceEventAgent>(connector);
+      std::make_unique<tracing::ChromeTraceEventAgent>(connector);
   // For adding general CPU, network, OS, and other system information to the
   // metadata.
   chrome_agent->AddMetadataGeneratorFunction(base::BindRepeating(
@@ -160,7 +160,7 @@
 
 std::unique_ptr<base::DictionaryValue>
 TracingControllerImpl::GenerateMetadataDict() const {
-  auto metadata_dict = base::MakeUnique<base::DictionaryValue>();
+  auto metadata_dict = std::make_unique<base::DictionaryValue>();
   metadata_dict->SetString("trace-config", trace_config_->ToString());
 
   metadata_dict->SetString("network-type", GetNetworkTypeString());
@@ -291,7 +291,7 @@
     const StartTracingDoneCallback& callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   trace_config_ =
-      base::MakeUnique<base::trace_event::TraceConfig>(trace_config);
+      std::make_unique<base::trace_event::TraceConfig>(trace_config);
   coordinator_->StartTracing(
       trace_config.ToString(),
       base::BindRepeating(
@@ -375,7 +375,7 @@
   if (trace_data_endpoint_) {
     const std::string chunk(static_cast<const char*>(data), num_bytes);
     trace_data_endpoint_->ReceiveTraceChunk(
-        base::MakeUnique<std::string>(chunk));
+        std::make_unique<std::string>(chunk));
   }
 }
 
@@ -406,12 +406,12 @@
   if (metadata_filter.is_null()) {
     filtered_metadata_ = std::move(metadata);
   } else {
-    filtered_metadata_ = base::MakeUnique<base::DictionaryValue>();
+    filtered_metadata_ = std::make_unique<base::DictionaryValue>();
     for (base::DictionaryValue::Iterator it(*metadata); !it.IsAtEnd();
          it.Advance()) {
       if (metadata_filter.Run(it.key())) {
         filtered_metadata_->Set(
-            it.key(), base::MakeUnique<base::Value>(it.value().Clone()));
+            it.key(), std::make_unique<base::Value>(it.value().Clone()));
       } else {
         filtered_metadata_->SetString(it.key(), "__stripped__");
       }
diff --git a/content/browser/tracing/tracing_controller_impl_data_endpoint.cc b/content/browser/tracing/tracing_controller_impl_data_endpoint.cc
index 0d4f1d66d1..9d69891d 100644
--- a/content/browser/tracing/tracing_controller_impl_data_endpoint.cc
+++ b/content/browser/tracing/tracing_controller_impl_data_endpoint.cc
@@ -201,7 +201,7 @@
       int bytes = kChunkSize - stream_->avail_out;
       if (bytes) {
         std::string compressed(buffer, bytes);
-        endpoint_->ReceiveTraceChunk(base::MakeUnique<std::string>(compressed));
+        endpoint_->ReceiveTraceChunk(std::make_unique<std::string>(compressed));
       }
     } while (stream_->avail_out == 0);
   }
diff --git a/content/browser/utility_process_host_impl.cc b/content/browser/utility_process_host_impl.cc
index d6be558..1d0d0829 100644
--- a/content/browser/utility_process_host_impl.cc
+++ b/content/browser/utility_process_host_impl.cc
@@ -252,7 +252,7 @@
       // As a workaround skip calling it here, since the executable name is
       // not needed on Android anyway. See crbug.com/500854.
     std::unique_ptr<base::CommandLine> cmd_line =
-        base::MakeUnique<base::CommandLine>(base::CommandLine::NO_PROGRAM);
+        std::make_unique<base::CommandLine>(base::CommandLine::NO_PROGRAM);
     #else
       int child_flags = child_flags_;
 
@@ -271,7 +271,7 @@
       }
 
       std::unique_ptr<base::CommandLine> cmd_line =
-          base::MakeUnique<base::CommandLine>(exe_path);
+          std::make_unique<base::CommandLine>(exe_path);
     #endif
 
     cmd_line->AppendSwitchASCII(switches::kProcessType,
@@ -336,7 +336,7 @@
           *service_identity_, cmd_line.get());
     }
 
-    process_->Launch(base::MakeUnique<UtilitySandboxedProcessLauncherDelegate>(
+    process_->Launch(std::make_unique<UtilitySandboxedProcessLauncherDelegate>(
                          exposed_dir_, run_elevated_, sandbox_type_, env_),
                      std::move(cmd_line), true);
   }
diff --git a/content/browser/web_contents/aura/gesture_nav_simple.cc b/content/browser/web_contents/aura/gesture_nav_simple.cc
index 2f2fd6c0..184563fc 100644
--- a/content/browser/web_contents/aura/gesture_nav_simple.cc
+++ b/content/browser/web_contents/aura/gesture_nav_simple.cc
@@ -326,7 +326,7 @@
 
   state_ = State::ABORTING;
 
-  animation_ = base::MakeUnique<gfx::LinearAnimation>(
+  animation_ = std::make_unique<gfx::LinearAnimation>(
       GetAffordanceProgress() * kAbortAnimationDuration,
       gfx::LinearAnimation::kDefaultFrameRate, this);
   animation_->Start();
@@ -338,7 +338,7 @@
 
   state_ = State::COMPLETING;
 
-  animation_ = base::MakeUnique<gfx::LinearAnimation>(
+  animation_ = std::make_unique<gfx::LinearAnimation>(
       kRippleBurstAnimationDuration, gfx::LinearAnimation::kDefaultFrameRate,
       this);
   animation_->Start();
@@ -646,7 +646,7 @@
   DCHECK_LE(0, max_delta_);
 
   aura::Window* window = web_contents_->GetNativeView();
-  affordance_ = base::MakeUnique<Affordance>(
+  affordance_ = std::make_unique<Affordance>(
       this, mode_, window->bounds(), max_delta_ / completion_threshold_);
 
   // Adding the affordance as a child of the content window is not sufficient,
diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc
index e9f632c..7a52b02 100644
--- a/content/browser/web_contents/web_contents_android.cc
+++ b/content/browser/web_contents/web_contents_android.cc
@@ -591,7 +591,7 @@
   WebContentsViewAndroid* view =
       static_cast<WebContentsViewAndroid*>(web_contents_->GetView());
   view->SetOverscrollRefreshHandler(
-      base::MakeUnique<ui::OverscrollRefreshHandler>(
+      std::make_unique<ui::OverscrollRefreshHandler>(
           overscroll_refresh_handler));
 }
 
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 6a4a330..8a788f6 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -1860,7 +1860,7 @@
 void WebContentsImpl::AddDestructionObserver(WebContentsImpl* web_contents) {
   if (!ContainsKey(destruction_observers_, web_contents)) {
     destruction_observers_[web_contents] =
-        base::MakeUnique<DestructionObserver>(this, web_contents);
+        std::make_unique<DestructionObserver>(this, web_contents);
   }
 }
 
@@ -3329,7 +3329,7 @@
             "triggered by user request."
           policy_exception_justification: "Not implemented."
         })");
-  auto params = base::MakeUnique<DownloadUrlParameters>(
+  auto params = std::make_unique<DownloadUrlParameters>(
       url, frame_host->GetProcess()->GetID(),
       frame_host->GetRenderViewHost()->GetRoutingID(),
       frame_host->GetRoutingID(), storage_partition->GetURLRequestContext(),
@@ -5714,12 +5714,12 @@
 }
 
 std::unique_ptr<WebUIImpl> WebContentsImpl::CreateWebUI(const GURL& url) {
-  std::unique_ptr<WebUIImpl> web_ui = base::MakeUnique<WebUIImpl>(this);
+  std::unique_ptr<WebUIImpl> web_ui = std::make_unique<WebUIImpl>(this);
   WebUIController* controller =
       WebUIControllerFactoryRegistry::GetInstance()
           ->CreateWebUIControllerForURL(web_ui.get(), url);
   if (controller) {
-    web_ui->AddMessageHandler(base::MakeUnique<GenericHandler>());
+    web_ui->AddMessageHandler(std::make_unique<GenericHandler>());
     web_ui->SetController(controller);
     return web_ui;
   }
diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc
index d800224..af9d1c4 100644
--- a/content/browser/web_contents/web_contents_view_aura.cc
+++ b/content/browser/web_contents/web_contents_view_aura.cc
@@ -805,7 +805,7 @@
   // value is set shortly after this, so its safe to ignore.
 
   DCHECK(aura::Env::GetInstanceDontCreate());
-  window_ = base::MakeUnique<aura::Window>(this);
+  window_ = std::make_unique<aura::Window>(this);
   window_->set_owned_by_parent(false);
   window_->SetType(aura::client::WINDOW_TYPE_CONTROL);
   window_->SetName("WebContentsViewAura");
diff --git a/content/browser/web_contents_binding_set_browsertest.cc b/content/browser/web_contents_binding_set_browsertest.cc
index ba90518..9c18a8aa 100644
--- a/content/browser/web_contents_binding_set_browsertest.cc
+++ b/content/browser/web_contents_binding_set_browsertest.cc
@@ -80,7 +80,7 @@
   WebContentsBindingSet::GetForWebContents<
       mojom::BrowserAssociatedInterfaceTestDriver>(web_contents)
       ->SetBinderForTesting(
-          base::MakeUnique<TestInterfaceBinder>(run_loop.QuitClosure()));
+          std::make_unique<TestInterfaceBinder>(run_loop.QuitClosure()));
 
   // Simulate an inbound request for the test interface. This should get routed
   // to the overriding binder and allow the test to complete.
diff --git a/content/browser/webrtc/webrtc_internals.cc b/content/browser/webrtc/webrtc_internals.cc
index d8285f1..f227182 100644
--- a/content/browser/webrtc/webrtc_internals.cc
+++ b/content/browser/webrtc/webrtc_internals.cc
@@ -47,7 +47,7 @@
 base::ListValue* EnsureLogList(base::DictionaryValue* dict) {
   base::ListValue* log = NULL;
   if (!dict->GetList("log", &log))
-    log = dict->SetList("log", base::MakeUnique<base::ListValue>());
+    log = dict->SetList("log", std::make_unique<base::ListValue>());
   return log;
 }
 
@@ -191,7 +191,7 @@
   if (!observers_.might_have_observers())
     return;
 
-  auto log_entry = base::MakeUnique<base::DictionaryValue>();
+  auto log_entry = std::make_unique<base::DictionaryValue>();
 
   double epoch_time = base::Time::Now().ToJsTime();
   string time = base::DoubleToString(epoch_time);
@@ -199,7 +199,7 @@
   log_entry->SetString("type", type);
   log_entry->SetString("value", value);
 
-  auto update = base::MakeUnique<base::DictionaryValue>();
+  auto update = std::make_unique<base::DictionaryValue>();
   update->SetInteger("pid", static_cast<int>(pid));
   update->SetInteger("lid", lid);
   update->MergeDictionary(log_entry.get());
@@ -215,7 +215,7 @@
   if (!observers_.might_have_observers())
     return;
 
-  auto dict = base::MakeUnique<base::DictionaryValue>();
+  auto dict = std::make_unique<base::DictionaryValue>();
   dict->SetInteger("pid", static_cast<int>(pid));
   dict->SetInteger("lid", lid);
 
@@ -233,7 +233,7 @@
                                      const std::string& video_constraints) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
-  auto dict = base::MakeUnique<base::DictionaryValue>();
+  auto dict = std::make_unique<base::DictionaryValue>();
   dict->SetInteger("rid", rid);
   dict->SetInteger("pid", static_cast<int>(pid));
   dict->SetString("origin", origin);
diff --git a/content/browser/webrtc/webrtc_internals_ui.cc b/content/browser/webrtc/webrtc_internals_ui.cc
index 027ab873..6e26375 100644
--- a/content/browser/webrtc/webrtc_internals_ui.cc
+++ b/content/browser/webrtc/webrtc_internals_ui.cc
@@ -36,7 +36,7 @@
 
 WebRTCInternalsUI::WebRTCInternalsUI(WebUI* web_ui)
     : WebUIController(web_ui) {
-  web_ui->AddMessageHandler(base::MakeUnique<WebRTCInternalsMessageHandler>());
+  web_ui->AddMessageHandler(std::make_unique<WebRTCInternalsMessageHandler>());
 
   BrowserContext* browser_context =
       web_ui->GetWebContents()->GetBrowserContext();
diff --git a/content/browser/webui/url_data_manager.cc b/content/browser/webui/url_data_manager.cc
index f45d227..8ef8418 100644
--- a/content/browser/webui/url_data_manager.cc
+++ b/content/browser/webui/url_data_manager.cc
@@ -34,7 +34,7 @@
 URLDataManager* GetFromBrowserContext(BrowserContext* context) {
   if (!context->GetUserData(kURLDataManagerKeyName)) {
     context->SetUserData(kURLDataManagerKeyName,
-                         base::MakeUnique<URLDataManager>(context));
+                         std::make_unique<URLDataManager>(context));
   }
   return static_cast<URLDataManager*>(
       context->GetUserData(kURLDataManagerKeyName));
diff --git a/content/browser/webui/url_data_manager_backend.cc b/content/browser/webui/url_data_manager_backend.cc
index 66e52a3..b4e9e6dc 100644
--- a/content/browser/webui/url_data_manager_backend.cc
+++ b/content/browser/webui/url_data_manager_backend.cc
@@ -437,7 +437,7 @@
     ResourceContext* resource_context,
     ChromeBlobStorageContext* blob_storage_context) {
   DCHECK(resource_context);
-  return base::MakeUnique<ChromeProtocolHandler>(resource_context,
+  return std::make_unique<ChromeProtocolHandler>(resource_context,
                                                  blob_storage_context);
 }
 
diff --git a/content/browser/webui/web_ui_mojo_browsertest.cc b/content/browser/webui/web_ui_mojo_browsertest.cc
index b54e78bf..5c8b8ce 100644
--- a/content/browser/webui/web_ui_mojo_browsertest.cc
+++ b/content/browser/webui/web_ui_mojo_browsertest.cc
@@ -141,7 +141,7 @@
 
   void CreateHandler(mojom::BrowserTargetRequest request) {
     browser_target_ =
-        base::MakeUnique<BrowserTargetImpl>(run_loop_, std::move(request));
+        std::make_unique<BrowserTargetImpl>(run_loop_, std::move(request));
   }
 
  private:
diff --git a/content/browser/webui/web_ui_url_loader_factory.cc b/content/browser/webui/web_ui_url_loader_factory.cc
index 61bcfd0..bdca9ba 100644
--- a/content/browser/webui/web_ui_url_loader_factory.cc
+++ b/content/browser/webui/web_ui_url_loader_factory.cc
@@ -290,7 +290,7 @@
   int ftn_id = node->frame_tree_node_id();
   if (g_web_ui_url_loader_factories.Get()[ftn_id].get() == nullptr)
     g_web_ui_url_loader_factories.Get()[ftn_id] =
-        base::MakeUnique<WebUIURLLoaderFactory>(node);
+        std::make_unique<WebUIURLLoaderFactory>(node);
   return g_web_ui_url_loader_factories.Get()[ftn_id]->CreateBinding();
 }
 
diff --git a/content/child/child_histogram_fetcher_impl.cc b/content/child/child_histogram_fetcher_impl.cc
index 31a6b2e..f574244 100644
--- a/content/child/child_histogram_fetcher_impl.cc
+++ b/content/child/child_histogram_fetcher_impl.cc
@@ -26,7 +26,7 @@
 
 void ChildHistogramFetcherFactoryImpl::Create(
     content::mojom::ChildHistogramFetcherFactoryRequest request) {
-  mojo::MakeStrongBinding(base::MakeUnique<ChildHistogramFetcherFactoryImpl>(),
+  mojo::MakeStrongBinding(std::make_unique<ChildHistogramFetcherFactoryImpl>(),
                           std::move(request));
 }
 
@@ -51,7 +51,7 @@
     global_allocator->CreateTrackingHistograms(global_allocator->Name());
 
   content::mojom::ChildHistogramFetcherPtr child_histogram_interface;
-  mojo::MakeStrongBinding(base::MakeUnique<ChildHistogramFetcherImpl>(),
+  mojo::MakeStrongBinding(std::make_unique<ChildHistogramFetcherImpl>(),
                           std::move(request));
 }
 
diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc
index 41b4f085..0a90b60 100644
--- a/content/child/child_thread_impl.cc
+++ b/content/child/child_thread_impl.cc
@@ -413,7 +413,7 @@
   mojo::ScopedMessagePipeHandle handle =
       mojo::MakeRequest(&bootstrap).PassMessagePipe();
   service_manager_connection_->AddConnectionFilter(
-      base::MakeUnique<ChannelBootstrapFilter>(bootstrap.PassInterface()));
+      std::make_unique<ChannelBootstrapFilter>(bootstrap.PassInterface()));
 
   channel_->Init(
       IPC::ChannelMojo::CreateClientFactory(
@@ -470,14 +470,14 @@
   thread_safe_sender_ = new ThreadSafeSender(
       message_loop_->task_runner(), sync_message_filter_.get());
 
-  auto registry = base::MakeUnique<service_manager::BinderRegistry>();
+  auto registry = std::make_unique<service_manager::BinderRegistry>();
   registry->AddInterface(base::Bind(&ChildHistogramFetcherFactoryImpl::Create),
                          GetIOTaskRunner());
   registry->AddInterface(base::Bind(&ChildThreadImpl::OnChildControlRequest,
                                     base::Unretained(this)),
                          base::ThreadTaskRunnerHandle::Get());
   GetServiceManagerConnection()->AddConnectionFilter(
-      base::MakeUnique<SimpleConnectionFilter>(std::move(registry)));
+      std::make_unique<SimpleConnectionFilter>(std::move(registry)));
 
   InitTracing();
 
@@ -510,7 +510,7 @@
   // not create the power monitor.
   if (!base::PowerMonitor::Get() && service_manager_connection_) {
     auto power_monitor_source =
-        base::MakeUnique<device::PowerMonitorBroadcastSource>(
+        std::make_unique<device::PowerMonitorBroadcastSource>(
             GetConnector(), GetIOTaskRunner());
     power_monitor_.reset(
         new base::PowerMonitor(std::move(power_monitor_source)));
@@ -598,7 +598,7 @@
       ChildProcess::current()->io_task_runner()));
 
   chrome_trace_event_agent_ =
-      base::MakeUnique<tracing::ChromeTraceEventAgent>(GetConnector());
+      std::make_unique<tracing::ChromeTraceEventAgent>(GetConnector());
 }
 
 ChildThreadImpl::~ChildThreadImpl() {
@@ -707,7 +707,7 @@
     return nullptr;
   }
 
-  return base::MakeUnique<base::SharedMemory>(shared_buf, false);
+  return std::make_unique<base::SharedMemory>(shared_buf, false);
 }
 
 #if defined(OS_LINUX)
diff --git a/content/common/common_param_traits_unittest.cc b/content/common/common_param_traits_unittest.cc
index ea3ac26a..984c00cf 100644
--- a/content/common/common_param_traits_unittest.cc
+++ b/content/common/common_param_traits_unittest.cc
@@ -91,7 +91,7 @@
   base::ListValue input;
   input.AppendDouble(42.42);
   input.AppendString("forty");
-  input.Append(base::MakeUnique<base::Value>());
+  input.Append(std::make_unique<base::Value>());
 
   IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
   IPC::WriteParam(&msg, input);
@@ -111,15 +111,15 @@
 
 TEST(IPCMessageTest, DictionaryValue) {
   base::DictionaryValue input;
-  input.Set("null", base::MakeUnique<base::Value>());
+  input.Set("null", std::make_unique<base::Value>());
   input.SetBoolean("bool", true);
   input.SetInteger("int", 42);
 
-  auto subdict = base::MakeUnique<base::DictionaryValue>();
+  auto subdict = std::make_unique<base::DictionaryValue>();
   subdict->SetString("str", "forty two");
   subdict->SetBoolean("bool", false);
 
-  auto sublist = base::MakeUnique<base::ListValue>();
+  auto sublist = std::make_unique<base::ListValue>();
   sublist->AppendDouble(42.42);
   sublist->AppendString("forty");
   sublist->AppendString("two");
diff --git a/content/common/font_list_mac.mm b/content/common/font_list_mac.mm
index 2648a32..67d3d85 100644
--- a/content/common/font_list_mac.mm
+++ b/content/common/font_list_mac.mm
@@ -34,7 +34,7 @@
 
   for (NSString* family_name in sortedFonts) {
     NSString* localized_family_name = fonts_dict[family_name];
-    auto font_item = base::MakeUnique<base::ListValue>();
+    auto font_item = std::make_unique<base::ListValue>();
     font_item->AppendString(base::SysNSStringToUTF16(family_name));
     font_item->AppendString(base::SysNSStringToUTF16(localized_family_name));
     font_list->Append(std::move(font_item));
diff --git a/content/common/font_list_win.cc b/content/common/font_list_win.cc
index cd1b8aa..07ecc12 100644
--- a/content/common/font_list_win.cc
+++ b/content/common/font_list_win.cc
@@ -47,7 +47,7 @@
   std::unique_ptr<base::ListValue> font_list(new base::ListValue);
   std::set<base::string16>::iterator iter;
   for (iter = font_names.begin(); iter != font_names.end(); ++iter) {
-    auto font_item = base::MakeUnique<base::ListValue>();
+    auto font_item = std::make_unique<base::ListValue>();
     font_item->AppendString(*iter);
     font_item->AppendString(*iter);
     font_list->Append(std::move(font_item));
diff --git a/content/common/input/input_param_traits_unittest.cc b/content/common/input/input_param_traits_unittest.cc
index 4bc88c5f..7235849 100644
--- a/content/common/input/input_param_traits_unittest.cc
+++ b/content/common/input/input_param_traits_unittest.cc
@@ -85,35 +85,35 @@
                                     blink::WebInputEvent::kNoModifiers,
                                     blink::WebInputEvent::kTimeStampForTesting);
   key_event.native_key_code = 5;
-  events.push_back(base::MakeUnique<InputEvent>(key_event, latency));
+  events.push_back(std::make_unique<InputEvent>(key_event, latency));
 
   blink::WebMouseWheelEvent wheel_event(
       blink::WebInputEvent::kMouseWheel, blink::WebInputEvent::kNoModifiers,
       blink::WebInputEvent::kTimeStampForTesting);
   wheel_event.delta_x = 10;
   latency.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 1, 1);
-  events.push_back(base::MakeUnique<InputEvent>(wheel_event, latency));
+  events.push_back(std::make_unique<InputEvent>(wheel_event, latency));
 
   blink::WebMouseEvent mouse_event(blink::WebInputEvent::kMouseDown,
                                    blink::WebInputEvent::kNoModifiers,
                                    blink::WebInputEvent::kTimeStampForTesting);
   mouse_event.SetPositionInWidget(10, 0);
   latency.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 2, 2);
-  events.push_back(base::MakeUnique<InputEvent>(mouse_event, latency));
+  events.push_back(std::make_unique<InputEvent>(mouse_event, latency));
 
   blink::WebGestureEvent gesture_event(
       blink::WebInputEvent::kGestureScrollBegin,
       blink::WebInputEvent::kNoModifiers,
       blink::WebInputEvent::kTimeStampForTesting);
   gesture_event.x = -1;
-  events.push_back(base::MakeUnique<InputEvent>(gesture_event, latency));
+  events.push_back(std::make_unique<InputEvent>(gesture_event, latency));
 
   blink::WebTouchEvent touch_event(blink::WebInputEvent::kTouchStart,
                                    blink::WebInputEvent::kNoModifiers,
                                    blink::WebInputEvent::kTimeStampForTesting);
   touch_event.touches_length = 1;
   touch_event.touches[0].radius_x = 1;
-  events.push_back(base::MakeUnique<InputEvent>(touch_event, latency));
+  events.push_back(std::make_unique<InputEvent>(touch_event, latency));
 
   Verify(events);
 }
diff --git a/content/common/mac/font_loader.mm b/content/common/mac/font_loader.mm
index 6c866d9..559243c4 100644
--- a/content/common/mac/font_loader.mm
+++ b/content/common/mac/font_loader.mm
@@ -70,7 +70,7 @@
     return nullptr;
   }
 
-  auto result = base::MakeUnique<FontLoader::ResultInternal>();
+  auto result = std::make_unique<FontLoader::ResultInternal>();
 
   int32_t font_file_size_32 = static_cast<int32_t>(font_file_size_64);
   if (!result->font_data.CreateAndMapAnonymous(font_file_size_32)) {
diff --git a/content/common/net/url_fetcher.cc b/content/common/net/url_fetcher.cc
index 6ac2bf7..ab75940d 100644
--- a/content/common/net/url_fetcher.cc
+++ b/content/common/net/url_fetcher.cc
@@ -16,7 +16,7 @@
 std::unique_ptr<base::SupportsUserData::Data> CreateURLRequestUserData(
     int render_process_id,
     int render_frame_id) {
-  return base::MakeUnique<URLRequestUserData>(render_process_id,
+  return std::make_unique<URLRequestUserData>(render_process_id,
                                               render_frame_id);
 }
 
diff --git a/content/common/service_manager/service_manager_connection_impl.cc b/content/common/service_manager/service_manager_connection_impl.cc
index b01fe85..1c72b82 100644
--- a/content/common/service_manager/service_manager_connection_impl.cc
+++ b/content/common/service_manager/service_manager_connection_impl.cc
@@ -168,9 +168,8 @@
     // Should bind |io_thread_checker_| to the context's thread.
     DCHECK(io_thread_checker_.CalledOnValidThread());
     service_context_.reset(new service_manager::ServiceContext(
-        base::MakeUnique<service_manager::ForwardingService>(this),
-        std::move(pending_service_request_),
-        std::move(io_thread_connector_),
+        std::make_unique<service_manager::ForwardingService>(this),
+        std::move(pending_service_request_), std::move(io_thread_connector_),
         std::move(pending_connector_request_)));
 
     // MessageLoopObserver owns itself.
@@ -366,8 +365,8 @@
     scoped_refptr<base::SequencedTaskRunner> io_task_runner) {
   if (service_manager_connection_factory)
     return service_manager_connection_factory->Run();
-  return base::MakeUnique<ServiceManagerConnectionImpl>(
-      std::move(request), io_task_runner);
+  return std::make_unique<ServiceManagerConnectionImpl>(std::move(request),
+                                                        io_task_runner);
 }
 
 ServiceManagerConnection::~ServiceManagerConnection() {}
diff --git a/content/common/service_manager/service_manager_connection_impl_unittest.cc b/content/common/service_manager/service_manager_connection_impl_unittest.cc
index d8c6ba6..e1b238c2 100644
--- a/content/common/service_manager/service_manager_connection_impl_unittest.cc
+++ b/content/common/service_manager/service_manager_connection_impl_unittest.cc
@@ -21,7 +21,7 @@
 std::unique_ptr<service_manager::Service> LaunchService(
     base::WaitableEvent* event) {
   event->Signal();
-  return base::MakeUnique<service_manager::Service>();
+  return std::make_unique<service_manager::Service>();
 }
 
 }  // namespace
diff --git a/content/common/throttling_url_loader.cc b/content/common/throttling_url_loader.cc
index 8d68781..57720fa 100644
--- a/content/common/throttling_url_loader.cc
+++ b/content/common/throttling_url_loader.cc
@@ -187,7 +187,7 @@
     if (!loader_cancelled_) {
       DCHECK_EQ(DEFERRED_START, deferred_stage_);
       priority_info_ =
-          base::MakeUnique<PriorityInfo>(priority, intra_priority_value);
+          std::make_unique<PriorityInfo>(priority, intra_priority_value);
     }
     return;
   }
@@ -241,7 +241,7 @@
     if (deferred) {
       deferred_stage_ = DEFERRED_START;
       start_info_ =
-          base::MakeUnique<StartInfo>(factory, routing_id, request_id, options,
+          std::make_unique<StartInfo>(factory, routing_id, request_id, options,
                                       std::move(start_loader_callback),
                                       url_request, std::move(task_runner));
       return;
@@ -334,7 +334,7 @@
 
     if (deferred) {
       deferred_stage_ = DEFERRED_RESPONSE;
-      response_info_ = base::MakeUnique<ResponseInfo>(
+      response_info_ = std::make_unique<ResponseInfo>(
           response_head, ssl_info, std::move(downloaded_file));
       client_binding_.PauseIncomingMethodCallProcessing();
       return;
@@ -365,7 +365,7 @@
     if (deferred) {
       deferred_stage_ = DEFERRED_REDIRECT;
       redirect_info_ =
-          base::MakeUnique<RedirectInfo>(redirect_info, response_head);
+          std::make_unique<RedirectInfo>(redirect_info, response_head);
       client_binding_.PauseIncomingMethodCallProcessing();
       return;
     }
@@ -512,7 +512,7 @@
     ThrottlingURLLoader* loader,
     std::unique_ptr<URLLoaderThrottle> the_throttle)
     : delegate(
-          base::MakeUnique<ForwardingThrottleDelegate>(loader,
+          std::make_unique<ForwardingThrottleDelegate>(loader,
                                                        the_throttle.get())),
       throttle(std::move(the_throttle)) {
   throttle->set_delegate(delegate.get());
diff --git a/content/common/throttling_url_loader_unittest.cc b/content/common/throttling_url_loader_unittest.cc
index 8015f89..b5ceb54 100644
--- a/content/common/throttling_url_loader_unittest.cc
+++ b/content/common/throttling_url_loader_unittest.cc
@@ -259,7 +259,7 @@
  protected:
   // testing::Test implementation.
   void SetUp() override {
-    auto throttle = base::MakeUnique<TestURLLoaderThrottle>(
+    auto throttle = std::make_unique<TestURLLoaderThrottle>(
         base::Bind(&ThrottlingURLLoaderTest::ResetThrottleRawPointer,
                    weak_factory_.GetWeakPtr()));
 
@@ -701,7 +701,7 @@
 }
 
 TEST_F(ThrottlingURLLoaderTest, MultipleThrottlesBasicSupport) {
-  throttles_.emplace_back(base::MakeUnique<TestURLLoaderThrottle>());
+  throttles_.emplace_back(std::make_unique<TestURLLoaderThrottle>());
   auto* throttle2 =
       static_cast<TestURLLoaderThrottle*>(throttles_.back().get());
   CreateLoaderAndStart();
@@ -712,7 +712,7 @@
 }
 
 TEST_F(ThrottlingURLLoaderTest, BlockWithOneOfMultipleThrottles) {
-  throttles_.emplace_back(base::MakeUnique<TestURLLoaderThrottle>());
+  throttles_.emplace_back(std::make_unique<TestURLLoaderThrottle>());
   auto* throttle2 =
       static_cast<TestURLLoaderThrottle*>(throttles_.back().get());
   throttle2->set_will_start_request_callback(
@@ -771,7 +771,7 @@
 }
 
 TEST_F(ThrottlingURLLoaderTest, BlockWithMultipleThrottles) {
-  throttles_.emplace_back(base::MakeUnique<TestURLLoaderThrottle>());
+  throttles_.emplace_back(std::make_unique<TestURLLoaderThrottle>());
   auto* throttle2 =
       static_cast<TestURLLoaderThrottle*>(throttles_.back().get());
 
@@ -844,7 +844,7 @@
 }
 
 TEST_F(ThrottlingURLLoaderTest, PauseResumeReadingBodyFromNet) {
-  throttles_.emplace_back(base::MakeUnique<TestURLLoaderThrottle>());
+  throttles_.emplace_back(std::make_unique<TestURLLoaderThrottle>());
   auto* throttle2 =
       static_cast<TestURLLoaderThrottle*>(throttles_.back().get());
 
diff --git a/content/gpu/gpu_child_thread.cc b/content/gpu/gpu_child_thread.cc
index 56659663..976db80 100644
--- a/content/gpu/gpu_child_thread.cc
+++ b/content/gpu/gpu_child_thread.cc
@@ -103,7 +103,7 @@
         registry_->BindInterface(interface_name, std::move(*interface_pipe));
       } else {
         std::unique_ptr<PendingRequest> request =
-            base::MakeUnique<PendingRequest>();
+            std::make_unique<PendingRequest>();
         request->interface_name = interface_name;
         request->interface_pipe = std::move(*interface_pipe);
         pending_requests_.push_back(std::move(request));
@@ -191,7 +191,7 @@
   associated_registry->AddInterface(base::Bind(
       &GpuChildThread::CreateVizMainService, base::Unretained(this)));
 
-  auto registry = base::MakeUnique<service_manager::BinderRegistry>();
+  auto registry = std::make_unique<service_manager::BinderRegistry>();
   registry->AddInterface(base::Bind(&GpuChildThread::BindServiceFactoryRequest,
                                     weak_factory_.GetWeakPtr()),
                          base::ThreadTaskRunnerHandle::Get());
@@ -199,7 +199,7 @@
     GetContentClient()->gpu()->InitializeRegistry(registry.get());
 
   std::unique_ptr<QueueingConnectionFilter> filter =
-      base::MakeUnique<QueueingConnectionFilter>(GetIOTaskRunner(),
+      std::make_unique<QueueingConnectionFilter>(GetIOTaskRunner(),
                                                  std::move(registry));
   release_pending_requests_closure_ = filter->GetReleaseCallback();
   GetServiceManagerConnection()->AddConnectionFilter(std::move(filter));
@@ -294,7 +294,7 @@
         FROM_HERE, base::BindOnce(bind_connector_request, std::move(request)));
   }
 
-  return base::MakeUnique<media::MojoAndroidOverlay>(
+  return std::make_unique<media::MojoAndroidOverlay>(
       std::move(overlay_provider), std::move(config), routing_token,
       std::move(context_ref));
 }
diff --git a/content/gpu/gpu_sandbox_hook_linux.cc b/content/gpu/gpu_sandbox_hook_linux.cc
index 5809567..3b2559ae 100644
--- a/content/gpu/gpu_sandbox_hook_linux.cc
+++ b/content/gpu/gpu_sandbox_hook_linux.cc
@@ -26,6 +26,7 @@
 #include "services/service_manager/sandbox/linux/bpf_cros_amd_gpu_policy_linux.h"
 #include "services/service_manager/sandbox/linux/bpf_cros_arm_gpu_policy_linux.h"
 #include "services/service_manager/sandbox/linux/bpf_gpu_policy_linux.h"
+#include "services/service_manager/sandbox/linux/sandbox_linux.h"
 
 using sandbox::bpf_dsl::Policy;
 using sandbox::syscall_broker::BrokerFilePermission;
@@ -259,7 +260,7 @@
   DCHECK(!chromeos_arm_gpu);
 
   // Create a new broker process with no extra files in whitelist.
-  static_cast<service_manager::GpuProcessPolicy*>(policy)->set_broker_process(
+  service_manager::SandboxLinux::GetInstance()->set_broker_process(
       InitGpuBrokerProcess(
           []() -> std::unique_ptr<Policy> {
             return std::make_unique<service_manager::GpuBrokerProcessPolicy>();
@@ -305,7 +306,7 @@
   // Add ARM-specific files to whitelist in the broker.
   std::vector<BrokerFilePermission> permissions;
   AddArmGpuWhitelist(&permissions);
-  static_cast<service_manager::GpuProcessPolicy*>(policy)->set_broker_process(
+  service_manager::SandboxLinux::GetInstance()->set_broker_process(
       InitGpuBrokerProcess(
           []() -> std::unique_ptr<Policy> {
             return std::make_unique<
@@ -335,7 +336,7 @@
   std::vector<BrokerFilePermission> permissions;
   AddAmdGpuWhitelist(&permissions);
 
-  static_cast<service_manager::GpuProcessPolicy*>(policy)->set_broker_process(
+  service_manager::SandboxLinux::GetInstance()->set_broker_process(
       InitGpuBrokerProcess(
           []() -> std::unique_ptr<Policy> {
             return std::make_unique<
diff --git a/content/network/cookie_manager_impl.cc b/content/network/cookie_manager_impl.cc
index 01ad3dc..9584e5d 100644
--- a/content/network/cookie_manager_impl.cc
+++ b/content/network/cookie_manager_impl.cc
@@ -148,7 +148,7 @@
     bool modify_http_only,
     SetCanonicalCookieCallback callback) {
   cookie_store_->SetCanonicalCookieAsync(
-      base::MakeUnique<net::CanonicalCookie>(cookie), secure_source,
+      std::make_unique<net::CanonicalCookie>(cookie), secure_source,
       modify_http_only, std::move(callback));
 }
 
@@ -167,7 +167,7 @@
   cookie_store_->DeleteAllCreatedBetweenWithPredicateAsync(
       start_time, end_time,
       base::Bind(&PredicateWrapper::Predicate,
-                 base::MakeUnique<PredicateWrapper>(std::move(filter))),
+                 std::make_unique<PredicateWrapper>(std::move(filter))),
       std::move(callback));
 }
 
@@ -176,7 +176,7 @@
     const std::string& name,
     network::mojom::CookieChangeNotificationPtr notification_pointer) {
   std::unique_ptr<NotificationRegistration> notification_registration(
-      base::MakeUnique<NotificationRegistration>());
+      std::make_unique<NotificationRegistration>());
   notification_registration->notification_pointer =
       std::move(notification_pointer);
 
diff --git a/content/network/cookie_manager_impl_unittest.cc b/content/network/cookie_manager_impl_unittest.cc
index 574beeaf..0b6898a 100644
--- a/content/network/cookie_manager_impl_unittest.cc
+++ b/content/network/cookie_manager_impl_unittest.cc
@@ -139,10 +139,10 @@
   CookieManagerImplTest()
       : connection_error_seen_(false),
         cookie_monster_(nullptr, nullptr),
-        cookie_service_(base::MakeUnique<CookieManagerImpl>(&cookie_monster_)) {
+        cookie_service_(std::make_unique<CookieManagerImpl>(&cookie_monster_)) {
     cookie_service_->AddRequest(mojo::MakeRequest(&cookie_service_ptr_));
     service_wrapper_ =
-        base::MakeUnique<SynchronousCookieManager>(cookie_service_ptr_.get());
+        std::make_unique<SynchronousCookieManager>(cookie_service_ptr_.get());
     cookie_service_ptr_.set_connection_error_handler(base::BindOnce(
         &CookieManagerImplTest::OnConnectionError, base::Unretained(this)));
   }
@@ -157,7 +157,7 @@
                           bool can_modify_httponly) {
     net::ResultSavingCookieCallback<bool> callback;
     cookie_monster_.SetCanonicalCookieAsync(
-        base::MakeUnique<net::CanonicalCookie>(cookie), secure_source,
+        std::make_unique<net::CanonicalCookie>(cookie), secure_source,
         can_modify_httponly,
         base::BindOnce(&net::ResultSavingCookieCallback<bool>::Run,
                        base::Unretained(&callback)));
@@ -1433,7 +1433,7 @@
   network::mojom::CookieChangeNotificationRequest request1(
       mojo::MakeRequest(&ptr1));
   std::unique_ptr<CookieChangeNotificationImpl> notification_impl1(
-      base::MakeUnique<CookieChangeNotificationImpl>(std::move(request1)));
+      std::make_unique<CookieChangeNotificationImpl>(std::move(request1)));
   cookie_service_client()->RequestNotification(
       notification_url, notification_name, std::move(ptr1));
 
@@ -1441,7 +1441,7 @@
   network::mojom::CookieChangeNotificationRequest request2(
       mojo::MakeRequest(&ptr2));
   std::unique_ptr<CookieChangeNotificationImpl> notification_impl2(
-      base::MakeUnique<CookieChangeNotificationImpl>(std::move(request2)));
+      std::make_unique<CookieChangeNotificationImpl>(std::move(request2)));
   cookie_service_client()->RequestNotification(
       notification_url, notification_name, std::move(ptr2));
 
diff --git a/content/network/network_context.cc b/content/network/network_context.cc
index b0ddf08..e485aba3 100644
--- a/content/network/network_context.cc
+++ b/content/network/network_context.cc
@@ -55,7 +55,7 @@
   owned_url_request_context_ = MakeURLRequestContext(params_.get());
   url_request_context_ = owned_url_request_context_.get();
   cookie_manager_ =
-      base::MakeUnique<CookieManagerImpl>(url_request_context_->cookie_store());
+      std::make_unique<CookieManagerImpl>(url_request_context_->cookie_store());
   network_service_->RegisterNetworkContext(this);
   binding_.set_connection_error_handler(base::BindOnce(
       &NetworkContext::OnConnectionError, base::Unretained(this)));
@@ -75,21 +75,21 @@
   if (params_ && params_->http_cache_path) {
     // Only sample 0.1% of NetworkContexts that get created.
     if (base::RandUint64() % 1000 == 0)
-      disk_checker_ = base::MakeUnique<DiskChecker>(*params_->http_cache_path);
+      disk_checker_ = std::make_unique<DiskChecker>(*params_->http_cache_path);
   }
   network_service_->RegisterNetworkContext(this);
   ApplyContextParamsToBuilder(builder.get(), params_.get());
   owned_url_request_context_ = builder->Build();
   url_request_context_ = owned_url_request_context_.get();
   cookie_manager_ =
-      base::MakeUnique<CookieManagerImpl>(url_request_context_->cookie_store());
+      std::make_unique<CookieManagerImpl>(url_request_context_->cookie_store());
 }
 
 NetworkContext::NetworkContext(mojom::NetworkContextRequest request,
                                net::URLRequestContext* url_request_context)
     : network_service_(nullptr),
       binding_(this, std::move(request)),
-      cookie_manager_(base::MakeUnique<CookieManagerImpl>(
+      cookie_manager_(std::make_unique<CookieManagerImpl>(
           url_request_context->cookie_store())) {
   url_request_context_ = url_request_context;
 }
@@ -125,7 +125,7 @@
     mojom::URLLoaderFactoryRequest request,
     uint32_t process_id) {
   loader_factory_bindings_.AddBinding(
-      base::MakeUnique<NetworkServiceURLLoaderFactoryImpl>(this, process_id),
+      std::make_unique<NetworkServiceURLLoaderFactoryImpl>(this, process_id),
       std::move(request));
 }
 
@@ -146,7 +146,7 @@
   // TODO(crbug.com/729800): RestrictedCookieManagerImpl should own its bindings
   //     and NetworkContext should own the RestrictedCookieManagerImpl
   //     instances.
-  mojo::MakeStrongBinding(base::MakeUnique<RestrictedCookieManagerImpl>(
+  mojo::MakeStrongBinding(std::make_unique<RestrictedCookieManagerImpl>(
                               url_request_context_->cookie_store(),
                               render_process_id, render_frame_id),
                           std::move(request));
@@ -224,7 +224,7 @@
     config.proxy_rules().ParseFromString(
         command_line->GetSwitchValueASCII(switches::kProxyServer));
     std::unique_ptr<net::ProxyConfigService> fixed_config_service =
-        base::MakeUnique<net::ProxyConfigServiceFixed>(config);
+        std::make_unique<net::ProxyConfigServiceFixed>(config);
     builder.set_proxy_config_service(std::move(fixed_config_service));
   } else {
     builder.set_proxy_service(net::ProxyService::CreateDirect());
diff --git a/content/network/network_context_unittest.cc b/content/network/network_context_unittest.cc
index a8c15c5..d69e1d05 100644
--- a/content/network/network_context_unittest.cc
+++ b/content/network/network_context_unittest.cc
@@ -59,7 +59,7 @@
 
   std::unique_ptr<NetworkContext> CreateContextWithParams(
       mojom::NetworkContextParamsPtr context_params) {
-    return base::MakeUnique<NetworkContext>(
+    return std::make_unique<NetworkContext>(
         network_service_.get(), mojo::MakeRequest(&network_context_ptr_),
         std::move(context_params));
   }
diff --git a/content/network/network_service_impl.cc b/content/network/network_service_impl.cc
index 97f8053..4697766 100644
--- a/content/network/network_service_impl.cc
+++ b/content/network/network_service_impl.cc
@@ -27,7 +27,7 @@
 namespace content {
 
 std::unique_ptr<NetworkService> NetworkService::Create(net::NetLog* net_log) {
-  return base::MakeUnique<NetworkServiceImpl>(nullptr, net_log);
+  return std::make_unique<NetworkServiceImpl>(nullptr, net_log);
 }
 
 class NetworkServiceImpl::MojoNetLog : public net::NetLog {
@@ -131,7 +131,7 @@
     std::unique_ptr<net::URLRequestContextBuilder> builder,
     net::URLRequestContext** url_request_context) {
   std::unique_ptr<NetworkContext> network_context =
-      base::MakeUnique<NetworkContext>(this, std::move(request),
+      std::make_unique<NetworkContext>(this, std::move(request),
                                        std::move(params), std::move(builder));
   *url_request_context = network_context->url_request_context();
   return network_context;
@@ -139,7 +139,7 @@
 
 std::unique_ptr<NetworkServiceImpl> NetworkServiceImpl::CreateForTesting() {
   return base::WrapUnique(new NetworkServiceImpl(
-      base::MakeUnique<service_manager::BinderRegistry>()));
+      std::make_unique<service_manager::BinderRegistry>()));
 }
 
 void NetworkServiceImpl::RegisterNetworkContext(
diff --git a/content/network/network_service_unittest.cc b/content/network/network_service_unittest.cc
index 32149bc..fd736fa5 100644
--- a/content/network/network_service_unittest.cc
+++ b/content/network/network_service_unittest.cc
@@ -155,7 +155,7 @@
 
  private:
   std::unique_ptr<service_manager::Service> CreateService() override {
-    return base::MakeUnique<ServiceTestClient>(this);
+    return std::make_unique<ServiceTestClient>(this);
   }
 
   void SetUp() override {
diff --git a/content/network/restricted_cookie_manager_impl.cc b/content/network/restricted_cookie_manager_impl.cc
index ee9ed6d..091367b0 100644
--- a/content/network/restricted_cookie_manager_impl.cc
+++ b/content/network/restricted_cookie_manager_impl.cc
@@ -102,7 +102,7 @@
   //               set these fields.
   net::CookieSameSite cookie_same_site_mode = net::CookieSameSite::STRICT_MODE;
   net::CookiePriority cookie_priority = net::COOKIE_PRIORITY_DEFAULT;
-  auto sanitized_cookie = base::MakeUnique<net::CanonicalCookie>(
+  auto sanitized_cookie = std::make_unique<net::CanonicalCookie>(
       cookie.Name(), cookie.Value(), cookie.Domain(), cookie.Path(), now,
       cookie.ExpiryDate(), now, cookie.IsSecure(), cookie.IsHttpOnly(),
       cookie_same_site_mode, cookie_priority);
diff --git a/content/network/restricted_cookie_manager_impl_unittest.cc b/content/network/restricted_cookie_manager_impl_unittest.cc
index 411d394..08b1ca5 100644
--- a/content/network/restricted_cookie_manager_impl_unittest.cc
+++ b/content/network/restricted_cookie_manager_impl_unittest.cc
@@ -81,12 +81,12 @@
   RestrictedCookieManagerImplTest()
       : cookie_monster_(nullptr, nullptr),
         service_(
-            base::MakeUnique<RestrictedCookieManagerImpl>(&cookie_monster_,
+            std::make_unique<RestrictedCookieManagerImpl>(&cookie_monster_,
                                                           MSG_ROUTING_NONE,
                                                           MSG_ROUTING_NONE)),
         binding_(service_.get(), mojo::MakeRequest(&service_ptr_)) {
     sync_service_ =
-        base::MakeUnique<RestrictedCookieManagerSync>(service_ptr_.get());
+        std::make_unique<RestrictedCookieManagerSync>(service_ptr_.get());
   }
   ~RestrictedCookieManagerImplTest() override {}
 
@@ -105,7 +105,7 @@
                           bool can_modify_httponly) {
     net::ResultSavingCookieCallback<bool> callback;
     cookie_monster_.SetCanonicalCookieAsync(
-        base::MakeUnique<net::CanonicalCookie>(cookie), secure_source,
+        std::make_unique<net::CanonicalCookie>(cookie), secure_source,
         can_modify_httponly,
         base::BindOnce(&net::ResultSavingCookieCallback<bool>::Run,
                        base::Unretained(&callback)));
diff --git a/content/network/url_loader_impl.cc b/content/network/url_loader_impl.cc
index 22fc24f..28fca4a 100644
--- a/content/network/url_loader_impl.cc
+++ b/content/network/url_loader_impl.cc
@@ -226,10 +226,10 @@
     switch (element.type()) {
       case ResourceRequestBody::Element::TYPE_BYTES:
         element_readers.push_back(
-            base::MakeUnique<BytesElementReader>(body, element));
+            std::make_unique<BytesElementReader>(body, element));
         break;
       case ResourceRequestBody::Element::TYPE_FILE:
-        element_readers.push_back(base::MakeUnique<FileElementReader>(
+        element_readers.push_back(std::make_unique<FileElementReader>(
             body, file_task_runner, element));
         break;
       case ResourceRequestBody::Element::TYPE_FILE_FILESYSTEM:
@@ -256,7 +256,7 @@
     }
   }
 
-  return base::MakeUnique<net::ElementsUploadDataStream>(
+  return std::make_unique<net::ElementsUploadDataStream>(
       std::move(element_readers), body->identifier());
 }
 
@@ -305,7 +305,7 @@
         CreateUploadDataStream(request.request_body.get(), task_runner.get()));
 
     if (request.enable_upload_progress) {
-      upload_progress_tracker_ = base::MakeUnique<UploadProgressTracker>(
+      upload_progress_tracker_ = std::make_unique<UploadProgressTracker>(
           FROM_HERE,
           base::BindRepeating(&URLLoaderImpl::SendUploadProgress,
                               base::Unretained(this)),
diff --git a/content/ppapi_plugin/ppapi_thread.cc b/content/ppapi_plugin/ppapi_thread.cc
index 37adea0..b05eed02 100644
--- a/content/ppapi_plugin/ppapi_thread.cc
+++ b/content/ppapi_plugin/ppapi_thread.cc
@@ -138,7 +138,7 @@
       ChildThread::Get()->GetConnector()->BindInterface(
           mojom::kBrowserServiceName, mojo::MakeRequest(&manager_ptr));
     }
-    discardable_shared_memory_manager_ = base::MakeUnique<
+    discardable_shared_memory_manager_ = std::make_unique<
         discardable_memory::ClientDiscardableSharedMemoryManager>(
         std::move(manager_ptr), GetIOTaskRunner());
     base::DiscardableMemoryAllocator::SetInstance(
diff --git a/content/public/browser/provision_fetcher_impl.cc b/content/public/browser/provision_fetcher_impl.cc
index edb2e5c0..2cbef6da 100644
--- a/content/public/browser/provision_fetcher_impl.cc
+++ b/content/public/browser/provision_fetcher_impl.cc
@@ -16,7 +16,7 @@
     net::URLRequestContextGetter* context_getter,
     media::mojom::ProvisionFetcherRequest request) {
   DCHECK(context_getter);
-  mojo::MakeStrongBinding(base::MakeUnique<ProvisionFetcherImpl>(
+  mojo::MakeStrongBinding(std::make_unique<ProvisionFetcherImpl>(
                               CreateProvisionFetcher(context_getter)),
                           std::move(request));
 }
diff --git a/content/public/browser/web_contents_binding_set.h b/content/public/browser/web_contents_binding_set.h
index 0b56e88..fe92574 100644
--- a/content/public/browser/web_contents_binding_set.h
+++ b/content/public/browser/web_contents_binding_set.h
@@ -116,7 +116,7 @@
       : WebContentsBindingSet(
             web_contents,
             Interface::Name_,
-            base::MakeUnique<FrameInterfaceBinder>(this, web_contents, impl)) {}
+            std::make_unique<FrameInterfaceBinder>(this, web_contents, impl)) {}
   ~WebContentsFrameBindingSet() {}
 
   // Returns the RenderFrameHost currently targeted by a message dispatch to
diff --git a/content/public/common/simple_url_loader.cc b/content/public/common/simple_url_loader.cc
index 04a4200..bf906cc 100644
--- a/content/public/common/simple_url_loader.cc
+++ b/content/public/common/simple_url_loader.cc
@@ -393,7 +393,7 @@
     DCHECK(!body_);
     DCHECK(!body_reader_);
 
-    body_ = base::MakeUnique<std::string>();
+    body_ = std::make_unique<std::string>();
     body_reader_ = std::make_unique<BodyReader>(this, max_body_size_);
     body_reader_->Start(std::move(body_data_pipe));
   }
@@ -772,7 +772,7 @@
     BodyAsStringCallback body_as_string_callback,
     size_t max_body_size) {
   DCHECK_LE(max_body_size, kMaxBoundedStringDownloadSize);
-  body_handler_ = base::MakeUnique<SaveToStringBodyHandler>(
+  body_handler_ = std::make_unique<SaveToStringBodyHandler>(
       this, std::move(body_as_string_callback), max_body_size);
   Start(resource_request, url_loader_factory, annotation_tag);
 }
@@ -782,7 +782,7 @@
     mojom::URLLoaderFactory* url_loader_factory,
     const net::NetworkTrafficAnnotationTag& annotation_tag,
     BodyAsStringCallback body_as_string_callback) {
-  body_handler_ = base::MakeUnique<SaveToStringBodyHandler>(
+  body_handler_ = std::make_unique<SaveToStringBodyHandler>(
       this, std::move(body_as_string_callback),
       // int64_t because ResourceRequestCompletionStatus::decoded_body_length is
       // an int64_t, not a size_t.
@@ -980,7 +980,7 @@
   }
 
   request_state_->response_info =
-      base::MakeUnique<ResourceResponseHead>(response_head);
+      std::make_unique<ResourceResponseHead>(response_head);
   if (!allow_http_error_results_ && response_code / 100 != 2)
     FinishWithResult(net::ERR_FAILED);
 }
@@ -1125,7 +1125,7 @@
 }  // namespace
 
 std::unique_ptr<SimpleURLLoader> SimpleURLLoader::Create() {
-  return base::MakeUnique<SimpleURLLoaderImpl>();
+  return std::make_unique<SimpleURLLoaderImpl>();
 }
 
 SimpleURLLoader::~SimpleURLLoader() {}
diff --git a/content/public/common/simple_url_loader_unittest.cc b/content/public/common/simple_url_loader_unittest.cc
index c558672..35b44bb 100644
--- a/content/public/common/simple_url_loader_unittest.cc
+++ b/content/public/common/simple_url_loader_unittest.cc
@@ -308,7 +308,7 @@
     return nullptr;
 
   std::unique_ptr<net::test_server::BasicHttpResponse> response =
-      base::MakeUnique<net::test_server::BasicHttpResponse>();
+      std::make_unique<net::test_server::BasicHttpResponse>();
 
   uint32_t length;
   if (!base::StringToUint(request.GetURL().query(), &length)) {
@@ -328,7 +328,7 @@
     return nullptr;
 
   std::unique_ptr<net::test_server::BasicHttpResponse> response =
-      base::MakeUnique<net::test_server::BasicHttpResponse>();
+      std::make_unique<net::test_server::BasicHttpResponse>();
   response->AddCustomHeader("Content-Encoding", "gzip");
   response->set_content("Not gzipped");
 
@@ -343,7 +343,7 @@
     return nullptr;
 
   std::unique_ptr<net::test_server::RawHttpResponse> response =
-      base::MakeUnique<net::test_server::RawHttpResponse>(
+      std::make_unique<net::test_server::RawHttpResponse>(
           base::StringPrintf("HTTP/1.1 200 OK\r\n"
                              "Content-Length: %" PRIuS "\r\n",
                              strlen(kTruncatedBody) + 4),
@@ -1017,7 +1017,7 @@
                                 traffic_annotation) override {
     ASSERT_FALSE(test_events_.empty());
     requested_urls_.push_back(url_request.url);
-    url_loaders_.push_back(base::MakeUnique<MockURLLoader>(
+    url_loaders_.push_back(std::make_unique<MockURLLoader>(
         scoped_task_environment_, std::move(url_loader_request),
         std::move(client), test_events_.front()));
     test_events_.pop_front();
diff --git a/content/public/network/ignore_errors_cert_verifier.cc b/content/public/network/ignore_errors_cert_verifier.cc
index 3e9ff44e..5cf6565 100644
--- a/content/public/network/ignore_errors_cert_verifier.cc
+++ b/content/public/network/ignore_errors_cert_verifier.cc
@@ -44,7 +44,7 @@
       base::SplitString(command_line.GetSwitchValueASCII(
                             switches::kIgnoreCertificateErrorsSPKIList),
                         ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
-  return base::MakeUnique<IgnoreErrorsCertVerifier>(
+  return std::make_unique<IgnoreErrorsCertVerifier>(
       std::move(verifier), IgnoreErrorsCertVerifier::MakeWhitelist(spki_list));
 }
 
diff --git a/content/public/network/ignore_errors_cert_verifier_unittest.cc b/content/public/network/ignore_errors_cert_verifier_unittest.cc
index 45368d8e..a7dc3bdb 100644
--- a/content/public/network/ignore_errors_cert_verifier_unittest.cc
+++ b/content/public/network/ignore_errors_cert_verifier_unittest.cc
@@ -165,7 +165,7 @@
     command_line.AppendSwitchASCII(switches::kIgnoreCertificateErrorsSPKIList,
                                    base::JoinString(MakeWhitelist(), ","));
 
-    auto mock_verifier = base::MakeUnique<MockCertVerifier>();
+    auto mock_verifier = std::make_unique<MockCertVerifier>();
     mock_verifier->set_default_result(ERR_CERT_INVALID);
     verifier_ = IgnoreErrorsCertVerifier::MaybeWrapCertVerifier(
         command_line, kTestUserDataDirSwitch, std::move(mock_verifier));
diff --git a/content/public/test/browser_test_base.cc b/content/public/test/browser_test_base.cc
index 865db5f0..67aed49 100644
--- a/content/public/test/browser_test_base.cc
+++ b/content/public/test/browser_test_base.cc
@@ -122,7 +122,7 @@
   // called more than once
   base::i18n::AllowMultipleInitializeCallsForTesting();
 
-  embedded_test_server_ = base::MakeUnique<net::EmbeddedTestServer>();
+  embedded_test_server_ = std::make_unique<net::EmbeddedTestServer>();
 
   // SequencedWorkerPool is enabled by default in tests (see
   // base::TestSuite::Initialize). In browser tests, disable it and expect it
@@ -232,7 +232,7 @@
   // not affect the results.
   command_line->AppendSwitchASCII(switches::kForceColorProfile, "srgb");
 
-  test_host_resolver_ = base::MakeUnique<TestHostResolver>();
+  test_host_resolver_ = std::make_unique<TestHostResolver>();
 
   ContentBrowserSanityChecker scoped_enable_sanity_checks;
 
@@ -260,7 +260,7 @@
   // FeatureList::SetInstance, which expects no instance to exist.
   base::FeatureList::ClearInstanceForTesting();
 
-  auto ui_task = base::MakeUnique<base::Closure>(base::Bind(
+  auto ui_task = std::make_unique<base::Closure>(base::Bind(
       &BrowserTestBase::ProxyRunTestOnMainThreadLoop, base::Unretained(this)));
 
 #if defined(OS_ANDROID)
@@ -343,7 +343,7 @@
 
 void BrowserTestBase::CreateTestServer(const base::FilePath& test_server_base) {
   CHECK(!spawned_test_server_.get());
-  spawned_test_server_ = base::MakeUnique<net::SpawnedTestServer>(
+  spawned_test_server_ = std::make_unique<net::SpawnedTestServer>(
       net::SpawnedTestServer::TYPE_HTTP, test_server_base);
   embedded_test_server()->AddDefaultHandlers(test_server_base);
 }
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc
index 48bf96b..63127b3 100644
--- a/content/public/test/browser_test_utils.cc
+++ b/content/public/test/browser_test_utils.cc
@@ -2260,7 +2260,7 @@
 MockOverscrollController* MockOverscrollController::Create(
     RenderWidgetHostView* rwhv) {
   std::unique_ptr<MockOverscrollControllerImpl> mock =
-      base::MakeUnique<MockOverscrollControllerImpl>();
+      std::make_unique<MockOverscrollControllerImpl>();
   MockOverscrollController* raw_mock = mock.get();
 
   RenderWidgetHostViewAura* rwhva =
diff --git a/content/public/test/cache_test_util.cc b/content/public/test/cache_test_util.cc
index 7e0a879..0fd45b71 100644
--- a/content/public/test/cache_test_util.cc
+++ b/content/public/test/cache_test_util.cc
@@ -17,7 +17,7 @@
   done_callback_ =
       base::Bind(&CacheTestUtil::DoneCallback, base::Unretained(this));
   // UI and IO thread synchronization.
-  waitable_event_ = base::MakeUnique<base::WaitableEvent>(
+  waitable_event_ = std::make_unique<base::WaitableEvent>(
       base::WaitableEvent::ResetPolicy::AUTOMATIC,
       base::WaitableEvent::InitialState::NOT_SIGNALED);
   BrowserThread::PostTask(
diff --git a/content/public/test/mock_render_process_host.cc b/content/public/test/mock_render_process_host.cc
index 6ae406e1..071cd230 100644
--- a/content/public/test/mock_render_process_host.cc
+++ b/content/public/test/mock_render_process_host.cc
@@ -362,7 +362,7 @@
     service_manager::Connector* connector =
         content::ServiceManagerConnection::GetForProcess()->GetConnector();
     process_resource_coordinator_ =
-        base::MakeUnique<resource_coordinator::ResourceCoordinatorInterface>(
+        std::make_unique<resource_coordinator::ResourceCoordinatorInterface>(
             connector, resource_coordinator::CoordinationUnitType::kProcess);
   }
   return process_resource_coordinator_.get();
@@ -461,7 +461,7 @@
 RenderProcessHost* MockRenderProcessHostFactory::CreateRenderProcessHost(
     BrowserContext* browser_context) const {
   processes_.push_back(
-      base::MakeUnique<MockRenderProcessHost>(browser_context));
+      std::make_unique<MockRenderProcessHost>(browser_context));
   processes_.back()->SetFactory(this);
   return processes_.back().get();
 }
diff --git a/content/public/test/navigation_simulator.cc b/content/public/test/navigation_simulator.cc
index c242952..15029b26f 100644
--- a/content/public/test/navigation_simulator.cc
+++ b/content/public/test/navigation_simulator.cc
@@ -709,7 +709,7 @@
 
   // Add a throttle to count NavigationThrottle calls count.
   handle->RegisterThrottleForTesting(
-      base::MakeUnique<NavigationThrottleCallbackRunner>(
+      std::make_unique<NavigationThrottleCallbackRunner>(
           handle,
           base::Bind(&NavigationSimulator::OnWillStartRequest,
                      weak_factory_.GetWeakPtr()),
diff --git a/content/public/test/network_service_test_helper.cc b/content/public/test/network_service_test_helper.cc
index 9f5e06d..8e74a8bdc 100644
--- a/content/public/test/network_service_test_helper.cc
+++ b/content/public/test/network_service_test_helper.cc
@@ -62,7 +62,7 @@
 void NetworkServiceTestHelper::BindNetworkServiceTestRequest(
     content::mojom::NetworkServiceTestRequest request) {
   if (!network_service_test_impl_)
-    network_service_test_impl_ = base::MakeUnique<NetworkServiceTestImpl>();
+    network_service_test_impl_ = std::make_unique<NetworkServiceTestImpl>();
   network_service_test_impl_->BindRequest(std::move(request));
 }
 
diff --git a/content/public/test/render_view_test.cc b/content/public/test/render_view_test.cc
index 37ad910..76fa56d 100644
--- a/content/public/test/render_view_test.cc
+++ b/content/public/test/render_view_test.cc
@@ -647,7 +647,7 @@
 }
 
 std::unique_ptr<ResizeParams> RenderViewTest::InitialSizeParams() {
-  auto initial_size = base::MakeUnique<ResizeParams>();
+  auto initial_size = std::make_unique<ResizeParams>();
   // Ensure the view has some size so tests involving scrolling bounds work.
   initial_size->new_size = gfx::Size(400, 300);
   initial_size->visible_viewport_size = gfx::Size(400, 300);
diff --git a/content/public/test/test_browser_thread.cc b/content/public/test/test_browser_thread.cc
index a90afc2..5d82d808 100644
--- a/content/public/test/test_browser_thread.cc
+++ b/content/public/test/test_browser_thread.cc
@@ -31,10 +31,10 @@
 
   void Init() override {
 #if defined(OS_WIN)
-    com_initializer_ = base::MakeUnique<base::win::ScopedCOMInitializer>();
+    com_initializer_ = std::make_unique<base::win::ScopedCOMInitializer>();
 #endif
 
-    notification_service_ = base::MakeUnique<NotificationServiceImpl>();
+    notification_service_ = std::make_unique<NotificationServiceImpl>();
     BrowserThreadImpl::Init();
   }
 
diff --git a/content/public/test/test_browser_thread_bundle.cc b/content/public/test/test_browser_thread_bundle.cc
index dbb903f..b981f6f 100644
--- a/content/public/test/test_browser_thread_bundle.cc
+++ b/content/public/test/test_browser_thread_bundle.cc
@@ -94,7 +94,7 @@
   // Similar to Chrome's UI thread, we need to initialize COM separately for
   // this thread as we don't call Start() for the UI TestBrowserThread; it's
   // already started!
-  com_initializer_ = base::MakeUnique<base::win::ScopedCOMInitializer>();
+  com_initializer_ = std::make_unique<base::win::ScopedCOMInitializer>();
   CHECK(com_initializer_->succeeded());
 #endif
 
@@ -104,7 +104,7 @@
   // ScopedTaskEnvironment.
   if (!base::MessageLoop::current()) {
     scoped_task_environment_ =
-        base::MakeUnique<base::test::ScopedTaskEnvironment>(
+        std::make_unique<base::test::ScopedTaskEnvironment>(
             options_ & IO_MAINLOOP
                 ? base::test::ScopedTaskEnvironment::MainThreadType::IO
                 : base::test::ScopedTaskEnvironment::MainThreadType::UI);
@@ -114,7 +114,7 @@
                                                  : base::MessageLoop::TYPE_UI));
 
   // Set the current thread as the UI thread.
-  ui_thread_ = base::MakeUnique<TestBrowserThread>(
+  ui_thread_ = std::make_unique<TestBrowserThread>(
       BrowserThread::UI, base::MessageLoop::current());
 
   if (!(options_ & DONT_CREATE_BROWSER_THREADS))
@@ -124,22 +124,22 @@
 void TestBrowserThreadBundle::CreateBrowserThreads() {
   CHECK(!threads_created_);
 
-  db_thread_ = base::MakeUnique<TestBrowserThread>(
+  db_thread_ = std::make_unique<TestBrowserThread>(
       BrowserThread::DB, base::MessageLoop::current());
-  file_thread_ = base::MakeUnique<TestBrowserThread>(
+  file_thread_ = std::make_unique<TestBrowserThread>(
       BrowserThread::FILE, base::MessageLoop::current());
-  file_user_blocking_thread_ = base::MakeUnique<TestBrowserThread>(
+  file_user_blocking_thread_ = std::make_unique<TestBrowserThread>(
       BrowserThread::FILE_USER_BLOCKING, base::MessageLoop::current());
-  process_launcher_thread_ = base::MakeUnique<TestBrowserThread>(
+  process_launcher_thread_ = std::make_unique<TestBrowserThread>(
       BrowserThread::PROCESS_LAUNCHER, base::MessageLoop::current());
-  cache_thread_ = base::MakeUnique<TestBrowserThread>(
+  cache_thread_ = std::make_unique<TestBrowserThread>(
       BrowserThread::CACHE, base::MessageLoop::current());
 
   if (options_ & REAL_IO_THREAD) {
-    io_thread_ = base::MakeUnique<TestBrowserThread>(BrowserThread::IO);
+    io_thread_ = std::make_unique<TestBrowserThread>(BrowserThread::IO);
     io_thread_->StartIOThread();
   } else {
-    io_thread_ = base::MakeUnique<TestBrowserThread>(
+    io_thread_ = std::make_unique<TestBrowserThread>(
         BrowserThread::IO, base::MessageLoop::current());
   }
 
diff --git a/content/public/test/test_download_request_handler.cc b/content/public/test/test_download_request_handler.cc
index e02033cfa..b61ee3c 100644
--- a/content/public/test/test_download_request_handler.cc
+++ b/content/public/test/test_download_request_handler.cc
@@ -218,7 +218,7 @@
     net::URLRequest* request,
     net::NetworkDelegate* delegate,
     base::WeakPtr<Interceptor> interceptor) {
-  return new PartialResponseJob(base::MakeUnique<Parameters>(parameters),
+  return new PartialResponseJob(std::make_unique<Parameters>(parameters),
                                 interceptor, request, delegate);
 }
 
diff --git a/content/public/test/test_navigation_observer.cc b/content/public/test/test_navigation_observer.cc
index 4fa08c8..efc6213e 100644
--- a/content/public/test/test_navigation_observer.cc
+++ b/content/public/test/test_navigation_observer.cc
@@ -117,7 +117,7 @@
 
 void TestNavigationObserver::RegisterAsObserver(WebContents* web_contents) {
   web_contents_observers_.insert(
-      base::MakeUnique<TestWebContentsObserver>(this, web_contents));
+      std::make_unique<TestWebContentsObserver>(this, web_contents));
 }
 
 TestNavigationObserver::TestNavigationObserver(
diff --git a/content/public/test/test_renderer_host.cc b/content/public/test/test_renderer_host.cc
index 116deb87..9ef79dc4 100644
--- a/content/public/test/test_renderer_host.cc
+++ b/content/public/test/test_renderer_host.cc
@@ -140,7 +140,7 @@
   // means tests must ensure any MessageLoop they make is created before
   // the RenderViewHostTestEnabler.
   if (!base::MessageLoop::current())
-    message_loop_ = base::MakeUnique<base::MessageLoop>();
+    message_loop_ = std::make_unique<base::MessageLoop>();
 #if !defined(OS_ANDROID)
   ImageTransportFactory::SetFactory(
       std::make_unique<NoTransportImageTransportFactory>());
diff --git a/content/renderer/android/synchronous_compositor_filter.cc b/content/renderer/android/synchronous_compositor_filter.cc
index d045e9c..79b9de0 100644
--- a/content/renderer/android/synchronous_compositor_filter.cc
+++ b/content/renderer/android/synchronous_compositor_filter.cc
@@ -187,7 +187,7 @@
     ui::SynchronousInputHandlerProxy* synchronous_input_handler_proxy) {
   DCHECK(sync_compositor_map_.find(routing_id) == sync_compositor_map_.end());
   std::unique_ptr<SynchronousCompositorProxy> proxy =
-      base::MakeUnique<SynchronousCompositorProxy>(
+      std::make_unique<SynchronousCompositorProxy>(
           routing_id, this, synchronous_input_handler_proxy);
   sync_compositor_map_[routing_id] = std::move(proxy);
 }
diff --git a/content/renderer/android/synchronous_layer_tree_frame_sink.cc b/content/renderer/android/synchronous_layer_tree_frame_sink.cc
index 6600e3c..47b9ab9 100644
--- a/content/renderer/android/synchronous_layer_tree_frame_sink.cc
+++ b/content/renderer/android/synchronous_layer_tree_frame_sink.cc
@@ -190,8 +190,8 @@
 
   viz::RendererSettings software_renderer_settings;
 
-  auto output_surface = base::MakeUnique<SoftwareOutputSurface>(
-      base::MakeUnique<SoftwareDevice>(&current_sw_canvas_));
+  auto output_surface = std::make_unique<SoftwareOutputSurface>(
+      std::make_unique<SoftwareDevice>(&current_sw_canvas_));
   software_output_surface_ = output_surface.get();
 
   // The gpu_memory_buffer_manager here is null as the Display is only used for
@@ -201,7 +201,7 @@
   // resources.
   // TODO(crbug.com/692814): The Display never sends its resources out of
   // process so there is no reason for it to use a SharedBitmapManager.
-  display_ = base::MakeUnique<viz::Display>(
+  display_ = std::make_unique<viz::Display>(
       shared_bitmap_manager_, nullptr /* gpu_memory_buffer_manager */,
       software_renderer_settings, kRootFrameSinkId, std::move(output_surface),
       nullptr /* scheduler */, nullptr /* texture_mailbox_deleter */);
diff --git a/content/renderer/blob_storage/blob_transport_controller.cc b/content/renderer/blob_storage/blob_transport_controller.cc
index a221a0f1..e4b8dfdd 100644
--- a/content/renderer/blob_storage/blob_transport_controller.cc
+++ b/content/renderer/blob_storage/blob_transport_controller.cc
@@ -255,7 +255,7 @@
           SharedMemoryHandle& handle = (*memory_handles)[request.handle_index];
           size_t size = shared_memory_sizes[request.handle_index];
           DCHECK(SharedMemory::IsHandleValid(handle));
-          auto shared_memory = base::MakeUnique<SharedMemory>(handle, false);
+          auto shared_memory = std::make_unique<SharedMemory>(handle, false);
 
           if (!shared_memory->Map(size)) {
             // This would happen if the renderer process doesn't have enough
diff --git a/content/renderer/fetchers/resource_fetcher_impl.cc b/content/renderer/fetchers/resource_fetcher_impl.cc
index 2a10800..70a5890 100644
--- a/content/renderer/fetchers/resource_fetcher_impl.cc
+++ b/content/renderer/fetchers/resource_fetcher_impl.cc
@@ -312,7 +312,7 @@
   }
   request_.resource_type = WebURLRequestContextToResourceType(request_context);
 
-  client_ = base::MakeUnique<ClientImpl>(this, std::move(callback),
+  client_ = std::make_unique<ClientImpl>(this, std::move(callback),
                                          maximum_download_size);
   // TODO(kinuko, toyoshim): This task runner should be given by the consumer
   // of this class.
diff --git a/content/renderer/gpu/frame_swap_message_queue.cc b/content/renderer/gpu/frame_swap_message_queue.cc
index 3f43b95d..86e1415 100644
--- a/content/renderer/gpu/frame_swap_message_queue.cc
+++ b/content/renderer/gpu/frame_swap_message_queue.cc
@@ -195,7 +195,7 @@
 
 std::unique_ptr<FrameSwapMessageQueue::SendMessageScope>
 FrameSwapMessageQueue::AcquireSendMessageScope() {
-  return base::MakeUnique<SendMessageScopeImpl>(&lock_);
+  return std::make_unique<SendMessageScopeImpl>(&lock_);
 }
 
 // static
diff --git a/content/renderer/gpu/frame_swap_message_queue_unittest.cc b/content/renderer/gpu/frame_swap_message_queue_unittest.cc
index 75d0e423..a5a92b0 100644
--- a/content/renderer/gpu/frame_swap_message_queue_unittest.cc
+++ b/content/renderer/gpu/frame_swap_message_queue_unittest.cc
@@ -65,7 +65,7 @@
   }
 
   std::unique_ptr<IPC::Message> CloneMessage(const IPC::Message& other) {
-    return base::MakeUnique<IPC::Message>(other);
+    return std::make_unique<IPC::Message>(other);
   }
 
   void TestDidNotSwap(cc::SwapPromise::DidNotSwapReason reason);
@@ -264,7 +264,7 @@
 
 TEST_F(FrameSwapMessageQueueTest, TestDeletesNextSwapMessage) {
   bool message_deleted = false;
-  QueueNextSwapMessage(base::MakeUnique<NotifiesDeletionMessage>(
+  QueueNextSwapMessage(std::make_unique<NotifiesDeletionMessage>(
       &message_deleted, first_message_));
   queue_ = NULL;
   ASSERT_TRUE(message_deleted);
@@ -272,7 +272,7 @@
 
 TEST_F(FrameSwapMessageQueueTest, TestDeletesVisualStateMessage) {
   bool message_deleted = false;
-  QueueVisualStateMessage(1, base::MakeUnique<NotifiesDeletionMessage>(
+  QueueVisualStateMessage(1, std::make_unique<NotifiesDeletionMessage>(
                                  &message_deleted, first_message_));
   queue_ = NULL;
   ASSERT_TRUE(message_deleted);
@@ -280,7 +280,7 @@
 
 TEST_F(FrameSwapMessageQueueTest, TestDeletesQueuedVisualStateMessage) {
   bool message_deleted = false;
-  QueueVisualStateMessage(1, base::MakeUnique<NotifiesDeletionMessage>(
+  QueueVisualStateMessage(1, std::make_unique<NotifiesDeletionMessage>(
                                  &message_deleted, first_message_));
   queue_->DidActivate(1);
   queue_->DidSwap(1);
diff --git a/content/renderer/gpu/queue_message_swap_promise_unittest.cc b/content/renderer/gpu/queue_message_swap_promise_unittest.cc
index d61780b8..42020a9 100644
--- a/content/renderer/gpu/queue_message_swap_promise_unittest.cc
+++ b/content/renderer/gpu/queue_message_swap_promise_unittest.cc
@@ -46,7 +46,7 @@
       std::vector<IPC::Message> messages = std::get<1>(param);
       last_swap_messages_.clear();
       for (const IPC::Message& message : messages) {
-        last_swap_messages_.push_back(base::MakeUnique<IPC::Message>(message));
+        last_swap_messages_.push_back(std::make_unique<IPC::Message>(message));
       }
       delete message;
     } else {
diff --git a/content/renderer/gpu/render_widget_compositor.cc b/content/renderer/gpu/render_widget_compositor.cc
index b590ef16..e376ae8d 100644
--- a/content/renderer/gpu/render_widget_compositor.cc
+++ b/content/renderer/gpu/render_widget_compositor.cc
@@ -725,7 +725,7 @@
 std::unique_ptr<cc::SwapPromiseMonitor>
 RenderWidgetCompositor::CreateLatencyInfoSwapPromiseMonitor(
     ui::LatencyInfo* latency) {
-  return base::MakeUnique<cc::LatencyInfoSwapPromiseMonitor>(
+  return std::make_unique<cc::LatencyInfoSwapPromiseMonitor>(
       latency, layer_tree_host_->GetSwapPromiseManager(), nullptr);
 }
 
@@ -1304,7 +1304,7 @@
 }
 
 void RenderWidgetCompositor::NotifySwapTime(ReportTimeCallback callback) {
-  QueueSwapPromise(base::MakeUnique<ReportTimeSwapPromise>(
+  QueueSwapPromise(std::make_unique<ReportTimeSwapPromise>(
       std::move(callback), base::ThreadTaskRunnerHandle::Get()));
 }
 
diff --git a/content/renderer/history_entry.cc b/content/renderer/history_entry.cc
index bbf9c06..a95f235d 100644
--- a/content/renderer/history_entry.cc
+++ b/content/renderer/history_entry.cc
@@ -47,7 +47,7 @@
 
 HistoryEntry::HistoryNode* HistoryEntry::HistoryNode::AddChild(
     const WebHistoryItem& item) {
-  children_.push_back(base::MakeUnique<HistoryNode>(entry_, item));
+  children_.push_back(std::make_unique<HistoryNode>(entry_, item));
   return children_.back().get();
 }
 
diff --git a/content/renderer/image_downloader/image_downloader_base.cc b/content/renderer/image_downloader/image_downloader_base.cc
index e07373e8..4101c8d 100644
--- a/content/renderer/image_downloader/image_downloader_base.cc
+++ b/content/renderer/image_downloader/image_downloader_base.cc
@@ -89,7 +89,7 @@
 
   // Create an image resource fetcher and assign it with a call back object.
   image_fetchers_.push_back(
-      base::MakeUnique<MultiResolutionImageResourceFetcher>(
+      std::make_unique<MultiResolutionImageResourceFetcher>(
           image_url, frame, 0,
           is_favicon ? WebURLRequest::kRequestContextFavicon
                      : WebURLRequest::kRequestContextImage,
diff --git a/content/renderer/indexed_db/webidbcursor_impl.cc b/content/renderer/indexed_db/webidbcursor_impl.cc
index 2ced097..f828457c 100644
--- a/content/renderer/indexed_db/webidbcursor_impl.cc
+++ b/content/renderer/indexed_db/webidbcursor_impl.cc
@@ -91,7 +91,7 @@
   IndexedDBDispatcher::ThreadSpecificInstance()->ResetCursorPrefetchCaches(
       transaction_id_, this);
 
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       std::move(callbacks), transaction_id_, weak_factory_.GetWeakPtr(),
       io_runner_);
   io_runner_->PostTask(
@@ -120,7 +120,7 @@
       // Request pre-fetch.
       ++pending_onsuccess_callbacks_;
 
-      auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+      auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
           std::move(callbacks), transaction_id_, weak_factory_.GetWeakPtr(),
           io_runner_);
       io_runner_->PostTask(
@@ -144,7 +144,7 @@
   IndexedDBDispatcher::ThreadSpecificInstance()->ResetCursorPrefetchCaches(
       transaction_id_, this);
 
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       std::move(callbacks), transaction_id_, weak_factory_.GetWeakPtr(),
       io_runner_);
   io_runner_->PostTask(
diff --git a/content/renderer/indexed_db/webidbcursor_impl_unittest.cc b/content/renderer/indexed_db/webidbcursor_impl_unittest.cc
index 49563df1..70ff769f2 100644
--- a/content/renderer/indexed_db/webidbcursor_impl_unittest.cc
+++ b/content/renderer/indexed_db/webidbcursor_impl_unittest.cc
@@ -123,8 +123,8 @@
     null_key_.AssignNull();
     indexed_db::mojom::CursorAssociatedPtr ptr;
     mock_cursor_ =
-        base::MakeUnique<MockCursorImpl>(mojo::MakeIsolatedRequest(&ptr));
-    cursor_ = base::MakeUnique<WebIDBCursorImpl>(
+        std::make_unique<MockCursorImpl>(mojo::MakeIsolatedRequest(&ptr));
+    cursor_ = std::make_unique<WebIDBCursorImpl>(
         ptr.PassInterface(), 1, base::ThreadTaskRunnerHandle::Get());
   }
 
diff --git a/content/renderer/indexed_db/webidbdatabase_impl.cc b/content/renderer/indexed_db/webidbdatabase_impl.cc
index 2515d4f6..06fbf545 100644
--- a/content/renderer/indexed_db/webidbdatabase_impl.cc
+++ b/content/renderer/indexed_db/webidbdatabase_impl.cc
@@ -264,7 +264,7 @@
   IndexedDBDispatcher::ThreadSpecificInstance()->ResetCursorPrefetchCaches(
       transaction_id, nullptr);
 
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       base::WrapUnique(callbacks), transaction_id, nullptr, io_runner_);
   io_runner_->PostTask(
       FROM_HERE, base::BindOnce(&IOThreadHelper::Get, base::Unretained(helper_),
@@ -283,7 +283,7 @@
   IndexedDBDispatcher::ThreadSpecificInstance()->ResetCursorPrefetchCaches(
       transaction_id, nullptr);
 
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       base::WrapUnique(callbacks), transaction_id, nullptr, io_runner_);
   io_runner_->PostTask(
       FROM_HERE,
@@ -344,7 +344,7 @@
     mojo_value->blob_or_file_info.push_back(std::move(blob_info));
   }
 
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       base::WrapUnique(callbacks), transaction_id, nullptr, io_runner_);
   io_runner_->PostTask(
       FROM_HERE,
@@ -391,7 +391,7 @@
   IndexedDBDispatcher::ThreadSpecificInstance()->ResetCursorPrefetchCaches(
       transaction_id, nullptr);
 
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       base::WrapUnique(callbacks), transaction_id, nullptr, io_runner_);
   io_runner_->PostTask(
       FROM_HERE,
@@ -409,7 +409,7 @@
   IndexedDBDispatcher::ThreadSpecificInstance()->ResetCursorPrefetchCaches(
       transaction_id, nullptr);
 
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       base::WrapUnique(callbacks), transaction_id, nullptr, io_runner_);
   io_runner_->PostTask(
       FROM_HERE,
@@ -426,7 +426,7 @@
   IndexedDBDispatcher::ThreadSpecificInstance()->ResetCursorPrefetchCaches(
       transaction_id, nullptr);
 
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       base::WrapUnique(callbacks), transaction_id, nullptr, io_runner_);
   io_runner_->PostTask(
       FROM_HERE,
@@ -442,7 +442,7 @@
   IndexedDBDispatcher::ThreadSpecificInstance()->ResetCursorPrefetchCaches(
       transaction_id, nullptr);
 
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       base::WrapUnique(callbacks), transaction_id, nullptr, io_runner_);
   io_runner_->PostTask(
       FROM_HERE,
diff --git a/content/renderer/indexed_db/webidbfactory_impl.cc b/content/renderer/indexed_db/webidbfactory_impl.cc
index 743ad88..38854fa3 100644
--- a/content/renderer/indexed_db/webidbfactory_impl.cc
+++ b/content/renderer/indexed_db/webidbfactory_impl.cc
@@ -67,7 +67,7 @@
 
 void WebIDBFactoryImpl::GetDatabaseNames(WebIDBCallbacks* callbacks,
                                          const WebSecurityOrigin& origin) {
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       base::WrapUnique(callbacks), IndexedDBCallbacksImpl::kNoTransaction,
       nullptr, io_runner_);
   io_runner_->PostTask(
@@ -83,10 +83,10 @@
                              WebIDBCallbacks* callbacks,
                              WebIDBDatabaseCallbacks* database_callbacks,
                              const WebSecurityOrigin& origin) {
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       base::WrapUnique(callbacks), transaction_id, nullptr, io_runner_);
   auto database_callbacks_impl =
-      base::MakeUnique<IndexedDBDatabaseCallbacksImpl>(
+      std::make_unique<IndexedDBDatabaseCallbacksImpl>(
           base::WrapUnique(database_callbacks));
   io_runner_->PostTask(
       FROM_HERE,
@@ -100,7 +100,7 @@
                                        WebIDBCallbacks* callbacks,
                                        const WebSecurityOrigin& origin,
                                        bool force_close) {
-  auto callbacks_impl = base::MakeUnique<IndexedDBCallbacksImpl>(
+  auto callbacks_impl = std::make_unique<IndexedDBCallbacksImpl>(
       base::WrapUnique(callbacks), IndexedDBCallbacksImpl::kNoTransaction,
       nullptr, io_runner_);
   io_runner_->PostTask(
diff --git a/content/renderer/input/frame_input_handler_impl.cc b/content/renderer/input/frame_input_handler_impl.cc
index 9598926..ded9a246 100644
--- a/content/renderer/input/frame_input_handler_impl.cc
+++ b/content/renderer/input/frame_input_handler_impl.cc
@@ -268,8 +268,7 @@
   if (range.IsNull())
     return;
 
-  HandlingState handling_state(render_frame_.get(),
-                               UpdateState::kIsSelectingRange);
+  HandlingState handling_state(render_frame_, UpdateState::kIsSelectingRange);
   render_frame_->GetWebFrame()->SelectRange(
       blink::WebRange(range.EndOffset(), 0),
       blink::WebLocalFrame::kHideSelectionHandle,
@@ -290,8 +289,7 @@
   if (!render_frame_)
     return;
   RenderViewImpl* render_view = render_frame_->render_view();
-  HandlingState handling_state(render_frame_.get(),
-                               UpdateState::kIsSelectingRange);
+  HandlingState handling_state(render_frame_, UpdateState::kIsSelectingRange);
   render_frame_->GetWebFrame()->SelectRange(
       render_view->ConvertWindowPointToViewport(base),
       render_view->ConvertWindowPointToViewport(extent));
@@ -320,8 +318,7 @@
   if (start - end > range.length() || range.StartOffset() + start < 0)
     return;
 
-  HandlingState handling_state(render_frame_.get(),
-                               UpdateState::kIsSelectingRange);
+  HandlingState handling_state(render_frame_, UpdateState::kIsSelectingRange);
   // A negative adjust amount moves the selection towards the beginning of
   // the document, a positive amount moves the selection towards the end of
   // the document.
@@ -343,8 +340,7 @@
 
   if (!render_frame_)
     return;
-  HandlingState handling_state(render_frame_.get(),
-                               UpdateState::kIsSelectingRange);
+  HandlingState handling_state(render_frame_, UpdateState::kIsSelectingRange);
   render_frame_->GetWebFrame()->MoveRangeSelectionExtent(
       render_frame_->render_view()->ConvertWindowPointToViewport(extent));
 }
@@ -401,7 +397,7 @@
   if (!render_frame_)
     return;
 
-  HandlingState handling_state(render_frame_.get(), update_state);
+  HandlingState handling_state(render_frame_, update_state);
   render_frame_->GetWebFrame()->ExecuteCommand(
       blink::WebString::FromUTF8(command));
 }
@@ -425,7 +421,7 @@
 }
 
 FrameInputHandlerImpl::HandlingState::HandlingState(
-    RenderFrameImpl* render_frame,
+    const base::WeakPtr<RenderFrameImpl>& render_frame,
     UpdateState state)
     : render_frame_(render_frame),
       original_select_range_value_(render_frame->handling_select_range()),
@@ -442,6 +438,9 @@
 }
 
 FrameInputHandlerImpl::HandlingState::~HandlingState() {
+  // RenderFrame may have been destroyed while this object was on the stack.
+  if (!render_frame_)
+    return;
   render_frame_->set_handling_select_range(original_select_range_value_);
   render_frame_->set_is_pasting(original_pasting_value_);
 }
diff --git a/content/renderer/input/frame_input_handler_impl.h b/content/renderer/input/frame_input_handler_impl.h
index 17742d0..cf0e9e6 100644
--- a/content/renderer/input/frame_input_handler_impl.h
+++ b/content/renderer/input/frame_input_handler_impl.h
@@ -81,11 +81,12 @@
 
   class HandlingState {
    public:
-    HandlingState(RenderFrameImpl* render_frame, UpdateState state);
+    HandlingState(const base::WeakPtr<RenderFrameImpl>& render_frame,
+                  UpdateState state);
     ~HandlingState();
 
    private:
-    RenderFrameImpl* render_frame_;
+    base::WeakPtr<RenderFrameImpl> render_frame_;
     bool original_select_range_value_;
     bool original_pasting_value_;
   };
diff --git a/content/renderer/input/input_event_filter.cc b/content/renderer/input/input_event_filter.cc
index 0d504a2..ec4ff50 100644
--- a/content/renderer/input/input_event_filter.cc
+++ b/content/renderer/input/input_event_filter.cc
@@ -103,7 +103,7 @@
 }
 
 void InputEventFilter::DidStopFlinging(int routing_id) {
-  SendMessage(base::MakeUnique<InputHostMsg_DidStopFlinging>(routing_id));
+  SendMessage(std::make_unique<InputHostMsg_DidStopFlinging>(routing_id));
 }
 
 void InputEventFilter::QueueClosureForMainThreadEventQueue(
@@ -139,7 +139,7 @@
                                                  cc::TouchAction touch_action,
                                                  uint32_t unique_touch_event_id,
                                                  InputEventAckState ack_state) {
-  SendMessage(base::MakeUnique<InputHostMsg_SetWhiteListedTouchAction>(
+  SendMessage(std::make_unique<InputHostMsg_SetWhiteListedTouchAction>(
       routing_id, touch_action, unique_touch_event_id, ack_state));
 }
 
diff --git a/content/renderer/input/input_event_filter_unittest.cc b/content/renderer/input/input_event_filter_unittest.cc
index 10f50b6..e691012 100644
--- a/content/renderer/input/input_event_filter_unittest.cc
+++ b/content/renderer/input/input_event_filter_unittest.cc
@@ -213,7 +213,7 @@
         base::Bind(base::IgnoreResult(&IPCMessageRecorder::OnMessageReceived),
                    base::Unretained(&message_recorder_)),
         main_task_runner_, main_task_runner_);
-    event_recorder_ = base::MakeUnique<InputEventRecorder>(filter_.get());
+    event_recorder_ = std::make_unique<InputEventRecorder>(filter_.get());
     filter_->SetInputHandlerManager(event_recorder_.get());
     filter_->OnFilterAdded(&ipc_sink_);
   }
diff --git a/content/renderer/input/main_thread_event_queue_unittest.cc b/content/renderer/input/main_thread_event_queue_unittest.cc
index 2a55cc32..2a7500d 100644
--- a/content/renderer/input/main_thread_event_queue_unittest.cc
+++ b/content/renderer/input/main_thread_event_queue_unittest.cc
@@ -171,7 +171,7 @@
     feature_list_.InitFromCommandLine(base::JoinString(features, ","),
                                       base::JoinString(disabled_features, ","));
 
-    handler_callback_ = base::MakeUnique<HandledEventCallbackTracker>();
+    handler_callback_ = std::make_unique<HandledEventCallbackTracker>();
   }
 
   void SetUp() override {
@@ -241,7 +241,7 @@
 
   std::vector<ReceivedCallback> GetAndResetCallbackResults() {
     std::unique_ptr<HandledEventCallbackTracker> callback =
-        base::MakeUnique<HandledEventCallbackTracker>();
+        std::make_unique<HandledEventCallbackTracker>();
     handler_callback_.swap(callback);
     return callback->GetReceivedCallbacks();
   }
diff --git a/content/renderer/input/widget_input_handler_manager.cc b/content/renderer/input/widget_input_handler_manager.cc
index 54aa57e..0b66f84 100644
--- a/content/renderer/input/widget_input_handler_manager.cc
+++ b/content/renderer/input/widget_input_handler_manager.cc
@@ -289,7 +289,7 @@
 void WidgetInputHandlerManager::InitOnCompositorThread(
     const base::WeakPtr<cc::InputHandler>& input_handler,
     bool smooth_scroll_enabled) {
-  input_handler_proxy_ = base::MakeUnique<ui::InputHandlerProxy>(
+  input_handler_proxy_ = std::make_unique<ui::InputHandlerProxy>(
       input_handler.get(), this,
       base::FeatureList::IsEnabled(features::kTouchpadAndWheelScrollLatching));
   input_handler_proxy_->set_smooth_scroll_enabled(smooth_scroll_enabled);
diff --git a/content/renderer/java/gin_java_bridge_value_converter.cc b/content/renderer/java/gin_java_bridge_value_converter.cc
index 8a6230d..3d929ed 100644
--- a/content/renderer/java/gin_java_bridge_value_converter.cc
+++ b/content/renderer/java/gin_java_bridge_value_converter.cc
@@ -85,7 +85,7 @@
                      *end = element + typed_array_->Length();
          element != end;
          ++element) {
-      out->Append(base::MakeUnique<base::Value>(ListType(*element)));
+      out->Append(std::make_unique<base::Value>(ListType(*element)));
     }
   }
 
diff --git a/content/renderer/java/gin_java_function_invocation_helper.cc b/content/renderer/java/gin_java_function_invocation_helper.cc
index ed24b70f..78f890cb 100644
--- a/content/renderer/java/gin_java_function_invocation_helper.cc
+++ b/content/renderer/java/gin_java_function_invocation_helper.cc
@@ -69,7 +69,7 @@
       if (arg.get())
         arguments.Append(std::move(arg));
       else
-        arguments.Append(base::MakeUnique<base::Value>());
+        arguments.Append(std::make_unique<base::Value>());
     }
   }
 
diff --git a/content/renderer/loader/cors_url_loader_factory.cc b/content/renderer/loader/cors_url_loader_factory.cc
index f2a64b2d..741f3ec 100644
--- a/content/renderer/loader/cors_url_loader_factory.cc
+++ b/content/renderer/loader/cors_url_loader_factory.cc
@@ -48,7 +48,7 @@
   // Instances of CORSURLLoader are owned by this class and their pipe so that
   // they can share |network_loader_factory_|.
   loader_bindings_.AddBinding(
-      base::MakeUnique<CORSURLLoader>(
+      std::make_unique<CORSURLLoader>(
           routing_id, request_id, options, resource_request, std::move(client),
           traffic_annotation, network_loader_factory_.get()),
       std::move(request));
diff --git a/content/renderer/loader/resource_dispatcher.cc b/content/renderer/loader/resource_dispatcher.cc
index 6420a67c..2eecf75 100644
--- a/content/renderer/loader/resource_dispatcher.cc
+++ b/content/renderer/loader/resource_dispatcher.cc
@@ -631,7 +631,7 @@
 
   // Compute a unique request_id for this renderer process.
   int request_id = MakeRequestID();
-  pending_requests_[request_id] = base::MakeUnique<PendingRequestInfo>(
+  pending_requests_[request_id] = std::make_unique<PendingRequestInfo>(
       std::move(peer), request->resource_type, request->origin_pid,
       frame_origin, request->url, request->download_to_file);
 
@@ -645,7 +645,7 @@
 
   if (consumer_handle.is_valid()) {
     pending_requests_[request_id]->url_loader_client =
-        base::MakeUnique<URLLoaderClientImpl>(request_id, this, task_runner);
+        std::make_unique<URLLoaderClientImpl>(request_id, this, task_runner);
 
     task_runner->PostTask(
         FROM_HERE, base::BindOnce(&ResourceDispatcher::ContinueForNavigation,
diff --git a/content/renderer/loader/resource_dispatcher_unittest.cc b/content/renderer/loader/resource_dispatcher_unittest.cc
index 8936ec7..5220774 100644
--- a/content/renderer/loader/resource_dispatcher_unittest.cc
+++ b/content/renderer/loader/resource_dispatcher_unittest.cc
@@ -400,7 +400,7 @@
       std::unique_ptr<RequestPeer> current_peer,
       const std::string& mime_type,
       const GURL& url) override {
-    return base::MakeUnique<WrapperPeer>(std::move(current_peer));
+    return std::make_unique<WrapperPeer>(std::move(current_peer));
   }
 
   class WrapperPeer : public RequestPeer {
@@ -435,7 +435,7 @@
       original_peer_->OnReceivedResponse(response_info_);
       if (!data_.empty()) {
         original_peer_->OnReceivedData(
-            base::MakeUnique<FixedReceivedData>(data_.data(), data_.size()));
+            std::make_unique<FixedReceivedData>(data_.data(), data_.size()));
       }
       original_peer_->OnCompletedRequest(error_code, stale_copy_in_cache,
                                          completion_time, total_transfer_size,
diff --git a/content/renderer/loader/shared_memory_data_consumer_handle.cc b/content/renderer/loader/shared_memory_data_consumer_handle.cc
index 2847f18..f216a6e0 100644
--- a/content/renderer/loader/shared_memory_data_consumer_handle.cc
+++ b/content/renderer/loader/shared_memory_data_consumer_handle.cc
@@ -293,9 +293,9 @@
     std::unique_ptr<RequestPeer::ThreadSafeReceivedData> data_to_pass;
     if (mode_ == kApplyBackpressure) {
       data_to_pass =
-          base::MakeUnique<DelegateThreadSafeReceivedData>(std::move(data));
+          std::make_unique<DelegateThreadSafeReceivedData>(std::move(data));
     } else {
-      data_to_pass = base::MakeUnique<FixedReceivedData>(data.get());
+      data_to_pass = std::make_unique<FixedReceivedData>(data.get());
     }
     context_->Push(std::move(data_to_pass));
   }
diff --git a/content/renderer/loader/shared_memory_data_consumer_handle_unittest.cc b/content/renderer/loader/shared_memory_data_consumer_handle_unittest.cc
index 1b27d95d..fe6d2cdf 100644
--- a/content/renderer/loader/shared_memory_data_consumer_handle_unittest.cc
+++ b/content/renderer/loader/shared_memory_data_consumer_handle_unittest.cc
@@ -197,7 +197,7 @@
     handle_.reset(new SharedMemoryDataConsumerHandle(GetParam(), &writer_));
   }
   std::unique_ptr<FixedReceivedData> NewFixedData(const char* s) {
-    return base::MakeUnique<FixedReceivedData>(s, strlen(s));
+    return std::make_unique<FixedReceivedData>(s, strlen(s));
   }
 
   StrictMock<MockClient> client_;
@@ -901,17 +901,17 @@
   size_t size;
 
   std::unique_ptr<Writer> writer;
-  auto handle = base::MakeUnique<SharedMemoryDataConsumerHandle>(
+  auto handle = std::make_unique<SharedMemoryDataConsumerHandle>(
       kApplyBackpressure, &writer);
   scoped_refptr<Logger> logger(new Logger);
   writer->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data1", "Once ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data1", "Once ", logger));
   writer->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data2", "upon ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data2", "upon ", logger));
   writer->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data3", "a ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data3", "a ", logger));
   writer->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data4", "time ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data4", "time ", logger));
 
   auto reader = handle->ObtainReader(nullptr);
   logger->Add("1");
@@ -946,15 +946,15 @@
   size_t size;
 
   std::unique_ptr<Writer> writer;
-  auto handle = base::MakeUnique<SharedMemoryDataConsumerHandle>(
+  auto handle = std::make_unique<SharedMemoryDataConsumerHandle>(
       kApplyBackpressure, &writer);
   scoped_refptr<Logger> logger(new Logger);
   writer->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data1", "Once ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data1", "Once ", logger));
   writer->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data2", "upon ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data2", "upon ", logger));
   writer->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data3", "a ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data3", "a ", logger));
 
   auto reader = handle->ObtainReader(nullptr);
   logger->Add("1");
@@ -989,16 +989,16 @@
 TEST(SharedMemoryDataConsumerHandleWithoutBackpressureTest, AddData) {
   base::MessageLoop loop;
   std::unique_ptr<Writer> writer;
-  auto handle = base::MakeUnique<SharedMemoryDataConsumerHandle>(
+  auto handle = std::make_unique<SharedMemoryDataConsumerHandle>(
       kDoNotApplyBackpressure, &writer);
   scoped_refptr<Logger> logger(new Logger);
 
   logger->Add("1");
   writer->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data1", "Once ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data1", "Once ", logger));
   logger->Add("2");
   writer->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data2", "upon ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data2", "upon ", logger));
   logger->Add("3");
 
   EXPECT_EQ(
@@ -1012,7 +1012,7 @@
 
 TEST_F(ThreadedSharedMemoryDataConsumerHandleTest, Read) {
   base::RunLoop run_loop;
-  auto operation = base::MakeUnique<ReadDataOperation>(
+  auto operation = std::make_unique<ReadDataOperation>(
       std::move(handle_), &loop_, run_loop.QuitClosure());
   scoped_refptr<Logger> logger(new Logger);
 
@@ -1025,15 +1025,15 @@
 
   logger->Add("1");
   writer_->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data1", "Once ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data1", "Once ", logger));
   writer_->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data2", "upon ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data2", "upon ", logger));
   writer_->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data3", "a time ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data3", "a time ", logger));
   writer_->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data4", "there ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data4", "there ", logger));
   writer_->AddData(
-      base::MakeUnique<LoggingFixedReceivedData>("data5", "was ", logger));
+      std::make_unique<LoggingFixedReceivedData>("data5", "was ", logger));
   writer_->Close();
   logger->Add("2");
 
diff --git a/content/renderer/loader/shared_memory_received_data_factory.cc b/content/renderer/loader/shared_memory_received_data_factory.cc
index 9f4fa19..b9530d50a 100644
--- a/content/renderer/loader/shared_memory_received_data_factory.cc
+++ b/content/renderer/loader/shared_memory_received_data_factory.cc
@@ -64,7 +64,7 @@
   const char* payload = start + offset;
   TicketId id = id_++;
 
-  return base::MakeUnique<SharedMemoryReceivedData>(payload, length, this, id);
+  return std::make_unique<SharedMemoryReceivedData>(payload, length, this, id);
 }
 
 void SharedMemoryReceivedDataFactory::Stop() {
diff --git a/content/renderer/loader/sync_load_context.cc b/content/renderer/loader/sync_load_context.cc
index 9e185ae..de43801 100644
--- a/content/renderer/loader/sync_load_context.cc
+++ b/content/renderer/loader/sync_load_context.cc
@@ -46,7 +46,7 @@
   url_loader_factory_.Bind(std::move(url_loader_factory));
 
   // Constructs a new ResourceDispatcher specifically for this request.
-  resource_dispatcher_ = base::MakeUnique<ResourceDispatcher>(
+  resource_dispatcher_ = std::make_unique<ResourceDispatcher>(
       nullptr, base::ThreadTaskRunnerHandle::Get());
 
   // Initialize the final URL with the original request URL. It will be
diff --git a/content/renderer/loader/url_loader_client_impl_unittest.cc b/content/renderer/loader/url_loader_client_impl_unittest.cc
index 8eb189da..d980852 100644
--- a/content/renderer/loader/url_loader_client_impl_unittest.cc
+++ b/content/renderer/loader/url_loader_client_impl_unittest.cc
@@ -30,9 +30,9 @@
     mojo_binding_.Bind(mojo::MakeRequest(&url_loader_factory_proxy_));
 
     request_id_ = dispatcher_->StartAsync(
-        base::MakeUnique<ResourceRequest>(), 0, nullptr, url::Origin(),
+        std::make_unique<ResourceRequest>(), 0, nullptr, url::Origin(),
         TRAFFIC_ANNOTATION_FOR_TESTS, false,
-        base::MakeUnique<TestRequestPeer>(dispatcher_.get(),
+        std::make_unique<TestRequestPeer>(dispatcher_.get(),
                                           &request_peer_context_),
         blink::WebURLRequest::LoadingIPCType::kMojo,
         url_loader_factory_proxy_.get(),
diff --git a/content/renderer/loader/url_response_body_consumer.cc b/content/renderer/loader/url_response_body_consumer.cc
index 08460aa..e574fc3 100644
--- a/content/renderer/loader/url_response_body_consumer.cc
+++ b/content/renderer/loader/url_response_body_consumer.cc
@@ -158,7 +158,7 @@
       request_info->site_isolation_metadata.reset();
     }
 
-    request_info->peer->OnReceivedData(base::MakeUnique<ReceivedData>(
+    request_info->peer->OnReceivedData(std::make_unique<ReceivedData>(
         static_cast<const char*>(buffer), available, this));
   }
 }
diff --git a/content/renderer/loader/url_response_body_consumer_unittest.cc b/content/renderer/loader/url_response_body_consumer_unittest.cc
index 8922f37..84b67cc 100644
--- a/content/renderer/loader/url_response_body_consumer_unittest.cc
+++ b/content/renderer/loader/url_response_body_consumer_unittest.cc
@@ -140,7 +140,7 @@
     return dispatcher_->StartAsync(
         std::move(request), 0, nullptr, url::Origin(),
         TRAFFIC_ANNOTATION_FOR_TESTS, false,
-        base::MakeUnique<TestRequestPeer>(context, message_loop_.task_runner()),
+        std::make_unique<TestRequestPeer>(context, message_loop_.task_runner()),
         blink::WebURLRequest::LoadingIPCType::kChromeIPC, nullptr,
         std::vector<std::unique_ptr<URLLoaderThrottle>>(),
         mojo::ScopedDataPipeConsumerHandle());
diff --git a/content/renderer/loader/web_data_consumer_handle_impl_unittest.cc b/content/renderer/loader/web_data_consumer_handle_impl_unittest.cc
index 19c8e3e..5faab10 100644
--- a/content/renderer/loader/web_data_consumer_handle_impl_unittest.cc
+++ b/content/renderer/loader/web_data_consumer_handle_impl_unittest.cc
@@ -240,7 +240,7 @@
 
 TEST_F(WebDataConsumerHandleImplTest, ReadData) {
   base::RunLoop run_loop;
-  auto operation = base::MakeUnique<ReadDataOperation>(
+  auto operation = std::make_unique<ReadDataOperation>(
       std::move(consumer_), &message_loop_, run_loop.QuitClosure());
 
   base::Thread t("DataConsumerHandle test thread");
@@ -261,7 +261,7 @@
 
 TEST_F(WebDataConsumerHandleImplTest, TwoPhaseReadData) {
   base::RunLoop run_loop;
-  auto operation = base::MakeUnique<TwoPhaseReadDataOperation>(
+  auto operation = std::make_unique<TwoPhaseReadDataOperation>(
       std::move(consumer_), &message_loop_, run_loop.QuitClosure());
 
   base::Thread t("DataConsumerHandle test thread");
@@ -325,7 +325,7 @@
   static constexpr size_t kTotalSize = kBlockSize * 3;
 
   std::unique_ptr<CountDidGetReadableClient> client =
-      base::MakeUnique<CountDidGetReadableClient>();
+      std::make_unique<CountDidGetReadableClient>();
   std::unique_ptr<WebDataConsumerHandleImpl> handle(
       new WebDataConsumerHandleImpl(std::move(consumer_)));
   std::unique_ptr<WebDataConsumerHandle::Reader> reader(
diff --git a/content/renderer/loader/web_url_loader_impl.cc b/content/renderer/loader/web_url_loader_impl.cc
index 1888aee..5a486f8 100644
--- a/content/renderer/loader/web_url_loader_impl.cc
+++ b/content/renderer/loader/web_url_loader_impl.cc
@@ -501,7 +501,7 @@
       task_runner_(std::move(task_runner)),
       keep_alive_handle_(
           keep_alive_handle_ptr
-              ? base::MakeUnique<KeepAliveHandleWithChildProcessReference>(
+              ? std::make_unique<KeepAliveHandleWithChildProcessReference>(
                     std::move(keep_alive_handle_ptr))
               : nullptr),
       defers_loading_(NOT_DEFERRING),
@@ -702,7 +702,7 @@
       std::move(resource_request), request.RequestorID(), task_runner_,
       extra_data->frame_origin(), GetTrafficAnnotationTag(request),
       false /* is_sync */,
-      base::MakeUnique<WebURLLoaderImpl::RequestPeerImpl>(this),
+      std::make_unique<WebURLLoaderImpl::RequestPeerImpl>(this),
       request.GetLoadingIPCType(), url_loader_factory_,
       extra_data->TakeURLLoaderThrottles(), std::move(consumer_handle));
 
@@ -808,7 +808,7 @@
       mode = SharedMemoryDataConsumerHandle::kApplyBackpressure;
     }
 
-    auto read_handle = base::MakeUnique<SharedMemoryDataConsumerHandle>(
+    auto read_handle = std::make_unique<SharedMemoryDataConsumerHandle>(
         mode, base::Bind(&Context::CancelBodyStreaming, this),
         &body_stream_writer_);
 
@@ -832,7 +832,7 @@
   DCHECK(!ftp_listing_delegate_);
   if (info.mime_type == "text/vnd.chromium.ftp-dir" && !show_raw_listing) {
     ftp_listing_delegate_ =
-        base::MakeUnique<FtpDirectoryListingResponseDelegate>(client_, loader_,
+        std::make_unique<FtpDirectoryListingResponseDelegate>(client_, loader_,
                                                               response);
   }
 }
@@ -1028,7 +1028,7 @@
     OnReceivedResponse(info);
     auto size = data.size();
     if (size != 0)
-      OnReceivedData(base::MakeUnique<FixedReceivedData>(data.data(), size));
+      OnReceivedData(std::make_unique<FixedReceivedData>(data.data(), size));
   }
 
   OnCompletedRequest(error_code, false, base::TimeTicks::Now(), 0, data.size(),
diff --git a/content/renderer/loader/web_url_loader_impl_unittest.cc b/content/renderer/loader/web_url_loader_impl_unittest.cc
index 1a178272..4d85be5 100644
--- a/content/renderer/loader/web_url_loader_impl_unittest.cc
+++ b/content/renderer/loader/web_url_loader_impl_unittest.cc
@@ -346,7 +346,7 @@
     EXPECT_EQ("", client()->received_data());
     auto size = strlen(kTestData);
     peer()->OnReceivedData(
-        base::MakeUnique<FixedReceivedData>(kTestData, size));
+        std::make_unique<FixedReceivedData>(kTestData, size));
     EXPECT_EQ(kTestData, client()->received_data());
   }
 
@@ -382,7 +382,7 @@
   void DoReceiveDataFtp() {
     auto size = strlen(kFtpDirListing);
     peer()->OnReceivedData(
-        base::MakeUnique<FixedReceivedData>(kFtpDirListing, size));
+        std::make_unique<FixedReceivedData>(kFtpDirListing, size));
     // The FTP delegate should modify the data the client sees.
     EXPECT_NE(kFtpDirListing, client()->received_data());
   }
diff --git a/content/renderer/media/android/media_player_renderer_client_factory.cc b/content/renderer/media/android/media_player_renderer_client_factory.cc
index c9f1d5b..3289a72 100644
--- a/content/renderer/media/android/media_player_renderer_client_factory.cc
+++ b/content/renderer/media/android/media_player_renderer_client_factory.cc
@@ -39,7 +39,7 @@
   media::ScopedStreamTextureWrapper stream_texture_wrapper =
       get_stream_texture_wrapper_cb_.Run();
 
-  return base::MakeUnique<MediaPlayerRendererClient>(
+  return std::make_unique<MediaPlayerRendererClient>(
       media_task_runner, compositor_task_runner_, mojo_renderer,
       std::move(stream_texture_wrapper), video_renderer_sink);
 }
diff --git a/content/renderer/media/android/stream_texture_factory.cc b/content/renderer/media/android/stream_texture_factory.cc
index 395455cd..fd7d4c67 100644
--- a/content/renderer/media/android/stream_texture_factory.cc
+++ b/content/renderer/media/android/stream_texture_factory.cc
@@ -103,7 +103,7 @@
   if (!route_id)
     return ScopedStreamTextureProxy();
   return ScopedStreamTextureProxy(new StreamTextureProxy(
-      base::MakeUnique<StreamTextureHost>(channel_, route_id)));
+      std::make_unique<StreamTextureHost>(channel_, route_id)));
 }
 
 unsigned StreamTextureFactory::CreateStreamTexture(
diff --git a/content/renderer/media/audio_ipc_factory.cc b/content/renderer/media/audio_ipc_factory.cc
index 0f02785..5ab138a 100644
--- a/content/renderer/media/audio_ipc_factory.cc
+++ b/content/renderer/media/audio_ipc_factory.cc
@@ -37,7 +37,7 @@
     int frame_id) const {
   if (UsingMojoFactories()) {
     // Unretained is safe due to the contract at the top of the header file.
-    return base::MakeUnique<MojoAudioOutputIPC>(base::BindRepeating(
+    return std::make_unique<MojoAudioOutputIPC>(base::BindRepeating(
         &AudioIPCFactory::GetRemoteFactory, base::Unretained(this), frame_id));
   }
   return audio_message_filter_->CreateAudioOutputIPC(frame_id);
diff --git a/content/renderer/media/audio_ipc_factory_unittest.cc b/content/renderer/media/audio_ipc_factory_unittest.cc
index a99ae27..88b1773 100644
--- a/content/renderer/media/audio_ipc_factory_unittest.cc
+++ b/content/renderer/media/audio_ipc_factory_unittest.cc
@@ -28,7 +28,7 @@
 const int kRenderFrameId = 0;
 
 std::unique_ptr<base::Thread> MakeIOThread() {
-  auto io_thread = base::MakeUnique<base::Thread>("test IO thread");
+  auto io_thread = std::make_unique<base::Thread>("test IO thread");
   base::Thread::Options thread_options(base::MessageLoop::TYPE_IO, 0);
   CHECK(io_thread->StartWithOptions(thread_options));
   return io_thread;
diff --git a/content/renderer/media/audio_repetition_detector.cc b/content/renderer/media/audio_repetition_detector.cc
index ced9a7f..cd39a07b 100644
--- a/content/renderer/media/audio_repetition_detector.cc
+++ b/content/renderer/media/audio_repetition_detector.cc
@@ -41,7 +41,7 @@
 
   max_look_back_ms_ = temp.back();
   for (int look_back : temp)
-    states_.push_back(base::MakeUnique<State>(look_back));
+    states_.push_back(std::make_unique<State>(look_back));
 }
 
 AudioRepetitionDetector::~AudioRepetitionDetector() {
diff --git a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc
index e0ead2c..065c829 100644
--- a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc
+++ b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc
@@ -333,7 +333,7 @@
 GpuVideoAcceleratorFactoriesImpl::GetGLContextLock() {
   if (CheckContextLost())
     return nullptr;
-  return base::MakeUnique<ScopedGLContextLockImpl>(context_provider_);
+  return std::make_unique<ScopedGLContextLockImpl>(context_provider_);
 }
 
 std::unique_ptr<base::SharedMemory>
diff --git a/content/renderer/media/gpu/rtc_video_encoder_unittest.cc b/content/renderer/media/gpu/rtc_video_encoder_unittest.cc
index dc3f4b4..336705c 100644
--- a/content/renderer/media/gpu/rtc_video_encoder_unittest.cc
+++ b/content/renderer/media/gpu/rtc_video_encoder_unittest.cc
@@ -125,7 +125,7 @@
         ADD_FAILURE() << "Unexpected codec type: " << codec_type;
         media_profile = media::VIDEO_CODEC_PROFILE_UNKNOWN;
     }
-    rtc_encoder_ = base::MakeUnique<RTCVideoEncoder>(media_profile,
+    rtc_encoder_ = std::make_unique<RTCVideoEncoder>(media_profile,
                                                      mock_gpu_factories_.get());
   }
 
diff --git a/content/renderer/media/media_devices_listener_impl.cc b/content/renderer/media/media_devices_listener_impl.cc
index 8588036..63ecabe0 100644
--- a/content/renderer/media/media_devices_listener_impl.cc
+++ b/content/renderer/media/media_devices_listener_impl.cc
@@ -18,7 +18,7 @@
     int render_frame_id,
     ::mojom::MediaDevicesListenerRequest request) {
   mojo::MakeStrongBinding(
-      base::MakeUnique<MediaDevicesListenerImpl>(render_frame_id),
+      std::make_unique<MediaDevicesListenerImpl>(render_frame_id),
       std::move(request));
 }
 
diff --git a/content/renderer/media/media_factory.cc b/content/renderer/media/media_factory.cc
index 59d42e7e3..e62871ee 100644
--- a/content/renderer/media/media_factory.cc
+++ b/content/renderer/media/media_factory.cc
@@ -156,7 +156,7 @@
   GetRemoterFactory()->Create(std::move(remoting_source),
                               mojo::MakeRequest(&remoter));
   remoting_sink_observer_ =
-      base::MakeUnique<media::remoting::SinkAvailabilityObserver>(
+      std::make_unique<media::remoting::SinkAvailabilityObserver>(
           std::move(remoting_source_request), std::move(remoter));
 #endif  // BUILDFLAG(ENABLE_MEDIA_REMOTING)
 }
@@ -268,9 +268,9 @@
 #endif
 
   if (!fetch_context_) {
-    fetch_context_ = base::MakeUnique<FrameFetchContext>(web_frame);
+    fetch_context_ = std::make_unique<FrameFetchContext>(web_frame);
     DCHECK(!url_index_);
-    url_index_ = base::MakeUnique<media::UrlIndex>(fetch_context_.get());
+    url_index_ = std::make_unique<media::UrlIndex>(fetch_context_.get());
   }
   DCHECK_EQ(static_cast<FrameFetchContext*>(fetch_context_.get())->frame(),
             web_frame);
@@ -341,7 +341,7 @@
   if (!render_thread)
     return nullptr;
 
-  auto factory_selector = base::MakeUnique<media::RendererFactorySelector>();
+  auto factory_selector = std::make_unique<media::RendererFactorySelector>();
 
 #if defined(OS_ANDROID)
   DCHECK(remote_interfaces_);
@@ -349,7 +349,7 @@
   // The only MojoRendererService that is registered at the RenderFrameHost
   // level uses the MediaPlayerRenderer as its underlying media::Renderer.
   auto mojo_media_player_renderer_factory =
-      base::MakeUnique<media::MojoRendererFactory>(
+      std::make_unique<media::MojoRendererFactory>(
           media::MojoRendererFactory::GetGpuFactoriesCB(),
           remote_interfaces_->get());
 
@@ -357,7 +357,7 @@
   // might fallback to it if the final redirected URL is an HLS url.
   factory_selector->AddFactory(
       media::RendererFactorySelector::FactoryType::MEDIA_PLAYER,
-      base::MakeUnique<MediaPlayerRendererClientFactory>(
+      std::make_unique<MediaPlayerRendererClientFactory>(
           render_thread->compositor_task_runner(),
           std::move(mojo_media_player_renderer_factory),
           base::Bind(&StreamTextureWrapperImpl::Create,
@@ -380,7 +380,7 @@
   if (use_mojo_renderer_factory) {
     factory_selector->AddFactory(
         media::RendererFactorySelector::FactoryType::MOJO,
-        base::MakeUnique<media::MojoRendererFactory>(
+        std::make_unique<media::MojoRendererFactory>(
             base::Bind(&RenderThreadImpl::GetGpuFactories,
                        base::Unretained(render_thread)),
             GetMediaInterfaceFactory()));
@@ -393,7 +393,7 @@
   if (!use_mojo_renderer_factory) {
     factory_selector->AddFactory(
         media::RendererFactorySelector::FactoryType::DEFAULT,
-        base::MakeUnique<media::DefaultRendererFactory>(
+        std::make_unique<media::DefaultRendererFactory>(
             media_log, decoder_factory,
             base::Bind(&RenderThreadImpl::GetGpuFactories,
                        base::Unretained(render_thread))));
@@ -415,7 +415,7 @@
   *out_media_observer = remoting_controller->GetWeakPtr();
 
   auto courier_factory =
-      base::MakeUnique<media::remoting::CourierRendererFactory>(
+      std::make_unique<media::remoting::CourierRendererFactory>(
           std::move(remoting_controller));
 
   // base::Unretained is safe here because |factory_selector| owns
@@ -447,7 +447,7 @@
 
   return new WebMediaPlayerMS(
       frame, client, GetWebMediaPlayerDelegate(),
-      base::MakeUnique<RenderMediaLog>(url::Origin(security_origin).GetURL()),
+      std::make_unique<RenderMediaLog>(url::Origin(security_origin).GetURL()),
       CreateMediaStreamRendererFactory(), render_thread->GetIOTaskRunner(),
       compositor_task_runner, render_thread->GetMediaThreadTaskRunner(),
       render_thread->GetWorkerTaskRunner(), render_thread->GetGpuFactories(),
diff --git a/content/renderer/media/media_stream_audio_processor.cc b/content/renderer/media/media_stream_audio_processor.cc
index 22f5276..d2b3671 100644
--- a/content/renderer/media/media_stream_audio_processor.cc
+++ b/content/renderer/media/media_stream_audio_processor.cc
@@ -507,7 +507,7 @@
     // information then will not be properly updated.
     echo_information_.reset();
   } else {
-    echo_information_ = base::MakeUnique<EchoInformation>();
+    echo_information_ = std::make_unique<EchoInformation>();
   }
 }
 
@@ -684,7 +684,7 @@
     if (!apm_config.echo_canceller3.enabled) {
       // Prepare for logging echo information. If there are data remaining in
       // |echo_information_| we simply discard it.
-      echo_information_ = base::MakeUnique<EchoInformation>();
+      echo_information_ = std::make_unique<EchoInformation>();
     } else {
       // Do not log any echo information when AEC3 is active, as the echo
       // information then will not be properly updated.
diff --git a/content/renderer/media/media_stream_dispatcher_unittest.cc b/content/renderer/media/media_stream_dispatcher_unittest.cc
index 95bec79..71f99fa 100644
--- a/content/renderer/media/media_stream_dispatcher_unittest.cc
+++ b/content/renderer/media/media_stream_dispatcher_unittest.cc
@@ -91,8 +91,8 @@
 class MediaStreamDispatcherTest : public ::testing::Test {
  public:
   MediaStreamDispatcherTest()
-      : dispatcher_(base::MakeUnique<MediaStreamDispatcher>(nullptr)),
-        handler_(base::MakeUnique<MockMediaStreamDispatcherEventHandler>()),
+      : dispatcher_(std::make_unique<MediaStreamDispatcher>(nullptr)),
+        handler_(std::make_unique<MockMediaStreamDispatcherEventHandler>()),
         controls_(true, true),
         security_origin_(url::Origin::Create(GURL("http://test.com"))) {
     mojom::MediaStreamDispatcherHostPtr dispatcher_host =
diff --git a/content/renderer/media/media_stream_video_capturer_source_unittest.cc b/content/renderer/media/media_stream_video_capturer_source_unittest.cc
index 380e2c0..c98e882 100644
--- a/content/renderer/media/media_stream_video_capturer_source_unittest.cc
+++ b/content/renderer/media/media_stream_video_capturer_source_unittest.cc
@@ -105,7 +105,7 @@
             base::test::ScopedTaskEnvironment::MainThreadType::UI),
         child_process_(new ChildProcess()),
         source_stopped_(false) {
-    auto delegate = base::MakeUnique<MockVideoCapturerSource>();
+    auto delegate = std::make_unique<MockVideoCapturerSource>();
     delegate_ = delegate.get();
     EXPECT_CALL(*delegate_, GetPreferredFormats());
     source_ = new MediaStreamVideoCapturerSource(
diff --git a/content/renderer/media/media_stream_video_source.cc b/content/renderer/media/media_stream_video_source.cc
index 66f2274..f47e0ed 100644
--- a/content/renderer/media/media_stream_video_source.cc
+++ b/content/renderer/media/media_stream_video_source.cc
@@ -56,7 +56,7 @@
 
   pending_tracks_.push_back(PendingTrackInfo(
       track, frame_callback,
-      base::MakeUnique<VideoTrackAdapterSettings>(track_adapter_settings),
+      std::make_unique<VideoTrackAdapterSettings>(track_adapter_settings),
       callback));
 
   switch (state_) {
diff --git a/content/renderer/media/media_stream_video_track.cc b/content/renderer/media/media_stream_video_track.cc
index 38bf137..35996b9 100644
--- a/content/renderer/media/media_stream_video_track.cc
+++ b/content/renderer/media/media_stream_video_track.cc
@@ -258,7 +258,7 @@
       frame_deliverer_(
           new MediaStreamVideoTrack::FrameDeliverer(source->io_task_runner(),
                                                     enabled)),
-      adapter_settings_(base::MakeUnique<VideoTrackAdapterSettings>(
+      adapter_settings_(std::make_unique<VideoTrackAdapterSettings>(
           VideoTrackAdapterSettings())),
       is_screencast_(false),
       source_(source->GetWeakPtr()) {
@@ -282,7 +282,7 @@
           new MediaStreamVideoTrack::FrameDeliverer(source->io_task_runner(),
                                                     enabled)),
       adapter_settings_(
-          base::MakeUnique<VideoTrackAdapterSettings>(adapter_settings)),
+          std::make_unique<VideoTrackAdapterSettings>(adapter_settings)),
       noise_reduction_(noise_reduction),
       is_screencast_(is_screen_cast),
       min_frame_rate_(min_frame_rate),
diff --git a/content/renderer/media/mojo_audio_output_ipc_unittest.cc b/content/renderer/media/mojo_audio_output_ipc_unittest.cc
index 4973b695..c5624ace 100644
--- a/content/renderer/media/mojo_audio_output_ipc_unittest.cc
+++ b/content/renderer/media/mojo_audio_output_ipc_unittest.cc
@@ -204,7 +204,7 @@
   StrictMock<MockDelegate> delegate;
 
   std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(NullAccessor());
+      std::make_unique<MojoAudioOutputIPC>(NullAccessor());
 
   EXPECT_CALL(delegate,
               OnDeviceAuthorized(media::OUTPUT_DEVICE_STATUS_ERROR_INTERNAL, _,
@@ -224,9 +224,9 @@
   StrictMock<MockDelegate> delegate;
 
   const std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
   stream_factory.PrepareProviderForAuthorization(
-      kSessionId, kDeviceId, base::MakeUnique<TestStreamProvider>(nullptr));
+      kSessionId, kDeviceId, std::make_unique<TestStreamProvider>(nullptr));
 
   ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
 
@@ -246,9 +246,9 @@
   StrictMock<MockDelegate> delegate;
 
   const std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
   stream_factory.PrepareProviderForAuthorization(
-      kSessionId, kDeviceId, base::MakeUnique<TestStreamProvider>(&stream));
+      kSessionId, kDeviceId, std::make_unique<TestStreamProvider>(&stream));
 
   ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
   ipc->CreateStream(&delegate, Params());
@@ -270,7 +270,7 @@
   StrictMock<MockStream> stream;
   StrictMock<MockDelegate> delegate;
   const std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
 
   // Note: This call implicitly EXPECTs that authorization is requested,
   // and constructing the TestStreamProvider with a |&stream| EXPECTs that the
@@ -278,7 +278,7 @@
   // device and no session id.
   stream_factory.PrepareProviderForAuthorization(
       0, std::string(media::AudioDeviceDescription::kDefaultDeviceId),
-      base::MakeUnique<TestStreamProvider>(&stream));
+      std::make_unique<TestStreamProvider>(&stream));
 
   ipc->CreateStream(&delegate, Params());
 
@@ -296,11 +296,11 @@
   StrictMock<MockDelegate> delegate;
 
   const std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
 
   for (int i = 0; i < 5; ++i) {
     stream_factory.PrepareProviderForAuthorization(
-        kSessionId, kDeviceId, base::MakeUnique<TestStreamProvider>(&stream));
+        kSessionId, kDeviceId, std::make_unique<TestStreamProvider>(&stream));
 
     ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
     ipc->CreateStream(&delegate, Params());
@@ -325,10 +325,10 @@
   StrictMock<MockDelegate> delegate;
 
   const std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
 
   stream_factory.PrepareProviderForAuthorization(
-      kSessionId, kDeviceId, base::MakeUnique<TestStreamProvider>(nullptr));
+      kSessionId, kDeviceId, std::make_unique<TestStreamProvider>(nullptr));
   ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
 
   EXPECT_CALL(delegate, OnDeviceAuthorized(
@@ -346,7 +346,7 @@
 
   for (int i = 0; i < 5; ++i) {
     stream_factory.PrepareProviderForAuthorization(
-        kSessionId, kDeviceId, base::MakeUnique<TestStreamProvider>(&stream));
+        kSessionId, kDeviceId, std::make_unique<TestStreamProvider>(&stream));
 
     ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
     ipc->CreateStream(&delegate, Params());
@@ -375,7 +375,7 @@
   StrictMock<MockDelegate> delegate;
 
   std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
   stream_factory.RefuseNextRequest(kSessionId, kDeviceId);
 
   ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
@@ -404,7 +404,7 @@
   StrictMock<MockDelegate> delegate;
 
   std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
 
   ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
 
@@ -430,11 +430,11 @@
   base::MessageLoopForIO message_loop;
   TestRemoteFactory stream_factory;
   stream_factory.PrepareProviderForAuthorization(
-      kSessionId, kDeviceId, base::MakeUnique<TestStreamProvider>(nullptr));
+      kSessionId, kDeviceId, std::make_unique<TestStreamProvider>(nullptr));
   StrictMock<MockDelegate> delegate;
 
   const std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
 
   ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
 
@@ -456,10 +456,10 @@
   StrictMock<MockDelegate> delegate;
 
   stream_factory.PrepareProviderForAuthorization(
-      kSessionId, kDeviceId, base::MakeUnique<TestStreamProvider>(nullptr));
+      kSessionId, kDeviceId, std::make_unique<TestStreamProvider>(nullptr));
 
   std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
 
   ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
   EXPECT_DCHECK_DEATH(ipc.reset());
@@ -476,10 +476,10 @@
 
   stream_factory.PrepareProviderForAuthorization(
       0, std::string(media::AudioDeviceDescription::kDefaultDeviceId),
-      base::MakeUnique<TestStreamProvider>(&stream));
+      std::make_unique<TestStreamProvider>(&stream));
 
   std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
 
   ipc->CreateStream(&delegate, Params());
   EXPECT_DCHECK_DEATH(ipc.reset());
@@ -495,9 +495,9 @@
   StrictMock<MockDelegate> delegate;
 
   const std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
   stream_factory.PrepareProviderForAuthorization(
-      kSessionId, kDeviceId, base::MakeUnique<TestStreamProvider>(&stream));
+      kSessionId, kDeviceId, std::make_unique<TestStreamProvider>(&stream));
 
   ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
   ipc->CreateStream(&delegate, Params());
@@ -521,9 +521,9 @@
   StrictMock<MockDelegate> delegate;
 
   const std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
   stream_factory.PrepareProviderForAuthorization(
-      kSessionId, kDeviceId, base::MakeUnique<TestStreamProvider>(&stream));
+      kSessionId, kDeviceId, std::make_unique<TestStreamProvider>(&stream));
 
   ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
   ipc->CreateStream(&delegate, Params());
@@ -547,9 +547,9 @@
   StrictMock<MockDelegate> delegate;
 
   const std::unique_ptr<media::AudioOutputIPC> ipc =
-      base::MakeUnique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
+      std::make_unique<MojoAudioOutputIPC>(stream_factory.GetAccessor());
   stream_factory.PrepareProviderForAuthorization(
-      kSessionId, kDeviceId, base::MakeUnique<TestStreamProvider>(&stream));
+      kSessionId, kDeviceId, std::make_unique<TestStreamProvider>(&stream));
 
   ipc->RequestDeviceAuthorization(&delegate, kSessionId, kDeviceId, Origin());
   ipc->CreateStream(&delegate, Params());
diff --git a/content/renderer/media/peer_connection_tracker.cc b/content/renderer/media/peer_connection_tracker.cc
index 5d09c4b..1a6ae87 100644
--- a/content/renderer/media/peer_connection_tracker.cc
+++ b/content/renderer/media/peer_connection_tracker.cc
@@ -256,7 +256,7 @@
   if (report.values().empty())
     return NULL;
 
-  auto values = base::MakeUnique<base::ListValue>();
+  auto values = std::make_unique<base::ListValue>();
 
   for (const auto& v : report.values()) {
     const StatsReport::ValuePtr& value = v.second;
@@ -286,7 +286,7 @@
     }
   }
 
-  auto dict = base::MakeUnique<base::DictionaryValue>();
+  auto dict = std::make_unique<base::DictionaryValue>();
   dict->SetDouble("timestamp", report.timestamp());
   dict->Set("values", std::move(values));
 
@@ -304,7 +304,7 @@
   // Note:
   // The format must be consistent with what webrtc_internals.js expects.
   // If you change it here, you must change webrtc_internals.js as well.
-  auto result = base::MakeUnique<base::DictionaryValue>();
+  auto result = std::make_unique<base::DictionaryValue>();
   result->Set("stats", std::move(stats));
   result->SetString("id", report.id()->ToString());
   result->SetString("type", report.TypeToString());
diff --git a/content/renderer/media/rtc_certificate_generator.cc b/content/renderer/media/rtc_certificate_generator.cc
index 5a20327..f79b214 100644
--- a/content/renderer/media/rtc_certificate_generator.cc
+++ b/content/renderer/media/rtc_certificate_generator.cc
@@ -95,7 +95,7 @@
         base::BindOnce(
             &RTCCertificateGeneratorRequest::DoCallbackOnMainThread, this,
             base::Passed(std::move(observer)),
-            base::Passed(base::MakeUnique<RTCCertificate>(certificate))));
+            base::Passed(std::make_unique<RTCCertificate>(certificate))));
   }
 
   void DoCallbackOnMainThread(
@@ -168,7 +168,7 @@
           pem_private_key.Utf8(), pem_certificate.Utf8()));
   if (!certificate)
     return nullptr;
-  return base::MakeUnique<RTCCertificate>(certificate);
+  return std::make_unique<RTCCertificate>(certificate);
 }
 
 }  // namespace content
diff --git a/content/renderer/media/rtc_peer_connection_handler.cc b/content/renderer/media/rtc_peer_connection_handler.cc
index 4475002..f6c0a24e 100644
--- a/content/renderer/media/rtc_peer_connection_handler.cc
+++ b/content/renderer/media/rtc_peer_connection_handler.cc
@@ -1754,7 +1754,7 @@
       }
       it = rtp_senders_
                .insert(std::make_pair(
-                   id, base::MakeUnique<RTCRtpSender>(
+                   id, std::make_unique<RTCRtpSender>(
                            webrtc_senders[i].get(), std::move(track_adapter))))
                .first;
     }
@@ -1808,7 +1808,7 @@
   auto it = rtp_senders_
                 .insert(std::make_pair(
                     webrtc_sender_id,
-                    base::MakeUnique<RTCRtpSender>(std::move(webrtc_sender),
+                    std::make_unique<RTCRtpSender>(std::move(webrtc_sender),
                                                    std::move(track_adapter),
                                                    std::move(stream_adapters))))
                 .first;
@@ -2056,7 +2056,7 @@
       rtp_receivers_
           .insert(std::make_pair(
               receiver_id,
-              base::MakeUnique<RTCRtpReceiver>(
+              std::make_unique<RTCRtpReceiver>(
                   webrtc_receiver.get(), std::move(remote_track_adapter_ref),
                   std::move(remote_stream_adapter_refs))))
           .first->second;
diff --git a/content/renderer/media/user_media_client_impl.cc b/content/renderer/media/user_media_client_impl.cc
index e046cdc..c4655ef 100644
--- a/content/renderer/media/user_media_client_impl.cc
+++ b/content/renderer/media/user_media_client_impl.cc
@@ -100,7 +100,7 @@
     const scoped_refptr<base::TaskRunner>& worker_task_runner)
     : UserMediaClientImpl(
           render_frame,
-          base::MakeUnique<UserMediaProcessor>(
+          std::make_unique<UserMediaProcessor>(
               render_frame,
               dependency_factory,
               std::move(media_stream_dispatcher),
@@ -149,7 +149,7 @@
   // make decisions about the permissions UI. Its value can be lost while
   // switching threads, so saving its value here.
   std::unique_ptr<UserMediaRequest> request_info =
-      base::MakeUnique<UserMediaRequest>(
+      std::make_unique<UserMediaRequest>(
           request_id, web_request,
           blink::WebUserGestureIndicator::IsProcessingUserGesture());
   pending_request_infos_.push_back(Request(std::move(request_info)));
diff --git a/content/renderer/media/user_media_client_impl_unittest.cc b/content/renderer/media/user_media_client_impl_unittest.cc
index 0f1522f1..fdfb9b1 100644
--- a/content/renderer/media/user_media_client_impl_unittest.cc
+++ b/content/renderer/media/user_media_client_impl_unittest.cc
@@ -475,7 +475,7 @@
         dependency_factory_.get(), base::WrapUnique(ms_dispatcher_),
         std::move(user_media_processor_host_proxy), &state_),
 
-    user_media_client_impl_ = base::MakeUnique<UserMediaClientImplUnderTest>(
+    user_media_client_impl_ = std::make_unique<UserMediaClientImplUnderTest>(
         user_media_processor_, &state_);
     ::mojom::MediaDevicesDispatcherHostPtr user_media_client_host_proxy;
     binding_user_media_client_.Bind(
diff --git a/content/renderer/media/user_media_processor.cc b/content/renderer/media/user_media_processor.cc
index 3c79c28..9cbf15e 100644
--- a/content/renderer/media/user_media_processor.cc
+++ b/content/renderer/media/user_media_processor.cc
@@ -351,7 +351,7 @@
   DCHECK(!request_completed_cb_);
   DCHECK(!current_request_info_);
   request_completed_cb_ = std::move(callback);
-  current_request_info_ = base::MakeUnique<RequestInfo>(std::move(request));
+  current_request_info_ = std::make_unique<RequestInfo>(std::move(request));
   // TODO(guidou): Set up audio and video in parallel.
   if (current_request_info_->web_request().Audio()) {
     SetupAudioInput();
diff --git a/content/renderer/media/video_capture_impl_manager_unittest.cc b/content/renderer/media/video_capture_impl_manager_unittest.cc
index f9b48d72..58765ea 100644
--- a/content/renderer/media/video_capture_impl_manager_unittest.cc
+++ b/content/renderer/media/video_capture_impl_manager_unittest.cc
@@ -111,7 +111,7 @@
  private:
   std::unique_ptr<VideoCaptureImpl> CreateVideoCaptureImplForTesting(
       media::VideoCaptureSessionId session_id) const override {
-    auto video_capture_impl = base::MakeUnique<MockVideoCaptureImpl>(
+    auto video_capture_impl = std::make_unique<MockVideoCaptureImpl>(
         session_id, pause_callback_, stop_capture_callback_);
     video_capture_impl->SetVideoCaptureHostForTesting(video_capture_impl.get());
     return std::move(video_capture_impl);
diff --git a/content/renderer/media/video_track_adapter.cc b/content/renderer/media/video_track_adapter.cc
index 9591614..7aad8d6e 100644
--- a/content/renderer/media/video_track_adapter.cc
+++ b/content/renderer/media/video_track_adapter.cc
@@ -208,7 +208,7 @@
       // Make sure the VideoCaptureDeliverFrameCB is released on the main
       // render thread since it was added on the main render thread in
       // VideoTrackAdapter::AddTrack.
-      ret = base::MakeUnique<VideoCaptureDeliverFrameCB>(it->second);
+      ret = std::make_unique<VideoCaptureDeliverFrameCB>(it->second);
       callbacks_.erase(it);
       break;
     }
diff --git a/content/renderer/media/webmediaplayer_ms_unittest.cc b/content/renderer/media/webmediaplayer_ms_unittest.cc
index 480d7827..eb3f386 100644
--- a/content/renderer/media/webmediaplayer_ms_unittest.cc
+++ b/content/renderer/media/webmediaplayer_ms_unittest.cc
@@ -455,7 +455,7 @@
             nullptr,
             this,
             &delegate_,
-            base::MakeUnique<media::MediaLog>(),
+            std::make_unique<media::MediaLog>(),
             std::unique_ptr<MediaStreamRendererFactory>(render_factory_),
             message_loop_.task_runner(),
             message_loop_.task_runner(),
diff --git a/content/renderer/media/webrtc/media_stream_track_metrics.cc b/content/renderer/media/webrtc/media_stream_track_metrics.cc
index a4b708c3..e340bd0b 100644
--- a/content/renderer/media/webrtc/media_stream_track_metrics.cc
+++ b/content/renderer/media/webrtc/media_stream_track_metrics.cc
@@ -279,7 +279,7 @@
                                         MediaStreamInterface* stream) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   observers_.push_back(
-      base::MakeUnique<MediaStreamTrackMetricsObserver>(type, stream, this));
+      std::make_unique<MediaStreamTrackMetricsObserver>(type, stream, this));
   SendLifeTimeMessageDependingOnIceState(observers_.back().get());
 }
 
diff --git a/content/renderer/media/webrtc/peer_connection_dependency_factory.cc b/content/renderer/media/webrtc/peer_connection_dependency_factory.cc
index 1ffa300..d7f57d9a 100644
--- a/content/renderer/media/webrtc/peer_connection_dependency_factory.cc
+++ b/content/renderer/media/webrtc/peer_connection_dependency_factory.cc
@@ -126,7 +126,7 @@
   // webKitRTCPeerConnection.
   UpdateWebRTCMethodCount(WEBKIT_RTC_PEER_CONNECTION);
 
-  return base::MakeUnique<RTCPeerConnectionHandler>(client, this);
+  return std::make_unique<RTCPeerConnectionHandler>(client, this);
 }
 
 const scoped_refptr<webrtc::PeerConnectionFactoryInterface>&
diff --git a/content/renderer/media/webrtc/rtc_rtp_receiver.cc b/content/renderer/media/webrtc/rtc_rtp_receiver.cc
index d89a692f..9f7e06b 100644
--- a/content/renderer/media/webrtc/rtc_rtp_receiver.cc
+++ b/content/renderer/media/webrtc/rtc_rtp_receiver.cc
@@ -36,7 +36,7 @@
   for (size_t i = 0; i < stream_adapter_refs_.size(); ++i) {
     stream_adapter_ref_copies[i] = stream_adapter_refs_[i]->Copy();
   }
-  return base::MakeUnique<RTCRtpReceiver>(webrtc_rtp_receiver_,
+  return std::make_unique<RTCRtpReceiver>(webrtc_rtp_receiver_,
                                           track_adapter_->Copy(),
                                           std::move(stream_adapter_ref_copies));
 }
@@ -64,7 +64,7 @@
   blink::WebVector<std::unique_ptr<blink::WebRTCRtpContributingSource>> sources(
       webrtc_sources.size());
   for (size_t i = 0; i < webrtc_sources.size(); ++i) {
-    sources[i] = base::MakeUnique<RTCRtpContributingSource>(webrtc_sources[i]);
+    sources[i] = std::make_unique<RTCRtpContributingSource>(webrtc_sources[i]);
   }
   return sources;
 }
diff --git a/content/renderer/media/webrtc/rtc_rtp_sender.cc b/content/renderer/media/webrtc/rtc_rtp_sender.cc
index 21f59685..08c7498 100644
--- a/content/renderer/media/webrtc/rtc_rtp_sender.cc
+++ b/content/renderer/media/webrtc/rtc_rtp_sender.cc
@@ -60,7 +60,7 @@
   for (size_t i = 0; i < stream_adapters_.size(); ++i) {
     stream_adapter_copies[i] = stream_adapters_[i]->Copy();
   }
-  return base::MakeUnique<RTCRtpSender>(webrtc_rtp_sender_,
+  return std::make_unique<RTCRtpSender>(webrtc_rtp_sender_,
                                         track_adapter_->Copy(),
                                         std::move(stream_adapter_copies));
 }
diff --git a/content/renderer/media/webrtc/webrtc_media_stream_adapter.cc b/content/renderer/media/webrtc/webrtc_media_stream_adapter.cc
index 90038f3..d5b41c3 100644
--- a/content/renderer/media/webrtc/webrtc_media_stream_adapter.cc
+++ b/content/renderer/media/webrtc/webrtc_media_stream_adapter.cc
@@ -24,7 +24,7 @@
     PeerConnectionDependencyFactory* factory,
     scoped_refptr<WebRtcMediaStreamTrackAdapterMap> track_adapter_map,
     const blink::WebMediaStream& web_stream) {
-  return base::MakeUnique<LocalWebRtcMediaStreamAdapter>(
+  return std::make_unique<LocalWebRtcMediaStreamAdapter>(
       factory, std::move(track_adapter_map), web_stream);
 }
 
@@ -34,7 +34,7 @@
     scoped_refptr<base::SingleThreadTaskRunner> main_thread,
     scoped_refptr<WebRtcMediaStreamTrackAdapterMap> track_adapter_map,
     scoped_refptr<webrtc::MediaStreamInterface> webrtc_stream) {
-  return base::MakeUnique<RemoteWebRtcMediaStreamAdapter>(
+  return std::make_unique<RemoteWebRtcMediaStreamAdapter>(
       std::move(main_thread), std::move(track_adapter_map),
       std::move(webrtc_stream));
 }
diff --git a/content/renderer/media_capture_from_element/html_video_element_capturer_source.cc b/content/renderer/media_capture_from_element/html_video_element_capturer_source.cc
index 1d1e3ca5..6edea073 100644
--- a/content/renderer/media_capture_from_element/html_video_element_capturer_source.cc
+++ b/content/renderer/media_capture_from_element/html_video_element_capturer_source.cc
@@ -90,7 +90,7 @@
     running_callback_.Run(false);
     return;
   }
-  canvas_ = base::MakeUnique<cc::SkiaPaintCanvas>(bitmap_);
+  canvas_ = std::make_unique<cc::SkiaPaintCanvas>(bitmap_);
 
   new_frame_callback_ = new_frame_callback;
   // Force |capture_frame_rate_| to be in between k{Min,Max}FramesPerSecond.
diff --git a/content/renderer/media_recorder/video_track_recorder.cc b/content/renderer/media_recorder/video_track_recorder.cc
index 1ec08a0..da7f868 100644
--- a/content/renderer/media_recorder/video_track_recorder.cc
+++ b/content/renderer/media_recorder/video_track_recorder.cc
@@ -285,7 +285,7 @@
     if (!canvas_ || canvas_->imageInfo().width() != info.width() ||
         canvas_->imageInfo().height() != info.height()) {
       bitmap_.allocPixels(info);
-      canvas_ = base::MakeUnique<cc::SkiaPaintCanvas>(bitmap_);
+      canvas_ = std::make_unique<cc::SkiaPaintCanvas>(bitmap_);
     }
     if (!video_renderer_)
       video_renderer_.reset(new media::PaintCanvasVideoRenderer);
diff --git a/content/renderer/mus/mus_embedded_frame.cc b/content/renderer/mus/mus_embedded_frame.cc
index a49a33c..f98d7db 100644
--- a/content/renderer/mus/mus_embedded_frame.cc
+++ b/content/renderer/mus/mus_embedded_frame.cc
@@ -59,7 +59,7 @@
       delegate_(delegate),
       window_id_(window_id) {
   if (!window_tree()) {
-    pending_state_ = base::MakeUnique<PendingState>();
+    pending_state_ = std::make_unique<PendingState>();
     pending_state_->token = token;
     return;
   }
diff --git a/content/renderer/mus/render_widget_window_tree_client_factory.cc b/content/renderer/mus/render_widget_window_tree_client_factory.cc
index 92c9d0d..d413d47 100644
--- a/content/renderer/mus/render_widget_window_tree_client_factory.cc
+++ b/content/renderer/mus/render_widget_window_tree_client_factory.cc
@@ -86,7 +86,7 @@
 void CreateRenderWidgetWindowTreeClientFactory(
     ServiceManagerConnection* connection) {
   connection->AddConnectionFilter(
-      base::MakeUnique<RenderWidgetWindowTreeClientFactoryImpl>());
+      std::make_unique<RenderWidgetWindowTreeClientFactoryImpl>());
 }
 
 }  // namespace content
diff --git a/content/renderer/mus/renderer_window_tree_client.cc b/content/renderer/mus/renderer_window_tree_client.cc
index a681b97..f6b2a90 100644
--- a/content/renderer/mus/renderer_window_tree_client.cc
+++ b/content/renderer/mus/renderer_window_tree_client.cc
@@ -133,9 +133,9 @@
   params.pipes.compositor_frame_sink_info = std::move(sink_info);
   params.pipes.client_request = std::move(client_request);
   params.local_surface_id_provider =
-      base::MakeUnique<viz::DefaultLocalSurfaceIdProvider>();
+      std::make_unique<viz::DefaultLocalSurfaceIdProvider>();
   params.enable_surface_synchronization = true;
-  auto frame_sink = base::MakeUnique<viz::ClientLayerTreeFrameSink>(
+  auto frame_sink = std::make_unique<viz::ClientLayerTreeFrameSink>(
       std::move(context_provider), nullptr /* worker_context_provider */,
       &params);
   tree_->AttachCompositorFrameSink(root_window_id_, std::move(sink_request),
diff --git a/content/renderer/pepper/content_decryptor_delegate.cc b/content/renderer/pepper/content_decryptor_delegate.cc
index 4ed5f4e..91a34a1 100644
--- a/content/renderer/pepper/content_decryptor_delegate.cc
+++ b/content/renderer/pepper/content_decryptor_delegate.cc
@@ -845,7 +845,7 @@
   keys_info.reserve(key_count);
   for (uint32_t i = 0; i < key_count; ++i) {
     const auto& info = key_information[i];
-    keys_info.push_back(base::MakeUnique<media::CdmKeyInformation>(
+    keys_info.push_back(std::make_unique<media::CdmKeyInformation>(
         info.key_id, info.key_id_size,
         PpCdmKeyStatusToCdmKeyInformationKeyStatus(info.key_status),
         info.system_code));
diff --git a/content/renderer/pepper/content_renderer_pepper_host_factory.cc b/content/renderer/pepper/content_renderer_pepper_host_factory.cc
index c793504..d859446 100644
--- a/content/renderer/pepper/content_renderer_pepper_host_factory.cc
+++ b/content/renderer/pepper/content_renderer_pepper_host_factory.cc
@@ -126,7 +126,7 @@
     case PpapiHostMsg_Compositor_Create::ID: {
       if (!CanUseCompositorAPI(host_, instance))
         return nullptr;
-      return base::MakeUnique<PepperCompositorHost>(host_, instance, resource);
+      return std::make_unique<PepperCompositorHost>(host_, instance, resource);
     }
     case PpapiHostMsg_FileRef_CreateForFileAPI::ID: {
       PP_Resource file_system;
@@ -136,7 +136,7 @@
         NOTREACHED();
         return nullptr;
       }
-      return base::MakeUnique<PepperFileRefRendererHost>(
+      return std::make_unique<PepperFileRefRendererHost>(
           host_, instance, resource, file_system, internal_path);
     }
     case PpapiHostMsg_FileSystem_Create::ID: {
@@ -146,7 +146,7 @@
         NOTREACHED();
         return nullptr;
       }
-      return base::MakeUnique<PepperFileSystemHost>(host_, instance, resource,
+      return std::make_unique<PepperFileSystemHost>(host_, instance, resource,
                                                     file_system_type);
     }
     case PpapiHostMsg_Graphics2D_Create::ID: {
@@ -176,30 +176,30 @@
           host_, instance, resource, size, is_always_opaque, image_data));
     }
     case PpapiHostMsg_URLLoader_Create::ID:
-      return base::MakeUnique<PepperURLLoaderHost>(host_, false, instance,
+      return std::make_unique<PepperURLLoaderHost>(host_, false, instance,
                                                    resource);
     case PpapiHostMsg_VideoDecoder_Create::ID:
-      return base::MakeUnique<PepperVideoDecoderHost>(host_, instance,
+      return std::make_unique<PepperVideoDecoderHost>(host_, instance,
                                                       resource);
     case PpapiHostMsg_VideoEncoder_Create::ID:
-      return base::MakeUnique<PepperVideoEncoderHost>(host_, instance,
+      return std::make_unique<PepperVideoEncoderHost>(host_, instance,
                                                       resource);
     case PpapiHostMsg_WebSocket_Create::ID:
-      return base::MakeUnique<PepperWebSocketHost>(host_, instance, resource);
+      return std::make_unique<PepperWebSocketHost>(host_, instance, resource);
 #if BUILDFLAG(ENABLE_WEBRTC)
     case PpapiHostMsg_MediaStreamVideoTrack_Create::ID:
-      return base::MakeUnique<PepperMediaStreamVideoTrackHost>(host_, instance,
+      return std::make_unique<PepperMediaStreamVideoTrackHost>(host_, instance,
                                                                resource);
     // These private MediaStream interfaces are exposed as if they were public
     // so they can be used by NaCl plugins. However, they are available only
     // for whitelisted apps.
     case PpapiHostMsg_VideoDestination_Create::ID:
       if (CanUseMediaStreamAPI(host_, instance))
-        return base::MakeUnique<PepperVideoDestinationHost>(host_, instance,
+        return std::make_unique<PepperVideoDestinationHost>(host_, instance,
                                                             resource);
     case PpapiHostMsg_VideoSource_Create::ID:
       if (CanUseMediaStreamAPI(host_, instance))
-        return base::MakeUnique<PepperVideoSourceHost>(host_, instance,
+        return std::make_unique<PepperVideoSourceHost>(host_, instance,
                                                        resource);
 #endif  // BUILDFLAG(ENABLE_WEBRTC)
   }
@@ -208,16 +208,16 @@
   if (GetPermissions().HasPermission(ppapi::PERMISSION_DEV)) {
     switch (message.type()) {
       case PpapiHostMsg_AudioEncoder_Create::ID:
-        return base::MakeUnique<PepperAudioEncoderHost>(host_, instance,
+        return std::make_unique<PepperAudioEncoderHost>(host_, instance,
                                                         resource);
       case PpapiHostMsg_AudioInput_Create::ID:
-        return base::MakeUnique<PepperAudioInputHost>(host_, instance,
+        return std::make_unique<PepperAudioInputHost>(host_, instance,
                                                       resource);
       case PpapiHostMsg_AudioOutput_Create::ID:
-        return base::MakeUnique<PepperAudioOutputHost>(host_, instance,
+        return std::make_unique<PepperAudioOutputHost>(host_, instance,
                                                        resource);
       case PpapiHostMsg_FileChooser_Create::ID:
-        return base::MakeUnique<PepperFileChooserHost>(host_, instance,
+        return std::make_unique<PepperFileChooserHost>(host_, instance,
                                                        resource);
       case PpapiHostMsg_VideoCapture_Create::ID: {
         std::unique_ptr<PepperVideoCaptureHost> host(
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc
index cd63a05..ee4876f 100644
--- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
+++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
@@ -311,7 +311,7 @@
 // is not modified.
 std::unique_ptr<const char* []> StringVectorToArgArray(
     const std::vector<std::string>& vector) {
-  auto array = base::MakeUnique<const char* []>(vector.size());
+  auto array = std::make_unique<const char* []>(vector.size());
   for (size_t i = 0; i < vector.size(); ++i)
     array[i] = vector[i].c_str();
   return array;
@@ -445,7 +445,7 @@
   if (finished_loading_)
     return;
 
-  error_ = base::MakeUnique<WebURLError>(error);
+  error_ = std::make_unique<WebURLError>(error);
 }
 
 PepperPluginInstanceImpl::GamepadImpl::GamepadImpl()
@@ -525,7 +525,7 @@
       isolate_(v8::Isolate::GetCurrent()),
       is_deleted_(false),
       initialized_(false),
-      audio_controller_(base::MakeUnique<PepperAudioController>(this)),
+      audio_controller_(std::make_unique<PepperAudioController>(this)),
       view_change_weak_ptr_factory_(this),
       weak_factory_(this) {
   pp_instance_ = HostGlobals::Get()->AddInstance(this);
@@ -892,7 +892,7 @@
     // The external proxy isn't available, so save the response and record
     // document load notifications for later replay.
     external_document_response_ = response;
-    external_document_loader_ = base::MakeUnique<ExternalDocumentLoader>();
+    external_document_loader_ = std::make_unique<ExternalDocumentLoader>();
     document_loader_ = external_document_loader_.get();
     return true;
   }
@@ -911,7 +911,7 @@
   // call into the instance and expect it to be valid.
   RendererPpapiHostImpl* host_impl = module_->renderer_ppapi_host();
   auto loader_host =
-      base::MakeUnique<PepperURLLoaderHost>(host_impl, true, pp_instance(), 0);
+      std::make_unique<PepperURLLoaderHost>(host_impl, true, pp_instance(), 0);
   // TODO(teravest): Remove set_document_loader() from instance and clean up
   // this relationship.
   set_document_loader(loader_host.get());
@@ -2177,7 +2177,7 @@
       texture_layer_->SetFlipped(false);
     }
 
-    auto layer = base::MakeUnique<cc_blink::WebLayerImpl>(texture_layer_);
+    auto layer = std::make_unique<cc_blink::WebLayerImpl>(texture_layer_);
     // Ignore transparency in fullscreen, since that's what Flash always
     // wants to do, and that lets it not recreate a context if
     // wmode=transparent was specified.
@@ -2187,7 +2187,7 @@
     web_layer_ = std::move(layer);
   } else if (want_compositor_layer) {
     compositor_layer_ = bound_compositor_->layer();
-    web_layer_ = base::MakeUnique<cc_blink::WebLayerImpl>(compositor_layer_);
+    web_layer_ = std::make_unique<cc_blink::WebLayerImpl>(compositor_layer_);
   }
 
   if (web_layer_) {
@@ -2372,7 +2372,7 @@
   if (!plugin_decryption_interface)
     return nullptr;
 
-  content_decryptor_delegate_ = base::MakeUnique<ContentDecryptorDelegate>(
+  content_decryptor_delegate_ = std::make_unique<ContentDecryptorDelegate>(
       pp_instance_, plugin_decryption_interface);
   return content_decryptor_delegate_.get();
 }
@@ -2860,7 +2860,7 @@
     return PP_FALSE;
 
   if (type != PP_MOUSECURSOR_TYPE_CUSTOM) {
-    DoSetCursor(base::MakeUnique<WebCursorInfo>(
+    DoSetCursor(std::make_unique<WebCursorInfo>(
         static_cast<WebCursorInfo::Type>(type)));
     return PP_TRUE;
   }
@@ -2876,7 +2876,7 @@
     return PP_FALSE;
 
   auto custom_cursor =
-      base::MakeUnique<WebCursorInfo>(WebCursorInfo::kTypeCustom);
+      std::make_unique<WebCursorInfo>(WebCursorInfo::kTypeCustom);
   custom_cursor->hot_spot.x = hot_spot->x;
   custom_cursor->hot_spot.y = hot_spot->y;
 
@@ -3434,7 +3434,7 @@
 MouseLockDispatcher::LockTarget*
 PepperPluginInstanceImpl::GetOrCreateLockTargetAdapter() {
   if (!lock_target_)
-    lock_target_ = base::MakeUnique<PluginInstanceLockTarget>(this);
+    lock_target_ = std::make_unique<PluginInstanceLockTarget>(this);
   return lock_target_.get();
 }
 
diff --git a/content/renderer/pepper/pepper_url_loader_host.cc b/content/renderer/pepper/pepper_url_loader_host.cc
index a5e2630..42aafc7 100644
--- a/content/renderer/pepper/pepper_url_loader_host.cc
+++ b/content/renderer/pepper/pepper_url_loader_host.cc
@@ -163,7 +163,7 @@
   bytes_received_ += data_length;
   UpdateProgress();
 
-  auto message = base::MakeUnique<PpapiPluginMsg_URLLoader_SendData>();
+  auto message = std::make_unique<PpapiPluginMsg_URLLoader_SendData>();
   message->WriteData(data, data_length);
   SendUpdateToPlugin(std::move(message));
 }
@@ -171,7 +171,7 @@
 void PepperURLLoaderHost::DidFinishLoading(double finish_time) {
   // Note that |loader| will be NULL for document loads.
   SendUpdateToPlugin(
-      base::MakeUnique<PpapiPluginMsg_URLLoader_FinishedLoading>(PP_OK));
+      std::make_unique<PpapiPluginMsg_URLLoader_FinishedLoading>(PP_OK));
 }
 
 void PepperURLLoaderHost::DidFail(const WebURLError& error) {
@@ -191,7 +191,7 @@
   if (error.is_web_security_violation)
     pp_error = PP_ERROR_NOACCESS;
   SendUpdateToPlugin(
-      base::MakeUnique<PpapiPluginMsg_URLLoader_FinishedLoading>(pp_error));
+      std::make_unique<PpapiPluginMsg_URLLoader_FinishedLoading>(pp_error));
 }
 
 void PepperURLLoaderHost::DidConnectPendingHostToResource() {
@@ -212,7 +212,7 @@
 
   if (ret != PP_OK)
     SendUpdateToPlugin(
-        base::MakeUnique<PpapiPluginMsg_URLLoader_FinishedLoading>(ret));
+        std::make_unique<PpapiPluginMsg_URLLoader_FinishedLoading>(ret));
   return PP_OK;
 }
 
@@ -420,7 +420,7 @@
 void PepperURLLoaderHost::DidDataFromWebURLResponse(
     const ppapi::URLResponseInfoData& data) {
   SendUpdateToPlugin(
-      base::MakeUnique<PpapiPluginMsg_URLLoader_ReceivedResponse>(data));
+      std::make_unique<PpapiPluginMsg_URLLoader_ReceivedResponse>(data));
 }
 
 void PepperURLLoaderHost::UpdateProgress() {
@@ -434,7 +434,7 @@
     // flag.
     ppapi::proxy::ResourceMessageReplyParams params;
     SendUpdateToPlugin(
-        base::MakeUnique<PpapiPluginMsg_URLLoader_UpdateProgress>(
+        std::make_unique<PpapiPluginMsg_URLLoader_UpdateProgress>(
             record_upload ? bytes_sent_ : -1,
             record_upload ? total_bytes_to_be_sent_ : -1,
             record_download ? bytes_received_ : -1,
diff --git a/content/renderer/pepper/pepper_video_encoder_host.cc b/content/renderer/pepper/pepper_video_encoder_host.cc
index 08fc906..9381551 100644
--- a/content/renderer/pepper/pepper_video_encoder_host.cc
+++ b/content/renderer/pepper/pepper_video_encoder_host.cc
@@ -404,7 +404,7 @@
       break;
     }
 
-    shm_buffers_.push_back(base::MakeUnique<ShmBuffer>(i, std::move(shm)));
+    shm_buffers_.push_back(std::make_unique<ShmBuffer>(i, std::move(shm)));
   }
 
   // Feed buffers to the encoder.
diff --git a/content/renderer/pepper/ppb_image_data_impl.cc b/content/renderer/pepper/ppb_image_data_impl.cc
index d17f087b..5cb081d 100644
--- a/content/renderer/pepper/ppb_image_data_impl.cc
+++ b/content/renderer/pepper/ppb_image_data_impl.cc
@@ -243,7 +243,7 @@
     skia_bitmap_.setPixels(shared_memory_->memory());
     // Our platform bitmaps are set to opaque by default, which we don't want.
     skia_bitmap_.setAlphaType(kPremul_SkAlphaType);
-    skia_canvas_ = base::MakeUnique<SkCanvas>(skia_bitmap_);
+    skia_canvas_ = std::make_unique<SkCanvas>(skia_bitmap_);
     return skia_bitmap_.getAddr32(0, 0);
   }
   return shared_memory_->memory();
diff --git a/content/renderer/presentation/presentation_dispatcher_unittest.cc b/content/renderer/presentation/presentation_dispatcher_unittest.cc
index ae1e8183..cd948ec 100644
--- a/content/renderer/presentation/presentation_dispatcher_unittest.cc
+++ b/content/renderer/presentation/presentation_dispatcher_unittest.cc
@@ -185,7 +185,7 @@
  private:
   void ConnectToPresentationServiceIfNeeded() override {
     if (!mock_binding_) {
-      mock_binding_ = base::MakeUnique<mojo::Binding<PresentationService>>(
+      mock_binding_ = std::make_unique<mojo::Binding<PresentationService>>(
           mock_presentation_service_,
           mojo::MakeRequest(&presentation_service_));
     }
@@ -319,7 +319,7 @@
 
     EXPECT_CALL(connection, Init()).Times(1);
     dispatcher_.StartPresentation(
-        urls_, base::MakeUnique<TestWebPresentationConnectionCallback>(
+        urls_, std::make_unique<TestWebPresentationConnectionCallback>(
                    url1_, presentation_id_, &connection));
     run_loop.RunUntilIdle();
   }
@@ -342,7 +342,7 @@
           }));
   dispatcher_.StartPresentation(
       urls_,
-      base::MakeUnique<TestWebPresentationConnectionErrorCallback>(
+      std::make_unique<TestWebPresentationConnectionErrorCallback>(
           WebPresentationError::kErrorTypeNoAvailableScreens, error_message));
   run_loop.RunUntilIdle();
 }
@@ -368,7 +368,7 @@
           }));
   dispatcher_.ReconnectPresentation(
       urls_, presentation_id_,
-      base::MakeUnique<TestWebPresentationConnectionErrorCallback>(
+      std::make_unique<TestWebPresentationConnectionErrorCallback>(
           WebPresentationError::kErrorTypeNoAvailableScreens, error_message));
   run_loop.RunUntilIdle();
 }
@@ -394,7 +394,7 @@
     EXPECT_CALL(connection, Init()).Times(1);
     dispatcher_.ReconnectPresentation(
         urls_, presentation_id_,
-        base::MakeUnique<TestWebPresentationConnectionCallback>(
+        std::make_unique<TestWebPresentationConnectionCallback>(
             url1_, presentation_id_, &connection));
     run_loop.RunUntilIdle();
   }
@@ -421,7 +421,7 @@
     EXPECT_CALL(connection, Init()).Times(0);
     dispatcher_.ReconnectPresentation(
         urls_, presentation_id_,
-        base::MakeUnique<TestWebPresentationConnectionCallback>(
+        std::make_unique<TestWebPresentationConnectionCallback>(
             url1_, presentation_id_, nullptr));
     run_loop.RunUntilIdle();
   }
@@ -436,7 +436,7 @@
   }
 
   dispatcher_.GetAvailability(
-      urls_, base::MakeUnique<WebPresentationAvailabilityCallbacks>());
+      urls_, std::make_unique<WebPresentationAvailabilityCallbacks>());
   dispatcher_.OnScreenAvailabilityUpdated(url1_, ScreenAvailability::AVAILABLE);
   run_loop1.RunUntilIdle();
 
@@ -602,7 +602,7 @@
   for (auto* mock_observer : mock_observers_) {
     client()->GetAvailability(
         mock_observer->Urls(),
-        base::MakeUnique<WebPresentationAvailabilityCallbacks>());
+        std::make_unique<WebPresentationAvailabilityCallbacks>());
     client()->StartListening(mock_observer);
   }
   run_loop.RunUntilIdle();
@@ -628,7 +628,7 @@
   for (auto* mock_observer : mock_observers_) {
     client()->GetAvailability(
         mock_observer->Urls(),
-        base::MakeUnique<WebPresentationAvailabilityCallbacks>());
+        std::make_unique<WebPresentationAvailabilityCallbacks>());
 
     client()->StartListening(mock_observer);
   }
@@ -660,7 +660,7 @@
   for (auto* mock_observer : mock_observers_) {
     client()->GetAvailability(
         mock_observer->Urls(),
-        base::MakeUnique<WebPresentationAvailabilityCallbacks>());
+        std::make_unique<WebPresentationAvailabilityCallbacks>());
   }
 
   for (auto* mock_observer : mock_observers_)
@@ -692,7 +692,7 @@
   for (auto* mock_observer : mock_observers_) {
     client()->GetAvailability(
         mock_observer->Urls(),
-        base::MakeUnique<WebPresentationAvailabilityCallbacks>());
+        std::make_unique<WebPresentationAvailabilityCallbacks>());
     client()->StartListening(mock_observer);
   }
 
@@ -729,7 +729,7 @@
   for (auto* mock_observer : mock_observers_) {
     client()->GetAvailability(
         mock_observer->Urls(),
-        base::MakeUnique<WebPresentationAvailabilityCallbacks>());
+        std::make_unique<WebPresentationAvailabilityCallbacks>());
     client()->StartListening(mock_observer);
   }
 
diff --git a/content/renderer/quota_dispatcher.cc b/content/renderer/quota_dispatcher.cc
index 166fdb4e..08b6f98 100644
--- a/content/renderer/quota_dispatcher.cc
+++ b/content/renderer/quota_dispatcher.cc
@@ -146,7 +146,7 @@
 std::unique_ptr<QuotaDispatcher::Callback>
 QuotaDispatcher::CreateWebStorageQuotaCallbacksWrapper(
     blink::WebStorageQuotaCallbacks callbacks) {
-  return base::MakeUnique<WebStorageQuotaDispatcherCallback>(callbacks);
+  return std::make_unique<WebStorageQuotaDispatcherCallback>(callbacks);
 }
 
 void QuotaDispatcher::DidGrantStorageQuota(int request_id,
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 5482cd8..01f954ee 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -1376,7 +1376,7 @@
   new PepperBrowserConnection(this);
 #endif
   shared_worker_repository_ =
-      base::MakeUnique<SharedWorkerRepository>(GetInterfaceProvider());
+      std::make_unique<SharedWorkerRepository>(GetInterfaceProvider());
   GetWebFrame()->SetSharedWorkerRepositoryClient(
       shared_worker_repository_.get());
 
@@ -1416,7 +1416,7 @@
 
 void RenderFrameImpl::InitializeBlameContext(RenderFrameImpl* parent_frame) {
   DCHECK(!blame_context_);
-  blame_context_ = base::MakeUnique<FrameBlameContext>(this, parent_frame);
+  blame_context_ = std::make_unique<FrameBlameContext>(this, parent_frame);
   blame_context_->Initialize();
 }
 
@@ -2241,10 +2241,10 @@
         std::unique_ptr<base::Value> result_value(
             converter.FromV8Value(value, context));
         list.Append(result_value ? std::move(result_value)
-                                 : base::MakeUnique<base::Value>());
+                                 : std::make_unique<base::Value>());
       }
     } else {
-      list.Set(0, base::MakeUnique<base::Value>());
+      list.Set(0, std::make_unique<base::Value>());
     }
     render_frame_impl_.get()->Send(
         new FrameHostMsg_JavaScriptExecuteResponse(routing_id_, id_, list));
@@ -2269,9 +2269,9 @@
       std::unique_ptr<base::Value> result_value(
           converter.FromV8Value(result, context));
       list.Set(0, result_value ? std::move(result_value)
-                               : base::MakeUnique<base::Value>());
+                               : std::make_unique<base::Value>());
     } else {
-      list.Set(0, base::MakeUnique<base::Value>());
+      list.Set(0, std::make_unique<base::Value>());
     }
     Send(new FrameHostMsg_JavaScriptExecuteResponse(routing_id_, id, list));
   }
@@ -2555,7 +2555,7 @@
   }
 
   file_chooser_completions_.push_back(
-      base::MakeUnique<PendingFileChooser>(params, completion));
+      std::make_unique<PendingFileChooser>(params, completion));
   if (file_chooser_completions_.size() == 1) {
     // Actually show the browse dialog when this is the first request.
     Send(new FrameHostMsg_RunFileChooser(routing_id_, params));
@@ -3124,7 +3124,7 @@
   NavigationStateImpl* navigation_state =
       static_cast<NavigationStateImpl*>(document_state->navigation_state());
 
-  return base::MakeUnique<RendererWebApplicationCacheHostImpl>(
+  return std::make_unique<RendererWebApplicationCacheHostImpl>(
       RenderViewImpl::FromWebView(frame_->View()), client,
       RenderThreadImpl::current()->appcache_dispatcher()->backend_proxy(),
       navigation_state->request_params().appcache_host_id, routing_id_);
@@ -3168,7 +3168,7 @@
       GetDefaultURLLoaderFactoryGetter();
   DCHECK(url_loader_factory_getter);
   std::unique_ptr<WorkerFetchContextImpl> worker_fetch_context =
-      base::MakeUnique<WorkerFetchContextImpl>(
+      std::make_unique<WorkerFetchContextImpl>(
           std::move(service_worker_client_request),
           std::move(container_host_ptr_info),
           url_loader_factory_getter->GetClonedInfo());
@@ -3235,7 +3235,7 @@
     // The context can be null when the frame is sandboxed.
     return nullptr;
   }
-  return base::MakeUnique<WebServiceWorkerProviderImpl>(
+  return std::make_unique<WebServiceWorkerProviderImpl>(
       ChildThreadImpl::current()->thread_safe_sender(), provider->context());
 }
 
@@ -5083,7 +5083,7 @@
   }
 
   std::unique_ptr<FrameHostMsg_DidCommitProvisionalLoad_Params> params =
-      base::MakeUnique<FrameHostMsg_DidCommitProvisionalLoad_Params>();
+      std::make_unique<FrameHostMsg_DidCommitProvisionalLoad_Params>();
   params->http_status_code = response.HttpStatusCode();
   params->url_is_unreachable = document_loader->HasUnreachableURL();
   params->method = "GET";
@@ -6482,7 +6482,7 @@
   DCHECK(!web_user_media_client_);
   web_user_media_client_ = new UserMediaClientImpl(
       this, RenderThreadImpl::current()->GetPeerConnectionDependencyFactory(),
-      base::MakeUnique<MediaStreamDispatcher>(this),
+      std::make_unique<MediaStreamDispatcher>(this),
       render_thread->GetWorkerTaskRunner());
   registry_.AddInterface(
       base::Bind(&MediaDevicesListenerImpl::Create, GetRoutingID()));
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index b093ab17..68da79c 100644
--- a/content/renderer/render_frame_proxy.cc
+++ b/content/renderer/render_frame_proxy.cc
@@ -500,7 +500,7 @@
     local_surface_id_ = local_surface_id_allocator_.GenerateId();
 
   if (enable_surface_synchronization_ && frame_sink_id_.is_valid()) {
-    float device_scale_factor = render_widget_->GetOriginalDeviceScaleFactor();
+    float device_scale_factor = screen_info().device_scale_factor;
     viz::SurfaceInfo surface_info(
         viz::SurfaceId(frame_sink_id_, local_surface_id_), device_scale_factor,
         gfx::ScaleToCeiledSize(frame_rect().size(), device_scale_factor));
@@ -512,22 +512,15 @@
       sent_resize_params_->frame_rect != pending_resize_params_.frame_rect;
   bool resize_params_changed = synchronized_params_changed || rect_changed;
 
-  gfx::Rect rect = frame_rect();
-
 #if defined(USE_AURA)
   if (rect_changed && mus_embedded_frame_)
-    mus_embedded_frame_->SetWindowBounds(local_surface_id_, rect);
+    mus_embedded_frame_->SetWindowBounds(local_surface_id_, frame_rect());
 #endif
 
-  if (IsUseZoomForDSFEnabled()) {
-    rect = gfx::ScaleToEnclosingRect(
-        rect, 1.f / render_widget_->GetOriginalDeviceScaleFactor());
-  }
-
   if (resize_params_changed) {
     // Let the browser know about the updated view rect.
-    Send(new FrameHostMsg_UpdateResizeParams(routing_id_, rect, screen_info(),
-                                             local_surface_id_));
+    Send(new FrameHostMsg_UpdateResizeParams(routing_id_, frame_rect(),
+                                             screen_info(), local_surface_id_));
     sent_resize_params_ = pending_resize_params_;
   }
 }
diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_process_impl.cc
index 9056850..c3316088c 100644
--- a/content/renderer/render_process_impl.cc
+++ b/content/renderer/render_process_impl.cc
@@ -70,7 +70,7 @@
   constexpr int kMaxNumThreadsInForegroundBlockingPool = 1;
   constexpr auto kSuggestedReclaimTime = base::TimeDelta::FromSeconds(30);
 
-  return base::MakeUnique<base::TaskScheduler::InitParams>(
+  return std::make_unique<base::TaskScheduler::InitParams>(
       base::SchedulerWorkerPoolParams(kMaxNumThreadsInBackgroundPool,
                                       kSuggestedReclaimTime),
       base::SchedulerWorkerPoolParams(kMaxNumThreadsInBackgroundBlockingPool,
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 6d2643c..8c939879 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -371,7 +371,7 @@
 
 void CreateFrameFactory(mojom::FrameFactoryRequest request,
                         const service_manager::BindSourceInfo& source_info) {
-  mojo::MakeStrongBinding(base::MakeUnique<FrameFactoryImpl>(source_info),
+  mojo::MakeStrongBinding(std::make_unique<FrameFactoryImpl>(source_info),
                           std::move(request));
 }
 
@@ -675,7 +675,7 @@
   GetConnector()->BindInterface(
       mojom::kBrowserServiceName,
       mojo::MakeRequest(&shared_bitmap_allocation_notifier_ptr));
-  shared_bitmap_manager_ = base::MakeUnique<viz::ClientSharedBitmapManager>(
+  shared_bitmap_manager_ = std::make_unique<viz::ClientSharedBitmapManager>(
       viz::mojom::ThreadSafeSharedBitmapAllocationNotifierPtr::Create(
           shared_bitmap_allocation_notifier_ptr.PassInterface(),
           GetChannel()->ipc_task_runner_refptr()));
@@ -789,12 +789,12 @@
 
   {
     auto registry_with_source_info =
-        base::MakeUnique<service_manager::BinderRegistryWithArgs<
+        std::make_unique<service_manager::BinderRegistryWithArgs<
             const service_manager::BindSourceInfo&>>();
     registry_with_source_info->AddInterface(
         base::Bind(&CreateFrameFactory), base::ThreadTaskRunnerHandle::Get());
     GetServiceManagerConnection()->AddConnectionFilter(
-        base::MakeUnique<SimpleConnectionFilterWithSourceInfo>(
+        std::make_unique<SimpleConnectionFilterWithSourceInfo>(
             std::move(registry_with_source_info)));
   }
 
@@ -939,7 +939,7 @@
         mojom::kBrowserServiceName, mojo::MakeRequest(&manager_ptr));
   }
 
-  discardable_shared_memory_manager_ = base::MakeUnique<
+  discardable_shared_memory_manager_ = std::make_unique<
       discardable_memory::ClientDiscardableSharedMemoryManager>(
       std::move(manager_ptr), GetIOTaskRunner());
 
@@ -1675,7 +1675,7 @@
 
 std::unique_ptr<viz::BeginFrameSource>
 RenderThreadImpl::CreateExternalBeginFrameSource(int routing_id) {
-  return base::MakeUnique<CompositorExternalBeginFrameSource>(
+  return std::make_unique<CompositorExternalBeginFrameSource>(
       compositor_message_filter_.get(), sync_message_filter(), routing_id);
 }
 
@@ -1684,8 +1684,8 @@
   base::SingleThreadTaskRunner* compositor_impl_side_task_runner =
       compositor_task_runner_ ? compositor_task_runner_.get()
                               : base::ThreadTaskRunnerHandle::Get().get();
-  return base::MakeUnique<viz::BackToBackBeginFrameSource>(
-      base::MakeUnique<viz::DelayBasedTimeSource>(
+  return std::make_unique<viz::BackToBackBeginFrameSource>(
+      std::make_unique<viz::DelayBasedTimeSource>(
           compositor_impl_side_task_runner));
 }
 
@@ -1984,7 +1984,7 @@
   params.enable_surface_synchronization =
       command_line.HasSwitch(switches::kEnableSurfaceSynchronization);
   params.local_surface_id_provider =
-      base::MakeUnique<RendererLocalSurfaceIdProvider>();
+      std::make_unique<RendererLocalSurfaceIdProvider>();
 
   // In disable gpu vsync mode, also let the renderer tick as fast as it
   // can. The top level begin frame source will also be running as a back
@@ -2029,7 +2029,7 @@
       DCHECK(!layout_test_mode());
       frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request),
                                             std::move(client));
-      callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>(
+      callback.Run(std::make_unique<viz::ClientLayerTreeFrameSink>(
           std::move(vulkan_context_provider), &params));
       return;
     }
@@ -2056,7 +2056,7 @@
     frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request),
                                           std::move(client));
     params.shared_bitmap_manager = shared_bitmap_manager();
-    callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>(
+    callback.Run(std::make_unique<viz::ClientLayerTreeFrameSink>(
         nullptr, nullptr, &params));
     return;
   }
@@ -2115,7 +2115,7 @@
         params.synthetic_begin_frame_source
             ? std::move(params.synthetic_begin_frame_source)
             : CreateExternalBeginFrameSource(routing_id);
-    callback.Run(base::MakeUnique<SynchronousLayerTreeFrameSink>(
+    callback.Run(std::make_unique<SynchronousLayerTreeFrameSink>(
         std::move(context_provider), std::move(worker_context_provider),
         GetGpuMemoryBufferManager(), shared_bitmap_manager(), routing_id,
         g_next_layer_tree_frame_sink_id++, std::move(begin_frame_source),
@@ -2127,7 +2127,7 @@
   frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request),
                                         std::move(client));
   params.gpu_memory_buffer_manager = GetGpuMemoryBufferManager();
-  callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>(
+  callback.Run(std::make_unique<viz::ClientLayerTreeFrameSink>(
       std::move(context_provider), std::move(worker_context_provider),
       &params));
 }
@@ -2155,7 +2155,7 @@
         GetContentClient()->renderer()->OverrideCreateWebMediaStreamCenter(
             client);
     if (!media_stream_center) {
-      media_stream_center = base::MakeUnique<MediaStreamCenter>(
+      media_stream_center = std::make_unique<MediaStreamCenter>(
           client, GetPeerConnectionDependencyFactory());
     }
   }
diff --git a/content/renderer/render_thread_impl_browsertest.cc b/content/renderer/render_thread_impl_browsertest.cc
index 84789f2..9fe89cd 100644
--- a/content/renderer/render_thread_impl_browsertest.cc
+++ b/content/renderer/render_thread_impl_browsertest.cc
@@ -230,7 +230,7 @@
         std::move(renderer_scheduler), test_task_counter);
     cmd->InitFromArgv(old_argv);
 
-    run_loop_ = base::MakeUnique<base::RunLoop>();
+    run_loop_ = std::make_unique<base::RunLoop>();
     test_msg_filter_ = base::MakeRefCounted<QuitOnTestMsgFilter>(
         run_loop_->QuitWhenIdleClosure());
     thread_->AddFilter(test_msg_filter_.get());
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 95165bd..39c758c 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1306,7 +1306,7 @@
 void RenderViewImpl::OnForceRedraw(const ui::LatencyInfo& latency_info) {
   if (RenderWidgetCompositor* rwc = compositor()) {
     rwc->QueueSwapPromise(
-        base::MakeUnique<AlwaysDrawSwapPromise>(latency_info));
+        std::make_unique<AlwaysDrawSwapPromise>(latency_info));
     rwc->SetNeedsForcedRedraw();
   }
 }
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 355666e..992233b 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -542,7 +542,7 @@
   DCHECK(!webwidget_internal_);
   DCHECK_NE(routing_id_, MSG_ROUTING_NONE);
 
-  input_handler_ = base::MakeUnique<RenderWidgetInputHandler>(this, this);
+  input_handler_ = std::make_unique<RenderWidgetInputHandler>(this, this);
 
   if (base::FeatureList::IsEnabled(features::kMojoInputMessages)) {
     RenderThreadImpl* render_thread_impl = RenderThreadImpl::current();
diff --git a/content/renderer/render_widget_unittest.cc b/content/renderer/render_widget_unittest.cc
index 54612db..aea2c27d 100644
--- a/content/renderer/render_widget_unittest.cc
+++ b/content/renderer/render_widget_unittest.cc
@@ -140,7 +140,7 @@
     Init(RenderWidget::ShowCallback(), mock_webwidget());
 
     mojom::WidgetInputHandlerHostPtr widget_input_handler;
-    mock_input_handler_host_ = base::MakeUnique<MockWidgetInputHandlerHost>(
+    mock_input_handler_host_ = std::make_unique<MockWidgetInputHandlerHost>(
         mojo::MakeRequest(&widget_input_handler));
 
     widget_input_handler_manager_->SetWidgetInputHandlerHost(
diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc
index 6c77d2b..da80b50 100644
--- a/content/renderer/renderer_blink_platform_impl.cc
+++ b/content/renderer/renderer_blink_platform_impl.cc
@@ -355,7 +355,7 @@
 std::unique_ptr<blink::WebDataConsumerHandle>
 RendererBlinkPlatformImpl::CreateDataConsumerHandle(
     mojo::ScopedDataPipeConsumerHandle handle) {
-  return base::MakeUnique<WebDataConsumerHandleImpl>(std::move(handle));
+  return std::make_unique<WebDataConsumerHandleImpl>(std::move(handle));
 }
 
 scoped_refptr<ChildURLLoaderFactoryGetter>
@@ -557,11 +557,11 @@
       local_storage_cached_areas_.reset(new LocalStorageCachedAreas(
           RenderThreadImpl::current()->GetStoragePartitionService()));
     }
-    return base::MakeUnique<LocalStorageNamespace>(
+    return std::make_unique<LocalStorageNamespace>(
         local_storage_cached_areas_.get());
   }
 
-  return base::MakeUnique<WebStorageNamespaceImpl>();
+  return std::make_unique<WebStorageNamespaceImpl>();
 }
 
 
@@ -576,7 +576,7 @@
 std::unique_ptr<blink::WebServiceWorkerCacheStorage>
 RendererBlinkPlatformImpl::CreateCacheStorage(
     const blink::WebSecurityOrigin& security_origin) {
-  return base::MakeUnique<WebServiceWorkerCacheStorageImpl>(
+  return std::make_unique<WebServiceWorkerCacheStorageImpl>(
       thread_safe_sender_.get(), security_origin);
 }
 
@@ -819,7 +819,7 @@
   if (accessor)
     return accessor;
 
-  return base::MakeUnique<RendererWebMIDIAccessorImpl>(client);
+  return std::make_unique<RendererWebMIDIAccessorImpl>(client);
 }
 
 void RendererBlinkPlatformImpl::GetPluginList(
@@ -885,7 +885,7 @@
 std::unique_ptr<WebMediaRecorderHandler>
 RendererBlinkPlatformImpl::CreateMediaRecorderHandler() {
 #if BUILDFLAG(ENABLE_WEBRTC)
-  return base::MakeUnique<content::MediaRecorderHandler>();
+  return std::make_unique<content::MediaRecorderHandler>();
 #else
   return nullptr;
 #endif
@@ -915,7 +915,7 @@
 std::unique_ptr<blink::WebRTCCertificateGenerator>
 RendererBlinkPlatformImpl::CreateRTCCertificateGenerator() {
 #if BUILDFLAG(ENABLE_WEBRTC)
-  return base::MakeUnique<RTCCertificateGenerator>();
+  return std::make_unique<RTCCertificateGenerator>();
 #else
   return nullptr;
 #endif  // BUILDFLAG(ENABLE_WEBRTC)
@@ -1004,7 +1004,7 @@
 std::unique_ptr<WebImageCaptureFrameGrabber>
 RendererBlinkPlatformImpl::CreateImageCaptureFrameGrabber() {
 #if BUILDFLAG(ENABLE_WEBRTC)
-  return base::MakeUnique<ImageCaptureFrameGrabber>();
+  return std::make_unique<ImageCaptureFrameGrabber>();
 #else
   return nullptr;
 #endif  // BUILDFLAG(ENABLE_WEBRTC)
@@ -1133,7 +1133,7 @@
           GURL(top_document_web_url), automatic_flushes, support_locking,
           gpu::SharedMemoryLimits(), attributes, share_context,
           ui::command_buffer_metrics::OFFSCREEN_CONTEXT_FOR_WEBGL));
-  return base::MakeUnique<WebGraphicsContext3DProviderImpl>(
+  return std::make_unique<WebGraphicsContext3DProviderImpl>(
       std::move(provider), is_software_rendering);
 }
 
@@ -1160,7 +1160,7 @@
 
   bool is_software_rendering = host->gpu_info().software_rendering;
 
-  return base::MakeUnique<WebGraphicsContext3DProviderImpl>(
+  return std::make_unique<WebGraphicsContext3DProviderImpl>(
       std::move(provider), is_software_rendering);
 }
 
@@ -1237,15 +1237,15 @@
 
   switch (type) {
     case blink::kWebPlatformEventTypeDeviceMotion:
-      return base::MakeUnique<DeviceMotionEventPump>(thread);
+      return std::make_unique<DeviceMotionEventPump>(thread);
     case blink::kWebPlatformEventTypeDeviceOrientation:
-      return base::MakeUnique<DeviceOrientationEventPump>(thread,
+      return std::make_unique<DeviceOrientationEventPump>(thread,
                                                           false /* absolute */);
     case blink::kWebPlatformEventTypeDeviceOrientationAbsolute:
-      return base::MakeUnique<DeviceOrientationEventPump>(thread,
+      return std::make_unique<DeviceOrientationEventPump>(thread,
                                                           true /* absolute */);
     case blink::kWebPlatformEventTypeGamepad:
-      return base::MakeUnique<GamepadSharedMemoryReader>(thread);
+      return std::make_unique<GamepadSharedMemoryReader>(thread);
     default:
       // A default statement is required to prevent compilation errors when
       // Blink adds a new type.
diff --git a/content/renderer/renderer_main_platform_delegate_android.cc b/content/renderer/renderer_main_platform_delegate_android.cc
index dc0ff56e..b433720 100644
--- a/content/renderer/renderer_main_platform_delegate_android.cc
+++ b/content/renderer/renderer_main_platform_delegate_android.cc
@@ -34,7 +34,7 @@
   sandbox::SeccompStarterAndroid starter(info->sdk_int(), info->device());
   // The policy compiler is only available if USE_SECCOMP_BPF is enabled.
 #if BUILDFLAG(USE_SECCOMP_BPF)
-  starter.set_policy(base::MakeUnique<sandbox::BaselinePolicyAndroid>());
+  starter.set_policy(std::make_unique<sandbox::BaselinePolicyAndroid>());
 #endif
   starter.StartSandbox();
 
diff --git a/content/renderer/screen_orientation/screen_orientation_dispatcher_browsertest.cc b/content/renderer/screen_orientation/screen_orientation_dispatcher_browsertest.cc
index 5fec7fb..01596e77 100644
--- a/content/renderer/screen_orientation/screen_orientation_dispatcher_browsertest.cc
+++ b/content/renderer/screen_orientation/screen_orientation_dispatcher_browsertest.cc
@@ -87,7 +87,7 @@
 
   LockOrientation(
       blink::kWebScreenOrientationLockPortraitPrimary,
-      base::MakeUnique<MockLockOrientationCallback>(&callback_results));
+      std::make_unique<MockLockOrientationCallback>(&callback_results));
   UnlockOrientation();
 
   EXPECT_FALSE(callback_results.succeeded_);
@@ -103,11 +103,11 @@
 
   LockOrientation(
       blink::kWebScreenOrientationLockPortraitPrimary,
-      base::MakeUnique<MockLockOrientationCallback>(&callback_results));
+      std::make_unique<MockLockOrientationCallback>(&callback_results));
 
   LockOrientation(
       blink::kWebScreenOrientationLockPortraitPrimary,
-      base::MakeUnique<MockLockOrientationCallback>(&callback_results2));
+      std::make_unique<MockLockOrientationCallback>(&callback_results2));
 
   EXPECT_FALSE(callback_results.succeeded_);
   EXPECT_TRUE(callback_results.failed_);
@@ -131,7 +131,7 @@
     MockLockOrientationCallback::LockOrientationResultHolder callback_results;
     LockOrientation(
         blink::kWebScreenOrientationLockPortraitPrimary,
-        base::MakeUnique<MockLockOrientationCallback>(&callback_results));
+        std::make_unique<MockLockOrientationCallback>(&callback_results));
     RunLockResultCallback(GetRequestId(), it->first);
     EXPECT_FALSE(callback_results.succeeded_);
     EXPECT_TRUE(callback_results.failed_);
@@ -145,7 +145,7 @@
   MockLockOrientationCallback::LockOrientationResultHolder callback_results;
   LockOrientation(
       blink::kWebScreenOrientationLockPortraitPrimary,
-      base::MakeUnique<MockLockOrientationCallback>(&callback_results));
+      std::make_unique<MockLockOrientationCallback>(&callback_results));
 
   RunLockResultCallback(GetRequestId(),
                         LockResult::SCREEN_ORIENTATION_LOCK_RESULT_SUCCESS);
@@ -166,12 +166,12 @@
 
   LockOrientation(
       blink::kWebScreenOrientationLockPortraitPrimary,
-      base::MakeUnique<MockLockOrientationCallback>(&callback_results1));
+      std::make_unique<MockLockOrientationCallback>(&callback_results1));
   int request_id1 = GetRequestId();
 
   LockOrientation(
       blink::kWebScreenOrientationLockLandscapePrimary,
-      base::MakeUnique<MockLockOrientationCallback>(&callback_results2));
+      std::make_unique<MockLockOrientationCallback>(&callback_results2));
 
   // callback_results1 must be rejected, tested in CancelPending_DoubleLock.
 
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 d71b5a9..b9e91f3d 100644
--- a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
+++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
@@ -28,7 +28,7 @@
     std::unique_ptr<blink::WebEmbeddedWorker> worker,
     int devtools_agent_route_id)
     : worker_(std::move(worker)),
-      devtools_agent_(base::MakeUnique<EmbeddedWorkerDevToolsAgent>(
+      devtools_agent_(std::make_unique<EmbeddedWorkerDevToolsAgent>(
           worker_.get(),
           devtools_agent_route_id)) {}
 
@@ -68,7 +68,7 @@
   TRACE_EVENT0("ServiceWorker",
                "EmbeddedWorkerInstanceClientImpl::StartWorker");
   auto interface_provider = std::move(provider_info->interface_provider);
-  auto client = base::MakeUnique<ServiceWorkerContextClient>(
+  auto client = std::make_unique<ServiceWorkerContextClient>(
       params.embedded_worker_id, params.service_worker_version_id, params.scope,
       params.script_url,
       ServiceWorkerUtils::IsScriptStreamingEnabled() && installed_scripts_info,
@@ -141,7 +141,7 @@
         std::move(installed_scripts_info), io_thread_runner_);
   }
 
-  auto wrapper = base::MakeUnique<WorkerWrapper>(
+  auto wrapper = std::make_unique<WorkerWrapper>(
       blink::WebEmbeddedWorker::Create(
           std::move(context_client), std::move(manager),
           content_settings_proxy.PassInterface().PassHandle(),
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc
index 429f479..bad44b9 100644
--- a/content/renderer/service_worker/service_worker_context_client.cc
+++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -121,7 +121,7 @@
     if (render_thread && provider_->script_loader_factory() &&
         ServiceWorkerUtils::IsServicificationEnabled() &&
         IsScriptRequest(request)) {
-      return base::MakeUnique<WebURLLoaderImpl>(
+      return std::make_unique<WebURLLoaderImpl>(
           render_thread->resource_dispatcher(), std::move(task_runner),
           provider_->script_loader_factory());
     }
@@ -463,7 +463,7 @@
       mojom::DownloadedTempFilePtr downloaded_file) override {
     DCHECK(!response_);
     DCHECK(!downloaded_file);
-    response_ = base::MakeUnique<blink::WebURLResponse>();
+    response_ = std::make_unique<blink::WebURLResponse>();
     // TODO(horo): Set report_security_info to true when DevTools is attached.
     const bool report_security_info = false;
     WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(),
@@ -481,7 +481,7 @@
         ServiceWorkerContextClient::ThreadSpecificInstance();
     if (!client)
       return;
-    response_ = base::MakeUnique<blink::WebURLResponse>();
+    response_ = std::make_unique<blink::WebURLResponse>();
     WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(),
                                           false /* report_security_info */);
     client->OnNavigationPreloadResponse(fetch_event_id_, std::move(response_),
@@ -569,7 +569,7 @@
 
     client->OnNavigationPreloadResponse(
         fetch_event_id_, std::move(response_),
-        base::MakeUnique<WebDataConsumerHandleImpl>(std::move(body_)));
+        std::make_unique<WebDataConsumerHandleImpl>(std::move(body_)));
   }
 
   void ReportErrorToClient(const std::string& message,
@@ -580,7 +580,7 @@
       return;
     // This will delete |this|.
     client->OnNavigationPreloadError(
-        fetch_event_id_, base::MakeUnique<blink::WebServiceWorkerError>(
+        fetch_event_id_, std::make_unique<blink::WebServiceWorkerError>(
                              blink::mojom::ServiceWorkerErrorType::kNetwork,
                              blink::WebString::FromUTF8(message),
                              blink::WebString::FromUTF8(unsanitized_message)));
@@ -1052,7 +1052,7 @@
   DCHECK(body_as_stream->stream.is_valid());
 
   web_body_as_stream->SetListener(
-      base::MakeUnique<StreamHandleListener>(std::move(callback_ptr)));
+      std::make_unique<StreamHandleListener>(std::move(callback_ptr)));
 
   response_callback->OnResponseStream(
       response, std::move(body_as_stream),
@@ -1204,7 +1204,7 @@
 ServiceWorkerContextClient::CreateServiceWorkerNetworkProvider() {
   DCHECK(main_thread_task_runner_->RunsTasksInCurrentSequence());
   // Blink is responsible for deleting the returned object.
-  return base::MakeUnique<WebServiceWorkerNetworkProviderImpl>(
+  return std::make_unique<WebServiceWorkerNetworkProviderImpl>(
       std::move(pending_network_provider_));
 }
 
@@ -1219,7 +1219,7 @@
           ->CreateDefaultURLLoaderFactoryGetter();
   DCHECK(url_loader_factory_getter);
   // Blink is responsible for deleting the returned object.
-  return base::MakeUnique<ServiceWorkerFetchContextImpl>(
+  return std::make_unique<ServiceWorkerFetchContextImpl>(
       script_url_, url_loader_factory_getter->GetClonedInfo(),
       provider_context_->provider_id());
 }
@@ -1230,7 +1230,7 @@
   DCHECK(provider_context_);
 
   // Blink is responsible for deleting the returned object.
-  return base::MakeUnique<WebServiceWorkerProviderImpl>(
+  return std::make_unique<WebServiceWorkerProviderImpl>(
       sender_.get(), provider_context_.get());
 }
 
@@ -1292,7 +1292,7 @@
   TRACE_EVENT0("ServiceWorker",
                "ServiceWorkerContextClient::DispatchSyncEvent");
   int request_id = context_->sync_event_callbacks.Add(
-      base::MakeUnique<DispatchSyncEventCallback>(std::move(callback)));
+      std::make_unique<DispatchSyncEventCallback>(std::move(callback)));
 
   // TODO(shimazu): Use typemap when this is moved to blink-side.
   blink::WebServiceWorkerContextProxy::LastChanceOption web_last_chance =
@@ -1386,7 +1386,7 @@
   TRACE_EVENT0("ServiceWorker",
                "ServiceWorkerContextClient::DispatchActivateEvent");
   int request_id = context_->activate_event_callbacks.Add(
-      base::MakeUnique<DispatchActivateEventCallback>(std::move(callback)));
+      std::make_unique<DispatchActivateEventCallback>(std::move(callback)));
   proxy_->DispatchActivateEvent(request_id);
 }
 
@@ -1396,7 +1396,7 @@
   TRACE_EVENT0("ServiceWorker",
                "ServiceWorkerContextClient::DispatchBackgroundFetchAbortEvent");
   int request_id = context_->background_fetch_abort_event_callbacks.Add(
-      base::MakeUnique<DispatchBackgroundFetchAbortEventCallback>(
+      std::make_unique<DispatchBackgroundFetchAbortEventCallback>(
           std::move(callback)));
 
   proxy_->DispatchBackgroundFetchAbortEvent(
@@ -1410,7 +1410,7 @@
   TRACE_EVENT0("ServiceWorker",
                "ServiceWorkerContextClient::DispatchBackgroundFetchClickEvent");
   int request_id = context_->background_fetch_click_event_callbacks.Add(
-      base::MakeUnique<DispatchBackgroundFetchClickEventCallback>(
+      std::make_unique<DispatchBackgroundFetchClickEventCallback>(
           std::move(callback)));
 
   // TODO(peter): Use typemap when this is moved to blink-side.
@@ -1429,7 +1429,7 @@
   TRACE_EVENT0("ServiceWorker",
                "ServiceWorkerContextClient::DispatchBackgroundFetchFailEvent");
   int request_id = context_->background_fetch_fail_event_callbacks.Add(
-      base::MakeUnique<DispatchBackgroundFetchFailEventCallback>(
+      std::make_unique<DispatchBackgroundFetchFailEventCallback>(
           std::move(callback)));
 
   blink::WebVector<blink::WebBackgroundFetchSettledFetch> web_fetches(
@@ -1451,7 +1451,7 @@
   TRACE_EVENT0("ServiceWorker",
                "ServiceWorkerContextClient::DispatchBackgroundFetchedEvent");
   int request_id = context_->background_fetched_event_callbacks.Add(
-      base::MakeUnique<DispatchBackgroundFetchedEventCallback>(
+      std::make_unique<DispatchBackgroundFetchedEventCallback>(
           std::move(callback)));
 
   blink::WebVector<blink::WebBackgroundFetchSettledFetch> web_fetches(
@@ -1473,7 +1473,7 @@
                "ServiceWorkerContextClient::DispatchInstallEvent");
 
   int event_id = context_->install_event_callbacks.Add(
-      base::MakeUnique<DispatchInstallEventCallback>(std::move(callback)));
+      std::make_unique<DispatchInstallEventCallback>(std::move(callback)));
 
   DCHECK(!context_->install_methods_map.count(event_id));
   mojom::ServiceWorkerInstallEventMethodsAssociatedPtr install_methods;
@@ -1489,7 +1489,7 @@
   TRACE_EVENT0("ServiceWorker",
                "ServiceWorkerContextClient::DispatchExtendableMessageEvent");
   int request_id = context_->message_event_callbacks.Add(
-      base::MakeUnique<DispatchExtendableMessageEventCallback>(
+      std::make_unique<DispatchExtendableMessageEventCallback>(
           std::move(callback)));
 
   if (event->source.client_info.IsValid()) {
@@ -1529,7 +1529,7 @@
     DispatchFetchEventCallback callback) {
   // Register callbacks for notifying about event completion and the response.
   int fetch_event_id = context_->fetch_event_callbacks.Add(
-      base::MakeUnique<DispatchFetchEventCallback>(std::move(callback)));
+      std::make_unique<DispatchFetchEventCallback>(std::move(callback)));
   context_->fetch_response_callbacks.insert(
       std::make_pair(fetch_event_id, std::move(response_callback)));
 
@@ -1542,7 +1542,7 @@
   // Set up for navigation preload (FetchEvent#preloadResponse) if needed.
   std::unique_ptr<NavigationPreloadRequest> preload_request =
       preload_handle
-          ? base::MakeUnique<NavigationPreloadRequest>(
+          ? std::make_unique<NavigationPreloadRequest>(
                 fetch_event_id, request.url, std::move(preload_handle))
           : nullptr;
   const bool navigation_preload_sent = !!preload_request;
@@ -1572,7 +1572,7 @@
                "ServiceWorkerContextClient::DispatchNotificationClickEvent");
 
   int request_id = context_->notification_click_event_callbacks.Add(
-      base::MakeUnique<DispatchNotificationClickEventCallback>(
+      std::make_unique<DispatchNotificationClickEventCallback>(
           std::move(callback)));
 
   blink::WebString web_reply;
@@ -1592,7 +1592,7 @@
                "ServiceWorkerContextClient::DispatchNotificationCloseEvent");
 
   int request_id = context_->notification_close_event_callbacks.Add(
-      base::MakeUnique<DispatchNotificationCloseEventCallback>(
+      std::make_unique<DispatchNotificationCloseEventCallback>(
           std::move(callback)));
 
   proxy_->DispatchNotificationCloseEvent(
@@ -1606,7 +1606,7 @@
   TRACE_EVENT0("ServiceWorker",
                "ServiceWorkerContextClient::DispatchPushEvent");
   int request_id = context_->push_event_callbacks.Add(
-      base::MakeUnique<DispatchPushEventCallback>(std::move(callback)));
+      std::make_unique<DispatchPushEventCallback>(std::move(callback)));
 
   // Only set data to be a valid string if the payload had decrypted data.
   blink::WebString data;
diff --git a/content/renderer/service_worker/service_worker_fetch_context_impl.cc b/content/renderer/service_worker/service_worker_fetch_context_impl.cc
index 8d58e4c9..6b91b74 100644
--- a/content/renderer/service_worker/service_worker_fetch_context_impl.cc
+++ b/content/renderer/service_worker/service_worker_fetch_context_impl.cc
@@ -25,7 +25,7 @@
 
 void ServiceWorkerFetchContextImpl::InitializeOnWorkerThread(
     scoped_refptr<base::SingleThreadTaskRunner> loading_task_runner) {
-  resource_dispatcher_ = base::MakeUnique<ResourceDispatcher>(
+  resource_dispatcher_ = std::make_unique<ResourceDispatcher>(
       nullptr, std::move(loading_task_runner));
 
   url_loader_factory_getter_ = url_loader_factory_getter_info_.Bind();
diff --git a/content/renderer/service_worker/service_worker_network_provider.cc b/content/renderer/service_worker/service_worker_network_provider.cc
index 39670632..91a2315 100644
--- a/content/renderer/service_worker/service_worker_network_provider.cc
+++ b/content/renderer/service_worker/service_worker_network_provider.cc
@@ -131,7 +131,7 @@
     // S13nServiceWorker:
     // Create our own SubresourceLoader to route the request
     // to the controller ServiceWorker.
-    return base::MakeUnique<WebURLLoaderImpl>(
+    return std::make_unique<WebURLLoaderImpl>(
         RenderThreadImpl::current()->resource_dispatcher(),
         std::move(task_runner),
         provider_->context()->subresource_loader_factory());
@@ -200,7 +200,7 @@
   } else {
     network_provider = base::WrapUnique(new ServiceWorkerNetworkProvider());
   }
-  return base::MakeUnique<WebServiceWorkerNetworkProviderForFrame>(
+  return std::make_unique<WebServiceWorkerNetworkProviderForFrame>(
       std::move(network_provider));
 }
 
diff --git a/content/renderer/service_worker/service_worker_provider_context.cc b/content/renderer/service_worker/service_worker_provider_context.cc
index e8f8ec6..5222989 100644
--- a/content/renderer/service_worker/service_worker_provider_context.cc
+++ b/content/renderer/service_worker/service_worker_provider_context.cc
@@ -107,9 +107,9 @@
       binding_(this, std::move(request)) {
   container_host_.Bind(std::move(host_ptr_info));
   if (provider_type == SERVICE_WORKER_PROVIDER_FOR_CONTROLLER) {
-    controller_state_ = base::MakeUnique<ControllerState>();
+    controller_state_ = std::make_unique<ControllerState>();
   } else {
-    controllee_state_ = base::MakeUnique<ControlleeState>(
+    controllee_state_ = std::make_unique<ControlleeState>(
         std::move(default_loader_factory_getter));
   }
 
@@ -284,7 +284,7 @@
         base::MakeRefCounted<ControllerServiceWorkerConnector>(
             container_host_.get());
     mojo::MakeStrongBinding(
-        base::MakeUnique<ServiceWorkerSubresourceLoaderFactory>(
+        std::make_unique<ServiceWorkerSubresourceLoaderFactory>(
             state->controller_connector, state->default_loader_factory_getter,
             state->controller->url().GetOrigin(), std::move(blob_registry)),
         mojo::MakeRequest(&state->subresource_loader_factory));
diff --git a/content/renderer/service_worker/service_worker_provider_context_unittest.cc b/content/renderer/service_worker/service_worker_provider_context_unittest.cc
index 0ac336b..0ef4c0d 100644
--- a/content/renderer/service_worker/service_worker_provider_context_unittest.cc
+++ b/content/renderer/service_worker/service_worker_provider_context_unittest.cc
@@ -254,9 +254,9 @@
         kProviderId, SERVICE_WORKER_PROVIDER_FOR_WINDOW,
         std::move(container_request), std::move(host_ptr_info), dispatcher(),
         nullptr /* loader_factory_getter */);
-    auto provider_impl = base::MakeUnique<WebServiceWorkerProviderImpl>(
+    auto provider_impl = std::make_unique<WebServiceWorkerProviderImpl>(
         thread_safe_sender(), provider_context.get());
-    auto client = base::MakeUnique<MockWebServiceWorkerProviderClientImpl>();
+    auto client = std::make_unique<MockWebServiceWorkerProviderClientImpl>();
     provider_impl->SetClient(client.get());
     ASSERT_FALSE(client->was_set_controller_called());
 
@@ -290,9 +290,9 @@
       kProviderId, SERVICE_WORKER_PROVIDER_FOR_WINDOW,
       std::move(container_request), std::move(host_ptr_info), dispatcher(),
       nullptr /* loader_factory_getter */);
-  auto provider_impl = base::MakeUnique<WebServiceWorkerProviderImpl>(
+  auto provider_impl = std::make_unique<WebServiceWorkerProviderImpl>(
       thread_safe_sender(), provider_context.get());
-  auto client = base::MakeUnique<MockWebServiceWorkerProviderClientImpl>();
+  auto client = std::make_unique<MockWebServiceWorkerProviderClientImpl>();
   provider_impl->SetClient(client.get());
 
   container_ptr->SetController(blink::mojom::ServiceWorkerObjectInfo::New(),
diff --git a/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc b/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc
index 865327a..7ac9aa8 100644
--- a/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc
+++ b/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc
@@ -125,14 +125,14 @@
       case ResponseMode::kStream:
         response_callback->OnResponseStream(
             ServiceWorkerResponse(
-                base::MakeUnique<std::vector<GURL>>(), 200, "OK",
+                std::make_unique<std::vector<GURL>>(), 200, "OK",
                 network::mojom::FetchResponseType::kDefault,
-                base::MakeUnique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
+                std::make_unique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
                 0 /* blob_size */, nullptr /* blob */,
                 blink::kWebServiceWorkerResponseErrorUnknown, base::Time(),
                 false /* response_is_in_cache_storage */,
                 std::string() /* response_cache_storage_cache_name */,
-                base::MakeUnique<
+                std::make_unique<
                     ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
             std::move(stream_handle_), base::Time::Now());
         std::move(callback).Run(
@@ -147,15 +147,15 @@
       case ResponseMode::kErrorResponse:
         response_callback->OnResponse(
             ServiceWorkerResponse(
-                base::MakeUnique<std::vector<GURL>>(), 0 /* status_code */,
+                std::make_unique<std::vector<GURL>>(), 0 /* status_code */,
                 "" /* status_text */,
                 network::mojom::FetchResponseType::kDefault,
-                base::MakeUnique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
+                std::make_unique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */,
                 0 /* blob_size */, nullptr /* blob */,
                 blink::kWebServiceWorkerResponseErrorPromiseRejected,
                 base::Time(), false /* response_is_in_cache_storage */,
                 std::string() /* response_cache_storage_cache_name */,
-                base::MakeUnique<
+                std::make_unique<
                     ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
             base::Time::Now());
         std::move(callback).Run(
@@ -163,17 +163,17 @@
             base::Time::Now());
         break;
       case ResponseMode::kRedirectResponse: {
-        auto headers = base::MakeUnique<ServiceWorkerHeaderMap>();
+        auto headers = std::make_unique<ServiceWorkerHeaderMap>();
         (*headers)["Location"] = redirect_location_header_;
         response_callback->OnResponse(
             ServiceWorkerResponse(
-                base::MakeUnique<std::vector<GURL>>(), 302, "Found",
+                std::make_unique<std::vector<GURL>>(), 302, "Found",
                 network::mojom::FetchResponseType::kDefault, std::move(headers),
                 "" /* blob_uuid */, 0 /* blob_size */, nullptr /* blob */,
                 blink::kWebServiceWorkerResponseErrorUnknown, base::Time(),
                 false /* response_is_in_cache_storage */,
                 std::string() /* response_cache_storage_cache_name */,
-                base::MakeUnique<
+                std::make_unique<
                     ServiceWorkerHeaderList>() /* cors_exposed_header_names */),
             base::Time::Now());
         std::move(callback).Run(
@@ -290,7 +290,7 @@
     feature_list_.InitAndEnableFeature(features::kNetworkService);
 
     mojom::URLLoaderFactoryPtr fake_loader_factory;
-    mojo::MakeStrongBinding(base::MakeUnique<FakeNetworkURLLoaderFactory>(),
+    mojo::MakeStrongBinding(std::make_unique<FakeNetworkURLLoaderFactory>(),
                             MakeRequest(&fake_loader_factory));
     loader_factory_getter_ =
         base::MakeRefCounted<ChildURLLoaderFactoryGetterImpl>(
diff --git a/content/renderer/service_worker/service_worker_type_util.cc b/content/renderer/service_worker/service_worker_type_util.cc
index 84854332..3167ab6 100644
--- a/content/renderer/service_worker/service_worker_type_util.cc
+++ b/content/renderer/service_worker/service_worker_type_util.cc
@@ -48,7 +48,7 @@
 std::unique_ptr<ServiceWorkerHeaderMap> GetHeaderMap(
     const blink::WebServiceWorkerResponse& web_response) {
   std::unique_ptr<ServiceWorkerHeaderMap> result =
-      base::MakeUnique<ServiceWorkerHeaderMap>();
+      std::make_unique<ServiceWorkerHeaderMap>();
   web_response.VisitHTTPHeaderFields(MakeHeaderVisitor(result.get()).get());
   return result;
 }
@@ -56,7 +56,7 @@
 std::unique_ptr<ServiceWorkerHeaderList> GetHeaderList(
     const blink::WebVector<blink::WebString>& web_headers) {
   std::unique_ptr<ServiceWorkerHeaderList> result =
-      base::MakeUnique<ServiceWorkerHeaderList>(web_headers.size());
+      std::make_unique<ServiceWorkerHeaderList>(web_headers.size());
   std::transform(web_headers.begin(), web_headers.end(), result->begin(),
                  [](const blink::WebString& s) { return s.Latin1(); });
   return result;
@@ -65,7 +65,7 @@
 std::unique_ptr<std::vector<GURL>> GetURLList(
     const blink::WebVector<blink::WebURL>& web_url_list) {
   std::unique_ptr<std::vector<GURL>> result =
-      base::MakeUnique<std::vector<GURL>>(web_url_list.size());
+      std::make_unique<std::vector<GURL>>(web_url_list.size());
   std::transform(web_url_list.begin(), web_url_list.end(), result->begin(),
                  [](const blink::WebURL& url) { return url; });
   return result;
diff --git a/content/renderer/service_worker/web_service_worker_impl.cc b/content/renderer/service_worker/web_service_worker_impl.cc
index 89ff91a..9c53fe46a 100644
--- a/content/renderer/service_worker/web_service_worker_impl.cc
+++ b/content/renderer/service_worker/web_service_worker_impl.cc
@@ -105,7 +105,7 @@
     const scoped_refptr<WebServiceWorkerImpl>& worker) {
   if (!worker)
     return nullptr;
-  return base::MakeUnique<HandleImpl>(worker);
+  return std::make_unique<HandleImpl>(worker);
 }
 
 WebServiceWorkerImpl::~WebServiceWorkerImpl() {
diff --git a/content/renderer/service_worker/web_service_worker_installed_scripts_manager_impl.cc b/content/renderer/service_worker/web_service_worker_installed_scripts_manager_impl.cc
index 5437cdf..6361112 100644
--- a/content/renderer/service_worker/web_service_worker_installed_scripts_manager_impl.cc
+++ b/content/renderer/service_worker/web_service_worker_installed_scripts_manager_impl.cc
@@ -150,7 +150,7 @@
       scoped_refptr<ThreadSafeScriptContainer> script_container,
       mojom::ServiceWorkerInstalledScriptsManagerRequest request) {
     mojo::MakeStrongBinding(
-        base::MakeUnique<Internal>(std::move(script_container)),
+        std::make_unique<Internal>(std::move(script_container)),
         std::move(request));
   }
 
@@ -172,7 +172,7 @@
       mojom::ServiceWorkerScriptInfoPtr script_info) override {
     DCHECK_CALLED_ON_VALID_THREAD(io_thread_checker_);
     GURL script_url = script_info->script_url;
-    auto receivers = base::MakeUnique<BundledReceivers>(
+    auto receivers = std::make_unique<BundledReceivers>(
         std::move(script_info->meta_data), script_info->meta_data_size,
         std::move(script_info->body), script_info->body_size);
     receivers->Start(base::BindOnce(&Internal::OnScriptReceived,
diff --git a/content/renderer/service_worker/web_service_worker_provider_impl.cc b/content/renderer/service_worker/web_service_worker_provider_impl.cc
index 2e6c1f9d..3ac7893 100644
--- a/content/renderer/service_worker/web_service_worker_provider_impl.cc
+++ b/content/renderer/service_worker/web_service_worker_provider_impl.cc
@@ -319,7 +319,7 @@
   using WebServiceWorkerRegistrationHandles =
       WebServiceWorkerProvider::WebServiceWorkerRegistrationHandles;
   std::unique_ptr<WebServiceWorkerRegistrationHandles> registrations =
-      base::MakeUnique<WebServiceWorkerRegistrationHandles>(infos->size());
+      std::make_unique<WebServiceWorkerRegistrationHandles>(infos->size());
   for (size_t i = 0; i < infos->size(); ++i) {
     DCHECK_NE(blink::mojom::kInvalidServiceWorkerRegistrationHandleId,
               (*infos)[i]->handle_id);
diff --git a/content/renderer/service_worker/worker_fetch_context_impl.cc b/content/renderer/service_worker/worker_fetch_context_impl.cc
index fed2871..ecda7a0 100644
--- a/content/renderer/service_worker/worker_fetch_context_impl.cc
+++ b/content/renderer/service_worker/worker_fetch_context_impl.cc
@@ -81,7 +81,7 @@
 
     // Create our own URLLoader to route the request to the controller service
     // worker.
-    return base::MakeUnique<WebURLLoaderImpl>(
+    return std::make_unique<WebURLLoaderImpl>(
         resource_dispatcher_.get(), std::move(task_runner),
         service_worker_url_loader_factory_.get());
   }
@@ -118,7 +118,7 @@
   DCHECK(loading_task_runner->RunsTasksInCurrentSequence());
   DCHECK(!resource_dispatcher_);
   DCHECK(!binding_.is_bound());
-  resource_dispatcher_ = base::MakeUnique<ResourceDispatcher>(
+  resource_dispatcher_ = std::make_unique<ResourceDispatcher>(
       nullptr, std::move(loading_task_runner));
 
   url_loader_factory_getter_ = url_loader_factory_getter_info_.Bind();
@@ -279,7 +279,7 @@
   }
   mojom::URLLoaderFactoryPtr service_worker_url_loader_factory;
   mojo::MakeStrongBinding(
-      base::MakeUnique<ServiceWorkerSubresourceLoaderFactory>(
+      std::make_unique<ServiceWorkerSubresourceLoaderFactory>(
           base::MakeRefCounted<ControllerServiceWorkerConnector>(
               service_worker_container_host_.get()),
           url_loader_factory_getter_, origin_url_, blob_registry_),
diff --git a/content/renderer/shared_worker/embedded_shared_worker_stub.cc b/content/renderer/shared_worker/embedded_shared_worker_stub.cc
index 7c5a5ee..b76cdfa 100644
--- a/content/renderer/shared_worker/embedded_shared_worker_stub.cc
+++ b/content/renderer/shared_worker/embedded_shared_worker_stub.cc
@@ -229,7 +229,7 @@
 EmbeddedSharedWorkerStub::CreateApplicationCacheHost(
     blink::WebApplicationCacheHostClient* client) {
   std::unique_ptr<WebApplicationCacheHostImpl> host =
-      base::MakeUnique<SharedWorkerWebApplicationCacheHostImpl>(client);
+      std::make_unique<SharedWorkerWebApplicationCacheHostImpl>(client);
   app_cache_host_ = host.get();
   return std::move(host);
 }
@@ -242,7 +242,7 @@
       ServiceWorkerNetworkProvider::CreateForSharedWorker(route_id_));
 
   // Blink is responsible for deleting the returned object.
-  return base::MakeUnique<WebServiceWorkerNetworkProviderForSharedWorker>(
+  return std::make_unique<WebServiceWorkerNetworkProviderForSharedWorker>(
       std::move(provider), IsOriginSecure(url_));
 }
 
@@ -287,7 +287,7 @@
           ->blink_platform_impl()
           ->CreateDefaultURLLoaderFactoryGetter();
   DCHECK(url_loader_factory_getter);
-  auto worker_fetch_context = base::MakeUnique<WorkerFetchContextImpl>(
+  auto worker_fetch_context = std::make_unique<WorkerFetchContextImpl>(
       std::move(request), std::move(container_host_ptr_info),
       url_loader_factory_getter->GetClonedInfo());
 
diff --git a/content/renderer/stats_collection_controller.cc b/content/renderer/stats_collection_controller.cc
index af48c4a..8abbf2ab 100644
--- a/content/renderer/stats_collection_controller.cc
+++ b/content/renderer/stats_collection_controller.cc
@@ -59,13 +59,13 @@
   base::DictionaryValue item;
 
   if (load_start_time.is_null()) {
-    item.Set("load_start_ms", base::MakeUnique<base::Value>());
+    item.Set("load_start_ms", std::make_unique<base::Value>());
   } else {
     item.SetDouble("load_start_ms", (load_start_time - base::Time::UnixEpoch())
                    .InMillisecondsF());
   }
   if (load_start_time.is_null() || load_stop_time.is_null()) {
-    item.Set("load_duration_ms", base::MakeUnique<base::Value>());
+    item.Set("load_duration_ms", std::make_unique<base::Value>());
   } else {
     item.SetDouble("load_duration_ms",
         (load_stop_time - load_start_time).InMillisecondsF());
diff --git a/content/renderer/v8_value_converter_impl.cc b/content/renderer/v8_value_converter_impl.cc
index dd53c75f..78979c33 100644
--- a/content/renderer/v8_value_converter_impl.cc
+++ b/content/renderer/v8_value_converter_impl.cc
@@ -176,7 +176,7 @@
 };
 
 std::unique_ptr<V8ValueConverter> V8ValueConverter::Create() {
-  return base::MakeUnique<V8ValueConverterImpl>();
+  return std::make_unique<V8ValueConverterImpl>();
 }
 
 V8ValueConverterImpl::V8ValueConverterImpl()
@@ -359,10 +359,10 @@
     return nullptr;
 
   if (val->IsNull())
-    return base::MakeUnique<base::Value>();
+    return std::make_unique<base::Value>();
 
   if (val->IsBoolean())
-    return base::MakeUnique<base::Value>(val->ToBoolean(isolate)->Value());
+    return std::make_unique<base::Value>(val->ToBoolean(isolate)->Value());
 
   if (val->IsNumber() && strategy_) {
     std::unique_ptr<base::Value> out;
@@ -371,7 +371,7 @@
   }
 
   if (val->IsInt32())
-    return base::MakeUnique<base::Value>(val->ToInt32(isolate)->Value());
+    return std::make_unique<base::Value>(val->ToInt32(isolate)->Value());
 
   if (val->IsNumber()) {
     double val_as_double = val.As<v8::Number>()->Value();
@@ -381,13 +381,13 @@
     // value is -0, it's treated internally as a double. Consumers are allowed
     // to ignore this esoterica and treat it as an integer.
     if (convert_negative_zero_to_int_ && val_as_double == 0.0)
-      return base::MakeUnique<base::Value>(0);
-    return base::MakeUnique<base::Value>(val_as_double);
+      return std::make_unique<base::Value>(0);
+    return std::make_unique<base::Value>(val_as_double);
   }
 
   if (val->IsString()) {
     v8::String::Utf8Value utf8(val);
-    return base::MakeUnique<base::Value>(std::string(*utf8, utf8.length()));
+    return std::make_unique<base::Value>(std::string(*utf8, utf8.length()));
   }
 
   if (val->IsUndefined()) {
@@ -406,14 +406,14 @@
       // consistent within this class.
       return FromV8Object(val->ToObject(isolate), state, isolate);
     v8::Date* date = v8::Date::Cast(*val);
-    return base::MakeUnique<base::Value>(date->ValueOf() / 1000.0);
+    return std::make_unique<base::Value>(date->ValueOf() / 1000.0);
   }
 
   if (val->IsRegExp()) {
     if (!reg_exp_allowed_)
       // JSON.stringify converts to an object.
       return FromV8Object(val.As<v8::Object>(), state, isolate);
-    return base::MakeUnique<base::Value>(*v8::String::Utf8Value(val));
+    return std::make_unique<base::Value>(*v8::String::Utf8Value(val));
   }
 
   // v8::Value doesn't have a ToArray() method for some reason.
@@ -443,7 +443,7 @@
     v8::Isolate* isolate) const {
   ScopedUniquenessGuard uniqueness_guard(state, val);
   if (!uniqueness_guard.is_valid())
-    return base::MakeUnique<base::Value>();
+    return std::make_unique<base::Value>();
 
   std::unique_ptr<v8::Context::Scope> scope;
   // If val was created in a different context than our current one, change to
@@ -476,7 +476,7 @@
     }
 
     if (!val->HasRealIndexedProperty(i)) {
-      result->Append(base::MakeUnique<base::Value>());
+      result->Append(std::make_unique<base::Value>());
       continue;
     }
 
@@ -487,7 +487,7 @@
     else
       // JSON.stringify puts null in places where values don't serialize, for
       // example undefined and functions. Emulate that behavior.
-      result->Append(base::MakeUnique<base::Value>());
+      result->Append(std::make_unique<base::Value>());
   }
   return std::move(result);
 }
@@ -510,7 +510,7 @@
     size_t byte_length = view->ByteLength();
     std::vector<char> buffer(byte_length);
     view->CopyContents(buffer.data(), buffer.size());
-    return base::MakeUnique<base::Value>(std::move(buffer));
+    return std::make_unique<base::Value>(std::move(buffer));
   } else {
     NOTREACHED() << "Only ArrayBuffer and ArrayBufferView should get here.";
     return nullptr;
@@ -523,7 +523,7 @@
     v8::Isolate* isolate) const {
   ScopedUniquenessGuard uniqueness_guard(state, val);
   if (!uniqueness_guard.is_valid())
-    return base::MakeUnique<base::Value>();
+    return std::make_unique<base::Value>();
 
   std::unique_ptr<v8::Context::Scope> scope;
   // If val was created in a different context than our current one, change to
@@ -558,7 +558,7 @@
   // ANOTHER NOTE: returning an empty dictionary here to minimise surprise.
   // See also http://crbug.com/330559.
   if (val->InternalFieldCount())
-    return base::MakeUnique<base::DictionaryValue>();
+    return std::make_unique<base::DictionaryValue>();
 
   std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue());
   v8::Local<v8::Array> property_names(val->GetOwnPropertyNames());
diff --git a/content/renderer/v8_value_converter_impl_unittest.cc b/content/renderer/v8_value_converter_impl_unittest.cc
index 3c7e069f..b5afcaaf 100644
--- a/content/renderer/v8_value_converter_impl_unittest.cc
+++ b/content/renderer/v8_value_converter_impl_unittest.cc
@@ -814,7 +814,7 @@
 
   // The first repetition should be trimmed and replaced by a null value.
   base::ListValue expected_list;
-  expected_list.Append(base::MakeUnique<base::Value>());
+  expected_list.Append(std::make_unique<base::Value>());
 
   // The actual result.
   std::unique_ptr<base::Value> actual_list(
@@ -835,7 +835,7 @@
 
   // The first repetition should be trimmed and replaced by a null value.
   base::DictionaryValue expected_dictionary;
-  expected_dictionary.Set(key, base::MakeUnique<base::Value>());
+  expected_dictionary.Set(key, std::make_unique<base::Value>());
 
   // The actual result.
   std::unique_ptr<base::Value> actual_dictionary(
@@ -1021,7 +1021,7 @@
 
  private:
   static std::unique_ptr<base::Value> NewReferenceValue() {
-    return base::MakeUnique<base::Value>("strategy");
+    return std::make_unique<base::Value>("strategy");
   }
   std::unique_ptr<base::Value> reference_value_;
 };
diff --git a/content/renderer/web_database_impl.cc b/content/renderer/web_database_impl.cc
index 1bacb2e7..7dada829 100644
--- a/content/renderer/web_database_impl.cc
+++ b/content/renderer/web_database_impl.cc
@@ -20,7 +20,7 @@
 WebDatabaseImpl::~WebDatabaseImpl() = default;
 
 void WebDatabaseImpl::Create(content::mojom::WebDatabaseRequest request) {
-  mojo::MakeStrongBinding(base::MakeUnique<WebDatabaseImpl>(),
+  mojo::MakeStrongBinding(std::make_unique<WebDatabaseImpl>(),
                           std::move(request));
 }
 
diff --git a/content/shell/browser/layout_test/blink_test_controller.cc b/content/shell/browser/layout_test/blink_test_controller.cc
index 3fe0505..bdc5114 100644
--- a/content/shell/browser/layout_test/blink_test_controller.cc
+++ b/content/shell/browser/layout_test/blink_test_controller.cc
@@ -541,7 +541,7 @@
     return bluetooth_chooser_factory_->RunBluetoothChooser(frame,
                                                            event_handler);
   }
-  return base::MakeUnique<LayoutTestFirstDeviceBluetoothChooser>(event_handler);
+  return std::make_unique<LayoutTestFirstDeviceBluetoothChooser>(event_handler);
 }
 
 bool BlinkTestController::OnMessageReceived(const IPC::Message& message) {
diff --git a/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc b/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc
index ae221cf..96a3333 100644
--- a/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc
+++ b/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc
@@ -666,7 +666,7 @@
 
   if (add_descriptors) {
     const std::string descriptorName = kCharacteristicUserDescription;
-    auto user_description = base::MakeUnique<NiceMockBluetoothGattDescriptor>(
+    auto user_description = std::make_unique<NiceMockBluetoothGattDescriptor>(
         measurement_interval.get(), descriptorName,
         BluetoothUUID(kUserDescriptionUUID), false /* is_local */,
         device::BluetoothRemoteGattCharacteristic::PROPERTY_READ);
@@ -683,15 +683,15 @@
     ON_CALL(*user_description, WriteRemoteDescriptor(_, _, _))
         .WillByDefault(RunCallback<1 /* success_callback */>());
 
-    auto client_config = base::MakeUnique<NiceMockBluetoothGattDescriptor>(
+    auto client_config = std::make_unique<NiceMockBluetoothGattDescriptor>(
         measurement_interval.get(), "gatt.client_characteristic_configuration",
         BluetoothUUID(kClientConfigUUID), false /* is_local */,
         device::BluetoothRemoteGattCharacteristic::PROPERTY_READ |
             device::BluetoothRemoteGattCharacteristic::PROPERTY_WRITE);
 
-   // Crash if WriteRemoteDescriptor called. Not using GoogleMock's Expect
-   // because this is used in layout tests that may not report a mock
-   // expectation.
+    // Crash if WriteRemoteDescriptor called. Not using GoogleMock's Expect
+    // because this is used in layout tests that may not report a mock
+    // expectation.
     ON_CALL(*client_config, WriteRemoteDescriptor(_, _, _))
         .WillByDefault(
             Invoke([](const std::vector<uint8_t>&, const base::Closure&,
@@ -699,7 +699,7 @@
               NOTREACHED();
             }));
 
-    auto no_read_descriptor = base::MakeUnique<NiceMockBluetoothGattDescriptor>(
+    auto no_read_descriptor = std::make_unique<NiceMockBluetoothGattDescriptor>(
         measurement_interval.get(), kBlocklistedReadDescriptorUUID,
         BluetoothUUID(kBlocklistedReadDescriptorUUID), false,
         device::BluetoothRemoteGattCharacteristic::PROPERTY_READ |
@@ -719,7 +719,7 @@
     // Add it here with full permission as the blocklist should prevent us from
     // accessing this descriptor
     auto blocklisted_descriptor =
-        base::MakeUnique<NiceMockBluetoothGattDescriptor>(
+        std::make_unique<NiceMockBluetoothGattDescriptor>(
             measurement_interval.get(), kBlocklistedDescriptorUUID,
             BluetoothUUID(kBlocklistedDescriptorUUID), false,
             device::BluetoothRemoteGattCharacteristic::PROPERTY_READ |
@@ -876,7 +876,7 @@
             }
 
             device_ptr->SetConnected(true);
-            return base::MakeUnique<NiceMockBluetoothGattConnection>(
+            return std::make_unique<NiceMockBluetoothGattConnection>(
                 adapter_ptr, device_ptr->GetAddress());
           }));
 
@@ -934,7 +934,7 @@
               const BluetoothDevice::GattConnectionCallback& callback,
               const BluetoothDevice::ConnectErrorCallback& error_callback) {
             device_ptr->SetConnected(true);
-            callback.Run(base::MakeUnique<NiceMockBluetoothGattConnection>(
+            callback.Run(std::make_unique<NiceMockBluetoothGattConnection>(
                 adapter_ptr, device_ptr->GetAddress()));
             device_ptr->RunPendingCallbacks();
           }));
@@ -1024,7 +1024,7 @@
         }
       }));
 
-  auto user_descriptor = base::MakeUnique<NiceMockBluetoothGattDescriptor>(
+  auto user_descriptor = std::make_unique<NiceMockBluetoothGattDescriptor>(
       measurement_interval.get(), kCharacteristicUserDescription,
       BluetoothUUID(kUserDescriptionUUID), false,
       device::BluetoothRemoteGattCharacteristic::PROPERTY_READ);
@@ -1099,7 +1099,7 @@
               const BluetoothDevice::GattConnectionCallback& callback,
               const BluetoothDevice::ConnectErrorCallback& error_callback) {
             device_ptr->SetConnected(true);
-            callback.Run(base::MakeUnique<NiceMockBluetoothGattConnection>(
+            callback.Run(std::make_unique<NiceMockBluetoothGattConnection>(
                 adapter_ptr, device_ptr->GetAddress()));
             device_ptr->RunPendingCallbacks();
           }));
@@ -1121,7 +1121,7 @@
       .WillByDefault(RunCallbackWithResult<0 /* success_callback */>(
           [adapter_ptr, device_ptr, measurement_ptr, disconnect]() {
             std::unique_ptr<NiceMockBluetoothGattNotifySession> notify_session =
-                base::MakeUnique<NiceMockBluetoothGattNotifySession>(
+                std::make_unique<NiceMockBluetoothGattNotifySession>(
                     measurement_ptr->GetWeakPtr());
 
             ON_CALL(*notify_session, Stop(_))
@@ -1226,7 +1226,7 @@
 std::unique_ptr<NiceMockBluetoothDiscoverySession>
 LayoutTestBluetoothAdapterProvider::GetDiscoverySession() {
   auto discovery_session =
-      base::MakeUnique<NiceMockBluetoothDiscoverySession>();
+      std::make_unique<NiceMockBluetoothDiscoverySession>();
 
   ON_CALL(*discovery_session, Stop(_, _))
       .WillByDefault(RunCallback<0 /* success_callback */>());
@@ -1243,7 +1243,7 @@
     const char* device_name,
     device::BluetoothDevice::UUIDList uuids,
     const std::string& address) {
-  auto device = base::MakeUnique<NiceMockBluetoothDevice>(
+  auto device = std::make_unique<NiceMockBluetoothDevice>(
       adapter, 0x1F00 /* Bluetooth class */, device_name, address,
       false /* paired */, false /* connected */);
 
@@ -1309,7 +1309,7 @@
       .WillByDefault(RunCallbackWithResult<0 /* success_callback */>(
           [adapter, device_ptr]() {
             device_ptr->SetConnected(true);
-            return base::MakeUnique<NiceMockBluetoothGattConnection>(
+            return std::make_unique<NiceMockBluetoothGattConnection>(
                 adapter, device_ptr->GetAddress());
           }));
 
@@ -1357,7 +1357,7 @@
     const std::string& identifier,
     MockBluetoothDevice* device,
     const std::string& uuid) {
-  auto service = base::MakeUnique<NiceMockBluetoothGattService>(
+  auto service = std::make_unique<NiceMockBluetoothGattService>(
       device, identifier, BluetoothUUID(uuid), true /* is_primary */,
       false /* is_local */);
 
@@ -1588,7 +1588,7 @@
     MockBluetoothGattService* service,
     const std::string& uuid,
     BluetoothRemoteGattCharacteristic::Properties properties) {
-  auto characteristic = base::MakeUnique<NiceMockBluetoothGattCharacteristic>(
+  auto characteristic = std::make_unique<NiceMockBluetoothGattCharacteristic>(
       service, identifier, BluetoothUUID(uuid), false /* is_local */,
       properties, BluetoothGattCharacteristic::Permission::PERMISSION_NONE);
 
@@ -1644,7 +1644,7 @@
       .WillByDefault(RunCallback<1 /* error_callback */>(error_code));
 
   // Add error descriptor to |characteristic|
-  auto error_descriptor = base::MakeUnique<NiceMockBluetoothGattDescriptor>(
+  auto error_descriptor = std::make_unique<NiceMockBluetoothGattDescriptor>(
       characteristic.get(), kCharacteristicUserDescription,
       BluetoothUUID(kUserDescriptionUUID), false,
       device::BluetoothRemoteGattCharacteristic::PROPERTY_READ);
@@ -1667,7 +1667,7 @@
 LayoutTestBluetoothAdapterProvider::GetBaseGATTNotifySession(
     base::WeakPtr<device::BluetoothRemoteGattCharacteristic> characteristic) {
   auto session =
-      base::MakeUnique<NiceMockBluetoothGattNotifySession>(characteristic);
+      std::make_unique<NiceMockBluetoothGattNotifySession>(characteristic);
 
   ON_CALL(*session, Stop(_))
       .WillByDefault(testing::DoAll(
diff --git a/content/shell/browser/layout_test/layout_test_bluetooth_chooser_factory.cc b/content/shell/browser/layout_test/layout_test_bluetooth_chooser_factory.cc
index a8f893e..2be2399 100644
--- a/content/shell/browser/layout_test/layout_test_bluetooth_chooser_factory.cc
+++ b/content/shell/browser/layout_test/layout_test_bluetooth_chooser_factory.cc
@@ -106,7 +106,7 @@
   event += origin.Serialize();
   event += ")";
   events_.push_back(event);
-  return base::MakeUnique<Chooser>(weak_this_.GetWeakPtr(), event_handler);
+  return std::make_unique<Chooser>(weak_this_.GetWeakPtr(), event_handler);
 }
 
 std::vector<std::string>
diff --git a/content/shell/browser/layout_test/layout_test_bluetooth_fake_adapter_setter_impl.cc b/content/shell/browser/layout_test/layout_test_bluetooth_fake_adapter_setter_impl.cc
index 336811f4..f06a649 100644
--- a/content/shell/browser/layout_test/layout_test_bluetooth_fake_adapter_setter_impl.cc
+++ b/content/shell/browser/layout_test/layout_test_bluetooth_fake_adapter_setter_impl.cc
@@ -25,7 +25,7 @@
 void LayoutTestBluetoothFakeAdapterSetterImpl::Create(
     mojom::LayoutTestBluetoothFakeAdapterSetterRequest request) {
   mojo::MakeStrongBinding(
-      base::MakeUnique<LayoutTestBluetoothFakeAdapterSetterImpl>(),
+      std::make_unique<LayoutTestBluetoothFakeAdapterSetterImpl>(),
       std::move(request));
 }
 
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 969bc250..c282c959 100644
--- a/content/shell/browser/layout_test/layout_test_message_filter.cc
+++ b/content/shell/browser/layout_test/layout_test_message_filter.cc
@@ -156,8 +156,10 @@
 }
 
 void LayoutTestMessageFilter::OnDeleteAllCookies() {
-  request_context_getter_->GetURLRequestContext()->cookie_store()
-      ->DeleteAllAsync(net::CookieStore::DeleteCallback());
+  net::URLRequestContext* context =
+      request_context_getter_->GetURLRequestContext();
+  if (context)
+    context->cookie_store()->DeleteAllAsync(net::CookieStore::DeleteCallback());
 }
 
 void LayoutTestMessageFilter::OnSetPermission(
diff --git a/content/shell/browser/layout_test/layout_test_permission_manager.cc b/content/shell/browser/layout_test/layout_test_permission_manager.cc
index 34c873df..726f641 100644
--- a/content/shell/browser/layout_test/layout_test_permission_manager.cc
+++ b/content/shell/browser/layout_test/layout_test_permission_manager.cc
@@ -155,7 +155,7 @@
     const base::Callback<void(blink::mojom::PermissionStatus)>& callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
-  auto subscription = base::MakeUnique<Subscription>();
+  auto subscription = std::make_unique<Subscription>();
   subscription->permission =
       PermissionDescription(permission, requesting_origin, embedding_origin);
   subscription->callback = callback;
diff --git a/content/shell/browser/layout_test/mojo_layout_test_helper.cc b/content/shell/browser/layout_test/mojo_layout_test_helper.cc
index c420a9e9..45c30d0 100644
--- a/content/shell/browser/layout_test/mojo_layout_test_helper.cc
+++ b/content/shell/browser/layout_test/mojo_layout_test_helper.cc
@@ -14,7 +14,7 @@
 
 // static
 void MojoLayoutTestHelper::Create(mojom::MojoLayoutTestHelperRequest request) {
-  mojo::MakeStrongBinding(base::MakeUnique<MojoLayoutTestHelper>(),
+  mojo::MakeStrongBinding(std::make_unique<MojoLayoutTestHelper>(),
                           std::move(request));
 }
 
diff --git a/content/shell/browser/layout_test/scoped_android_configuration.cc b/content/shell/browser/layout_test/scoped_android_configuration.cc
index 90b3225..69f506c 100644
--- a/content/shell/browser/layout_test/scoped_android_configuration.cc
+++ b/content/shell/browser/layout_test/scoped_android_configuration.cc
@@ -59,7 +59,7 @@
       << "Failed to convert " << endpoint.ToString() << " to sockaddr.";
 
   std::unique_ptr<net::SocketPosix> socket(
-      base::MakeUnique<net::SocketPosix>());
+      std::make_unique<net::SocketPosix>());
 
   int result = socket->Open(AF_INET);
   LOG_IF(FATAL, net::OK != result) << "Failed to open socket for "
diff --git a/content/shell/browser/layout_test/test_info_extractor.cc b/content/shell/browser/layout_test/test_info_extractor.cc
index beedfeb..9804e95d 100644
--- a/content/shell/browser/layout_test/test_info_extractor.cc
+++ b/content/shell/browser/layout_test/test_info_extractor.cc
@@ -64,7 +64,7 @@
   GURL test_url;
 #if defined(OS_ANDROID)
   if (GetTestUrlForAndroid(path_or_url, &test_url)) {
-    return base::MakeUnique<TestInfo>(test_url, enable_pixel_dumping,
+    return std::make_unique<TestInfo>(test_url, enable_pixel_dumping,
                                       expected_pixel_hash, base::FilePath());
   }
 #endif
@@ -99,7 +99,7 @@
     current_working_directory = local_path.DirName();
   else
     base::GetCurrentDirectory(&current_working_directory);
-  return base::MakeUnique<TestInfo>(test_url, enable_pixel_dumping,
+  return std::make_unique<TestInfo>(test_url, enable_pixel_dumping,
                                     expected_pixel_hash,
                                     current_working_directory);
 }
diff --git a/content/shell/browser/shell_browser_main_parts.cc b/content/shell/browser/shell_browser_main_parts.cc
index d0f6b85..f35cb4f 100644
--- a/content/shell/browser/shell_browser_main_parts.cc
+++ b/content/shell/browser/shell_browser_main_parts.cc
@@ -162,7 +162,7 @@
         base::CommandLine::ForCurrentProcess()->GetSwitchValuePath(
             switches::kCrashDumpsDir);
     breakpad::CrashDumpObserver::GetInstance()->RegisterClient(
-        base::MakeUnique<breakpad::ChildProcessCrashObserver>(
+        std::make_unique<breakpad::ChildProcessCrashObserver>(
             crash_dumps_dir, kAndroidMinidumpDescriptor,
             base::Bind(&base::DoNothing)));
   }
diff --git a/content/shell/browser/shell_content_browser_client.cc b/content/shell/browser/shell_content_browser_client.cc
index 632db36..aeb5d0b 100644
--- a/content/shell/browser/shell_content_browser_client.cc
+++ b/content/shell/browser/shell_content_browser_client.cc
@@ -202,7 +202,7 @@
     const std::string& interface_name,
     mojo::ScopedMessagePipeHandle interface_pipe) {
   if (!frame_interfaces_) {
-    frame_interfaces_ = base::MakeUnique<
+    frame_interfaces_ = std::make_unique<
         service_manager::BinderRegistryWithArgs<content::RenderFrameHost*>>();
     ExposeInterfacesToFrame(frame_interfaces_.get());
   }
diff --git a/content/shell/browser/shell_devtools_bindings.cc b/content/shell/browser/shell_devtools_bindings.cc
index 52a2a40..6cb5a3e 100644
--- a/content/shell/browser/shell_devtools_bindings.cc
+++ b/content/shell/browser/shell_devtools_bindings.cc
@@ -337,7 +337,7 @@
   DCHECK(it != pending_requests_.end());
 
   base::DictionaryValue response;
-  auto headers = base::MakeUnique<base::DictionaryValue>();
+  auto headers = std::make_unique<base::DictionaryValue>();
   net::HttpResponseHeaders* rh = source->GetResponseHeaders();
   response.SetInteger("statusCode", rh ? rh->response_code() : 200);
 
diff --git a/content/shell/browser/shell_net_log.cc b/content/shell/browser/shell_net_log.cc
index 9d9e5565..7958b16 100644
--- a/content/shell/browser/shell_net_log.cc
+++ b/content/shell/browser/shell_net_log.cc
@@ -28,7 +28,7 @@
       net::GetNetConstants();
 
   // Add a dictionary with client information
-  auto dict = base::MakeUnique<base::DictionaryValue>();
+  auto dict = std::make_unique<base::DictionaryValue>();
 
   dict->SetString("name", app_name);
   dict->SetString(
diff --git a/content/shell/browser/shell_url_request_context_getter.cc b/content/shell/browser/shell_url_request_context_getter.cc
index 5a37caf..4ae2996 100644
--- a/content/shell/browser/shell_url_request_context_getter.cc
+++ b/content/shell/browser/shell_url_request_context_getter.cc
@@ -136,7 +136,7 @@
     std::unique_ptr<net::CookieStore> cookie_store =
         CreateCookieStore(CookieStoreConfig());
     std::unique_ptr<net::ChannelIDService> channel_id_service =
-        base::MakeUnique<net::ChannelIDService>(
+        std::make_unique<net::ChannelIDService>(
             new net::DefaultChannelIDStore(nullptr));
     cookie_store->SetChannelIDServiceID(channel_id_service->GetUniqueID());
     builder.SetCookieAndChannelIdStores(std::move(cookie_store),
@@ -205,7 +205,7 @@
 #if BUILDFLAG(ENABLE_REPORTING)
     if (base::FeatureList::IsEnabled(features::kReporting)) {
       std::unique_ptr<net::ReportingPolicy> reporting_policy =
-          base::MakeUnique<net::ReportingPolicy>();
+          std::make_unique<net::ReportingPolicy>();
       if (command_line.HasSwitch(switches::kRunLayoutTest))
         reporting_policy->delivery_interval =
             base::TimeDelta::FromMilliseconds(100);
diff --git a/content/shell/gpu/shell_content_gpu_client.cc b/content/shell/gpu/shell_content_gpu_client.cc
index 49484b36..77e4f68b8 100644
--- a/content/shell/gpu/shell_content_gpu_client.cc
+++ b/content/shell/gpu/shell_content_gpu_client.cc
@@ -19,7 +19,7 @@
     service_manager::BinderRegistry* registry) {
   registry->AddInterface<mojom::PowerMonitorTest>(
       base::Bind(&PowerMonitorTestImpl::MakeStrongBinding,
-                 base::Passed(base::MakeUnique<PowerMonitorTestImpl>())),
+                 base::Passed(std::make_unique<PowerMonitorTestImpl>())),
       base::ThreadTaskRunnerHandle::Get());
 }
 
diff --git a/content/shell/renderer/layout_test/blink_test_runner.cc b/content/shell/renderer/layout_test/blink_test_runner.cc
index faec468..f0130fa 100644
--- a/content/shell/renderer/layout_test/blink_test_runner.cc
+++ b/content/shell/renderer/layout_test/blink_test_runner.cc
@@ -705,7 +705,7 @@
     blink::WebMediaStream* stream) {
   DCHECK(stream);
 #if BUILDFLAG(ENABLE_WEBRTC)
-  return AddVideoTrackToMediaStream(base::MakeUnique<MockVideoCapturerSource>(),
+  return AddVideoTrackToMediaStream(std::make_unique<MockVideoCapturerSource>(),
                                     false,  // is_remote
                                     stream);
 #else
diff --git a/content/shell/renderer/layout_test/leak_detector.cc b/content/shell/renderer/layout_test/leak_detector.cc
index 74c06caf..d21b3db 100644
--- a/content/shell/renderer/layout_test/leak_detector.cc
+++ b/content/shell/renderer/layout_test/leak_detector.cc
@@ -80,27 +80,27 @@
 
   if (previous_result_.number_of_live_audio_nodes <
       result.number_of_live_audio_nodes) {
-    auto list = base::MakeUnique<base::ListValue>();
+    auto list = std::make_unique<base::ListValue>();
     list->AppendInteger(previous_result_.number_of_live_audio_nodes);
     list->AppendInteger(result.number_of_live_audio_nodes);
     detail.Set("numberOfLiveAudioNodes", std::move(list));
   }
   if (previous_result_.number_of_live_documents <
       result.number_of_live_documents) {
-    auto list = base::MakeUnique<base::ListValue>();
+    auto list = std::make_unique<base::ListValue>();
     list->AppendInteger(previous_result_.number_of_live_documents);
     list->AppendInteger(result.number_of_live_documents);
     detail.Set("numberOfLiveDocuments", std::move(list));
   }
   if (previous_result_.number_of_live_nodes < result.number_of_live_nodes) {
-    auto list = base::MakeUnique<base::ListValue>();
+    auto list = std::make_unique<base::ListValue>();
     list->AppendInteger(previous_result_.number_of_live_nodes);
     list->AppendInteger(result.number_of_live_nodes);
     detail.Set("numberOfLiveNodes", std::move(list));
   }
   if (previous_result_.number_of_live_layout_objects <
       result.number_of_live_layout_objects) {
-    auto list = base::MakeUnique<base::ListValue>();
+    auto list = std::make_unique<base::ListValue>();
     list->AppendInteger(previous_result_.number_of_live_layout_objects);
     list->AppendInteger(result.number_of_live_layout_objects);
     detail.Set("numberOfLiveLayoutObjects", std::move(list));
@@ -110,41 +110,41 @@
   if (previous_result_.number_of_live_resources <
       (result.number_of_live_resources -
        result.number_of_live_ua_css_resources)) {
-    auto list = base::MakeUnique<base::ListValue>();
+    auto list = std::make_unique<base::ListValue>();
     list->AppendInteger(previous_result_.number_of_live_resources);
     list->AppendInteger(result.number_of_live_resources);
     detail.Set("numberOfLiveResources", std::move(list));
   }
   if (previous_result_.number_of_live_suspendable_objects <
       result.number_of_live_suspendable_objects) {
-    auto list = base::MakeUnique<base::ListValue>();
+    auto list = std::make_unique<base::ListValue>();
     list->AppendInteger(previous_result_.number_of_live_suspendable_objects);
     list->AppendInteger(result.number_of_live_suspendable_objects);
     detail.Set("numberOfLiveSuspendableObjects", std::move(list));
   }
   if (previous_result_.number_of_live_script_promises <
       result.number_of_live_script_promises) {
-    auto list = base::MakeUnique<base::ListValue>();
+    auto list = std::make_unique<base::ListValue>();
     list->AppendInteger(previous_result_.number_of_live_script_promises);
     list->AppendInteger(result.number_of_live_script_promises);
     detail.Set("numberOfLiveScriptPromises", std::move(list));
   }
   if (previous_result_.number_of_live_frames < result.number_of_live_frames) {
-    auto list = base::MakeUnique<base::ListValue>();
+    auto list = std::make_unique<base::ListValue>();
     list->AppendInteger(previous_result_.number_of_live_frames);
     list->AppendInteger(result.number_of_live_frames);
     detail.Set("numberOfLiveFrames", std::move(list));
   }
   if (previous_result_.number_of_live_v8_per_context_data <
       result.number_of_live_v8_per_context_data) {
-    auto list = base::MakeUnique<base::ListValue>();
+    auto list = std::make_unique<base::ListValue>();
     list->AppendInteger(previous_result_.number_of_live_v8_per_context_data);
     list->AppendInteger(result.number_of_live_v8_per_context_data);
     detail.Set("numberOfLiveV8PerContextData", std::move(list));
   }
   if (previous_result_.number_of_worker_global_scopes <
       result.number_of_worker_global_scopes) {
-    auto list = base::MakeUnique<base::ListValue>();
+    auto list = std::make_unique<base::ListValue>();
     list->AppendInteger(previous_result_.number_of_worker_global_scopes);
     list->AppendInteger(result.number_of_worker_global_scopes);
     detail.Set("numberOfWorkerGlobalScopes", std::move(list));
diff --git a/content/shell/renderer/shell_content_renderer_client.cc b/content/shell/renderer/shell_content_renderer_client.cc
index 252ce19..7cac142b 100644
--- a/content/shell/renderer/shell_content_renderer_client.cc
+++ b/content/shell/renderer/shell_content_renderer_client.cc
@@ -107,17 +107,17 @@
 void ShellContentRendererClient::RenderThreadStarted() {
   web_cache_impl_.reset(new web_cache::WebCacheImpl());
 
-  auto registry = base::MakeUnique<service_manager::BinderRegistry>();
+  auto registry = std::make_unique<service_manager::BinderRegistry>();
   registry->AddInterface<mojom::TestService>(
       base::Bind(&CreateTestService), base::ThreadTaskRunnerHandle::Get());
   registry->AddInterface<mojom::PowerMonitorTest>(
       base::Bind(&PowerMonitorTestImpl::MakeStrongBinding,
-                 base::Passed(base::MakeUnique<PowerMonitorTestImpl>())),
+                 base::Passed(std::make_unique<PowerMonitorTestImpl>())),
       base::ThreadTaskRunnerHandle::Get());
   content::ChildThread::Get()
       ->GetServiceManagerConnection()
       ->AddConnectionFilter(
-          base::MakeUnique<SimpleConnectionFilter>(std::move(registry)));
+          std::make_unique<SimpleConnectionFilter>(std::move(registry)));
 }
 
 void ShellContentRendererClient::RenderViewCreated(RenderView* render_view) {
diff --git a/content/shell/test_runner/tracked_dictionary.cc b/content/shell/test_runner/tracked_dictionary.cc
index 457b922..4b2a563 100644
--- a/content/shell/test_runner/tracked_dictionary.cc
+++ b/content/shell/test_runner/tracked_dictionary.cc
@@ -40,12 +40,12 @@
 }
 
 void TrackedDictionary::SetBoolean(const std::string& path, bool new_value) {
-  Set(path, base::MakeUnique<base::Value>(new_value));
+  Set(path, std::make_unique<base::Value>(new_value));
 }
 
 void TrackedDictionary::SetString(const std::string& path,
                                   const std::string& new_value) {
-  Set(path, base::MakeUnique<base::Value>(new_value));
+  Set(path, std::make_unique<base::Value>(new_value));
 }
 
 }  // namespace test_runner
diff --git a/content/shell/test_runner/web_test_interfaces.cc b/content/shell/test_runner/web_test_interfaces.cc
index a96d24a..e2733d0 100644
--- a/content/shell/test_runner/web_test_interfaces.cc
+++ b/content/shell/test_runner/web_test_interfaces.cc
@@ -68,18 +68,18 @@
 
 std::unique_ptr<WebMediaStreamCenter>
 WebTestInterfaces::CreateMediaStreamCenter(WebMediaStreamCenterClient* client) {
-  return base::MakeUnique<MockWebMediaStreamCenter>();
+  return std::make_unique<MockWebMediaStreamCenter>();
 }
 
 std::unique_ptr<WebMIDIAccessor> WebTestInterfaces::CreateMIDIAccessor(
     WebMIDIAccessorClient* client) {
-  return base::MakeUnique<MockWebMIDIAccessor>(client, interfaces_.get());
+  return std::make_unique<MockWebMIDIAccessor>(client, interfaces_.get());
 }
 
 std::unique_ptr<WebAudioDevice> WebTestInterfaces::CreateAudioDevice(
     double sample_rate,
     int frames_per_buffer) {
-  return base::MakeUnique<MockWebAudioDevice>(sample_rate, frames_per_buffer);
+  return std::make_unique<MockWebAudioDevice>(sample_rate, frames_per_buffer);
 }
 
 std::unique_ptr<WebFrameTestClient> WebTestInterfaces::CreateWebFrameTestClient(
@@ -87,20 +87,20 @@
     WebFrameTestProxyBase* web_frame_test_proxy_base) {
   // TODO(lukasza): Do not pass the WebTestDelegate below - it's lifetime can
   // differ from the lifetime of WebFrameTestClient - https://crbug.com/606594.
-  return base::MakeUnique<WebFrameTestClient>(interfaces_->GetDelegate(),
+  return std::make_unique<WebFrameTestClient>(interfaces_->GetDelegate(),
                                               web_view_test_proxy_base,
                                               web_frame_test_proxy_base);
 }
 
 std::unique_ptr<WebViewTestClient> WebTestInterfaces::CreateWebViewTestClient(
     WebViewTestProxyBase* web_view_test_proxy_base) {
-  return base::MakeUnique<WebViewTestClient>(web_view_test_proxy_base);
+  return std::make_unique<WebViewTestClient>(web_view_test_proxy_base);
 }
 
 std::unique_ptr<WebWidgetTestClient>
 WebTestInterfaces::CreateWebWidgetTestClient(
     WebWidgetTestProxyBase* web_widget_test_proxy_base) {
-  return base::MakeUnique<WebWidgetTestClient>(web_widget_test_proxy_base);
+  return std::make_unique<WebWidgetTestClient>(web_widget_test_proxy_base);
 }
 
 std::vector<blink::WebView*> WebTestInterfaces::GetWindowList() {
diff --git a/content/shell/utility/shell_content_utility_client.cc b/content/shell/utility/shell_content_utility_client.cc
index 6de4c383..e74888d 100644
--- a/content/shell/utility/shell_content_utility_client.cc
+++ b/content/shell/utility/shell_content_utility_client.cc
@@ -83,17 +83,17 @@
 }
 
 void ShellContentUtilityClient::UtilityThreadStarted() {
-  auto registry = base::MakeUnique<service_manager::BinderRegistry>();
+  auto registry = std::make_unique<service_manager::BinderRegistry>();
   registry->AddInterface(base::Bind(&TestServiceImpl::Create),
                          base::ThreadTaskRunnerHandle::Get());
   registry->AddInterface<mojom::PowerMonitorTest>(
       base::Bind(&PowerMonitorTestImpl::MakeStrongBinding,
-                 base::Passed(base::MakeUnique<PowerMonitorTestImpl>())),
+                 base::Passed(std::make_unique<PowerMonitorTestImpl>())),
       base::ThreadTaskRunnerHandle::Get());
   content::ChildThread::Get()
       ->GetServiceManagerConnection()
       ->AddConnectionFilter(
-          base::MakeUnique<SimpleConnectionFilter>(std::move(registry)));
+          std::make_unique<SimpleConnectionFilter>(std::move(registry)));
 }
 
 void ShellContentUtilityClient::RegisterServices(StaticServiceMap* services) {
diff --git a/content/test/content_browser_test_utils_internal.cc b/content/test/content_browser_test_utils_internal.cc
index f20ab7f..1c7c916 100644
--- a/content/test/content_browser_test_utils_internal.cc
+++ b/content/test/content_browser_test_utils_internal.cc
@@ -298,7 +298,7 @@
     std::vector<std::unique_ptr<content::ResourceThrottle>>* throttles) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
   if (request->url() == url_)
-    throttles->push_back(base::MakeUnique<HttpRequestStallThrottle>());
+    throttles->push_back(std::make_unique<HttpRequestStallThrottle>());
 }
 
 FileChooserDelegate::FileChooserDelegate(const base::FilePath& file)
diff --git a/content/test/did_commit_provisional_load_interceptor.cc b/content/test/did_commit_provisional_load_interceptor.cc
index 4a84843..46bd05a 100644
--- a/content/test/did_commit_provisional_load_interceptor.cc
+++ b/content/test/did_commit_provisional_load_interceptor.cc
@@ -67,7 +67,7 @@
     RenderFrameHost* render_frame_host) {
   bool did_insert;
   std::tie(std::ignore, did_insert) = frame_agents_.emplace(
-      render_frame_host, base::MakeUnique<FrameAgent>(this, render_frame_host));
+      render_frame_host, std::make_unique<FrameAgent>(this, render_frame_host));
   DCHECK(did_insert);
 }
 
diff --git a/content/test/fuzzer/fuzzer_support.cc b/content/test/fuzzer/fuzzer_support.cc
index eb767e6..8b8ed62 100644
--- a/content/test/fuzzer/fuzzer_support.cc
+++ b/content/test/fuzzer/fuzzer_support.cc
@@ -34,7 +34,7 @@
                                  gin::IsolateHolder::kStableV8Extras,
                                  gin::ArrayBufferAllocator::SharedInstance());
 
-  adapter = base::MakeUnique<RenderViewTestAdapter>();
+  adapter = std::make_unique<RenderViewTestAdapter>();
   adapter->SetUp();
 }
 
diff --git a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
index df5322e..7fa3ad2c 100644
--- a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
+++ b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
@@ -346,6 +346,8 @@
         ['mac', ('nvidia', 0xfe9)], bug=483282)
     self.Fail('conformance/attribs/gl-disabled-vertex-attrib.html',
         ['mac', ('nvidia', 0xfe9)], bug=483282)
+    self.Fail('conformance/canvas/drawingbuffer-static-canvas-test.html',
+        ['highsierra', ('nvidia', 0xfe9)], bug=775202)
     self.Flaky(
         'conformance/extensions/webgl-compressed-texture-size-limit.html',
         ['mac', ('nvidia', 0xfe9)], bug=483282)
diff --git a/content/test/layouttest_support.cc b/content/test/layouttest_support.cc
index c7a0fee6..30c9b172 100644
--- a/content/test/layouttest_support.cc
+++ b/content/test/layouttest_support.cc
@@ -352,7 +352,7 @@
 
     constexpr bool disable_display_vsync = false;
     constexpr double refresh_rate = 60.0;
-    auto layer_tree_frame_sink = base::MakeUnique<viz::TestLayerTreeFrameSink>(
+    auto layer_tree_frame_sink = std::make_unique<viz::TestLayerTreeFrameSink>(
         std::move(compositor_context_provider),
         std::move(worker_context_provider), nullptr /* shared_bitmap_manager */,
         gpu_memory_buffer_manager, renderer_settings, task_runner,
@@ -369,7 +369,7 @@
     // may not have been created yet. Instead, we wait until OnCommit to find
     // the currently active LayerTreeFrameSink for the given RenderWidget
     // routing_id.
-    return base::MakeUnique<CopyRequestSwapPromise>(
+    return std::make_unique<CopyRequestSwapPromise>(
         std::move(request),
         base::Bind(
             &LayoutTestDependenciesImpl::FindLayerTreeFrameSink,
@@ -407,7 +407,7 @@
     context_provider->BindToCurrentThread();
 
     bool flipped_output_surface = false;
-    return base::MakeUnique<cc::PixelTestOutputSurface>(
+    return std::make_unique<cc::PixelTestOutputSurface>(
         std::move(context_provider), flipped_output_surface);
   }
   void DisplayReceivedLocalSurfaceId(
@@ -436,7 +436,7 @@
 
 void EnableRendererLayoutTestMode() {
   RenderThreadImpl::current()->set_layout_test_dependencies(
-      base::MakeUnique<LayoutTestDependenciesImpl>());
+      std::make_unique<LayoutTestDependenciesImpl>());
 
 #if defined(OS_WIN)
   RegisterSideloadedTypefaces(SkFontMgr_New_DirectWrite().get());
diff --git a/content/test/mock_platform_notification_service.cc b/content/test/mock_platform_notification_service.cc
index be6cdaf..cb14254 100644
--- a/content/test/mock_platform_notification_service.cc
+++ b/content/test/mock_platform_notification_service.cc
@@ -82,7 +82,7 @@
     BrowserContext* browser_context,
     const DisplayedNotificationsCallback& callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  auto displayed_notifications = base::MakeUnique<std::set<std::string>>();
+  auto displayed_notifications = std::make_unique<std::set<std::string>>();
 
   for (const auto& kv : persistent_notifications_)
     displayed_notifications->insert(kv.first);
diff --git a/content/test/mock_widget_impl.cc b/content/test/mock_widget_impl.cc
index d3c5317..8fb9fa98 100644
--- a/content/test/mock_widget_impl.cc
+++ b/content/test/mock_widget_impl.cc
@@ -14,7 +14,7 @@
 void MockWidgetImpl::SetupWidgetInputHandler(
     mojom::WidgetInputHandlerRequest request,
     mojom::WidgetInputHandlerHostPtr host) {
-  input_handler_ = base::MakeUnique<MockWidgetInputHandler>(std::move(request),
+  input_handler_ = std::make_unique<MockWidgetInputHandler>(std::move(request),
                                                             std::move(host));
 }
 
diff --git a/content/test/navigation_simulator_unittest.cc b/content/test/navigation_simulator_unittest.cc
index a5e5a8d7..8c70cfc 100644
--- a/content/test/navigation_simulator_unittest.cc
+++ b/content/test/navigation_simulator_unittest.cc
@@ -51,7 +51,7 @@
   }
 
   void DidStartNavigation(content::NavigationHandle* handle) override {
-    auto throttle = base::MakeUnique<TestNavigationThrottle>(handle);
+    auto throttle = std::make_unique<TestNavigationThrottle>(handle);
     throttle->SetCallback(
         TestNavigationThrottle::WILL_FAIL_REQUEST,
         base::BindRepeating(&NavigationSimulatorTest::OnWillFailRequestCalled,
diff --git a/content/test/test_blink_web_unit_test_support.cc b/content/test/test_blink_web_unit_test_support.cc
index b37dc7e..f7014dd 100644
--- a/content/test/test_blink_web_unit_test_support.cc
+++ b/content/test/test_blink_web_unit_test_support.cc
@@ -104,7 +104,7 @@
     DCHECK(platform_);
     // This loader should be used only for process-local resources such as
     // data URLs.
-    auto default_loader = base::MakeUnique<content::WebURLLoaderImpl>(
+    auto default_loader = std::make_unique<content::WebURLLoaderImpl>(
         nullptr, task_runner, nullptr);
     return platform_->GetURLLoaderMockFactory()->CreateURLLoader(
         std::move(default_loader));
@@ -296,7 +296,7 @@
     blink::WebGestureDevice device_source,
     const blink::WebFloatPoint& velocity,
     const blink::WebSize& cumulative_scroll) {
-  return base::MakeUnique<WebGestureCurveMock>(velocity, cumulative_scroll);
+  return std::make_unique<WebGestureCurveMock>(velocity, cumulative_scroll);
 }
 
 blink::WebURLLoaderMockFactory*
@@ -345,7 +345,7 @@
             pem_private_key.Utf8(), pem_certificate.Utf8()));
     if (!certificate)
       return nullptr;
-    return base::MakeUnique<RTCCertificate>(certificate);
+    return std::make_unique<RTCCertificate>(certificate);
   }
 };
 
@@ -355,7 +355,7 @@
 std::unique_ptr<blink::WebRTCCertificateGenerator>
 TestBlinkWebUnitTestSupport::CreateRTCCertificateGenerator() {
 #if BUILDFLAG(ENABLE_WEBRTC)
-  return base::MakeUnique<TestWebRTCCertificateGenerator>();
+  return std::make_unique<TestWebRTCCertificateGenerator>();
 #else
   return nullptr;
 #endif
diff --git a/content/test/test_render_frame.cc b/content/test/test_render_frame.cc
index 976d7c3..6704dfe 100644
--- a/content/test/test_render_frame.cc
+++ b/content/test/test_render_frame.cc
@@ -68,8 +68,7 @@
 
 TestRenderFrame::TestRenderFrame(const RenderFrameImpl::CreateParams& params)
     : RenderFrameImpl(params),
-      mock_frame_host_(base::MakeUnique<MockFrameHost>()) {
-}
+      mock_frame_host_(std::make_unique<MockFrameHost>()) {}
 
 TestRenderFrame::~TestRenderFrame() {}
 
diff --git a/content/test/test_render_frame_host.cc b/content/test/test_render_frame_host.cc
index 9ef75061..b5dc056 100644
--- a/content/test/test_render_frame_host.cc
+++ b/content/test/test_render_frame_host.cc
@@ -438,7 +438,7 @@
     navigation_handle()->set_response_headers_for_testing(response_headers);
   }
   DidCommitProvisionalLoad(
-      base::MakeUnique<FrameHostMsg_DidCommitProvisionalLoad_Params>(*params));
+      std::make_unique<FrameHostMsg_DidCommitProvisionalLoad_Params>(*params));
   last_commit_was_error_page_ = params->url_is_unreachable;
 }
 
diff --git a/content/test/test_render_frame_host_factory.cc b/content/test/test_render_frame_host_factory.cc
index 238a974..87183aa 100644
--- a/content/test/test_render_frame_host_factory.cc
+++ b/content/test/test_render_frame_host_factory.cc
@@ -31,7 +31,7 @@
     int32_t widget_routing_id,
     bool hidden,
     bool renderer_initiated_creation) {
-  return base::MakeUnique<TestRenderFrameHost>(
+  return std::make_unique<TestRenderFrameHost>(
       site_instance, render_view_host, delegate, rwh_delegate, frame_tree,
       frame_tree_node, routing_id, widget_routing_id, hidden);
 }
diff --git a/content/test/test_render_view_host_factory.cc b/content/test/test_render_view_host_factory.cc
index 32981f5..fdb187d 100644
--- a/content/test/test_render_view_host_factory.cc
+++ b/content/test/test_render_view_host_factory.cc
@@ -36,7 +36,7 @@
     int32_t main_frame_routing_id,
     bool swapped_out) {
   return new TestRenderViewHost(instance,
-                                base::MakeUnique<RenderWidgetHostImpl>(
+                                std::make_unique<RenderWidgetHostImpl>(
                                     widget_delegate, instance->GetProcess(),
                                     routing_id, nullptr, false /* hidden */),
                                 delegate, main_frame_routing_id, swapped_out);
diff --git a/content/utility/utility_service_factory.cc b/content/utility/utility_service_factory.cc
index 3c24787..d7e95ad 100644
--- a/content/utility/utility_service_factory.cc
+++ b/content/utility/utility_service_factory.cc
@@ -49,7 +49,7 @@
 namespace {
 
 std::unique_ptr<service_manager::Service> CreateVideoCaptureService() {
-  return base::MakeUnique<video_capture::ServiceImpl>();
+  return std::make_unique<video_capture::ServiceImpl>();
 }
 
 }  // anonymous namespace
@@ -98,7 +98,7 @@
 
 std::unique_ptr<service_manager::Service> CreateCdmService() {
   return std::unique_ptr<service_manager::Service>(
-      new ::media::MediaService(base::MakeUnique<CdmMojoMediaClient>()));
+      new ::media::MediaService(std::make_unique<CdmMojoMediaClient>()));
 }
 #endif  // BUILDFLAG(ENABLE_LIBRARY_CDMS)
 
@@ -114,7 +114,7 @@
 }  // namespace
 
 UtilityServiceFactory::UtilityServiceFactory()
-    : network_registry_(base::MakeUnique<service_manager::BinderRegistry>()) {}
+    : network_registry_(std::make_unique<service_manager::BinderRegistry>()) {}
 
 UtilityServiceFactory::~UtilityServiceFactory() {}
 
@@ -172,7 +172,7 @@
 
 std::unique_ptr<service_manager::Service>
 UtilityServiceFactory::CreateNetworkService() {
-  return base::MakeUnique<NetworkServiceImpl>(std::move(network_registry_));
+  return std::make_unique<NetworkServiceImpl>(std::move(network_registry_));
 }
 
 }  // namespace content
diff --git a/content/utility/utility_thread_impl.cc b/content/utility/utility_thread_impl.cc
index 711333f..cd4f9b8 100644
--- a/content/utility/utility_thread_impl.cc
+++ b/content/utility/utility_thread_impl.cc
@@ -70,7 +70,7 @@
 void UtilityThreadImpl::Init() {
   ChildProcess::current()->AddRefProcess();
 
-  auto registry = base::MakeUnique<service_manager::BinderRegistry>();
+  auto registry = std::make_unique<service_manager::BinderRegistry>();
   registry->AddInterface(
       base::Bind(&UtilityThreadImpl::BindServiceFactoryRequest,
                  base::Unretained(this)),
@@ -79,7 +79,7 @@
   content::ServiceManagerConnection* connection = GetServiceManagerConnection();
   if (connection) {
     connection->AddConnectionFilter(
-        base::MakeUnique<SimpleConnectionFilter>(std::move(registry)));
+        std::make_unique<SimpleConnectionFilter>(std::move(registry)));
   }
 
   GetContentClient()->utility()->UtilityThreadStarted();
diff --git a/extensions/browser/api/printer_provider/printer_provider_api.cc b/extensions/browser/api/printer_provider/printer_provider_api.cc
index d4eb968..01bdbe1 100644
--- a/extensions/browser/api/printer_provider/printer_provider_api.cc
+++ b/extensions/browser/api/printer_provider/printer_provider_api.cc
@@ -162,7 +162,7 @@
 
   // Adds a new request to the set. Only information needed is the callback
   // associated with the request. Returns the id assigned to the request.
-  int Add(const PrinterProviderAPI::GetCapabilityCallback& callback);
+  int Add(PrinterProviderAPI::GetCapabilityCallback callback);
 
   // Completes the request with the provided request id. It runs the request
   // callback and removes the request from the set.
@@ -187,7 +187,7 @@
   // Adds a new request to the set. Only information needed is the callback
   // associated with the request. Returns the id assigned to the request.
   int Add(const PrinterProviderPrintJob& job,
-          const PrinterProviderAPI::PrintCallback& callback);
+          PrinterProviderAPI::PrintCallback callback);
 
   // Gets print job associated with a request.
   const PrinterProviderPrintJob* GetPrintJob(int request_id) const;
@@ -220,7 +220,7 @@
 
   // Adds a new request to the set. Only information needed is the callback
   // associated with the request. Returns the id assigned to the request.
-  int Add(const PrinterProviderAPI::GetPrinterInfoCallback& callback);
+  int Add(PrinterProviderAPI::GetPrinterInfoCallback callback);
 
   // Completes the request with the provided request id. It runs the request
   // callback and removes the request from the set.
@@ -247,17 +247,16 @@
   // PrinterProviderAPI implementation:
   void DispatchGetPrintersRequested(
       const GetPrintersCallback& callback) override;
-  void DispatchGetCapabilityRequested(
-      const std::string& printer_id,
-      const GetCapabilityCallback& callback) override;
+  void DispatchGetCapabilityRequested(const std::string& printer_id,
+                                      GetCapabilityCallback callback) override;
   void DispatchPrintRequested(const PrinterProviderPrintJob& job,
-                              const PrintCallback& callback) override;
+                              PrintCallback callback) override;
   const PrinterProviderPrintJob* GetPrintJob(const Extension* extension,
                                              int request_id) const override;
   void DispatchGetUsbPrinterInfoRequested(
       const std::string& extension_id,
       scoped_refptr<UsbDevice> device,
-      const GetPrinterInfoCallback& callback) override;
+      GetPrinterInfoCallback callback) override;
 
   // PrinterProviderInternalAPIObserver implementation:
   void OnGetPrintersResult(
@@ -393,8 +392,8 @@
 }
 
 int PendingGetCapabilityRequests::Add(
-    const PrinterProviderAPI::GetCapabilityCallback& callback) {
-  pending_requests_[++last_request_id_] = callback;
+    PrinterProviderAPI::GetCapabilityCallback callback) {
+  pending_requests_[++last_request_id_] = std::move(callback);
   return last_request_id_;
 }
 
@@ -405,16 +404,16 @@
   if (it == pending_requests_.end())
     return false;
 
-  PrinterProviderAPI::GetCapabilityCallback callback = it->second;
+  PrinterProviderAPI::GetCapabilityCallback callback = std::move(it->second);
   pending_requests_.erase(it);
 
-  callback.Run(response);
+  std::move(callback).Run(response);
   return true;
 }
 
 void PendingGetCapabilityRequests::FailAll() {
   for (auto& request : pending_requests_)
-    request.second.Run(base::DictionaryValue());
+    std::move(request.second).Run(base::DictionaryValue());
   pending_requests_.clear();
 }
 
@@ -424,13 +423,12 @@
 PendingPrintRequests::~PendingPrintRequests() {
 }
 
-int PendingPrintRequests::Add(
-    const PrinterProviderPrintJob& job,
-    const PrinterProviderAPI::PrintCallback& callback) {
+int PendingPrintRequests::Add(const PrinterProviderPrintJob& job,
+                              PrinterProviderAPI::PrintCallback callback) {
   PrintRequest request;
-  request.callback = callback;
+  request.callback = std::move(callback);
   request.job = job;
-  pending_requests_[++last_request_id_] = request;
+  pending_requests_[++last_request_id_] = std::move(request);
   return last_request_id_;
 }
 
@@ -441,7 +439,7 @@
   if (it == pending_requests_.end())
     return false;
 
-  PrinterProviderAPI::PrintCallback callback = it->second.callback;
+  PrinterProviderAPI::PrintCallback callback = std::move(it->second.callback);
   pending_requests_.erase(it);
 
   base::Value error_value;
@@ -452,7 +450,7 @@
             : api::printer_provider_internal::ToString(error);
     error_value = base::Value(error_str);
   }
-  callback.Run(error_value);
+  std::move(callback).Run(error_value);
   return true;
 }
 
@@ -467,8 +465,8 @@
 
 void PendingPrintRequests::FailAll() {
   for (auto& request : pending_requests_) {
-    request.second.callback.Run(
-        base::Value(PrinterProviderAPI::GetDefaultPrintError()));
+    std::move(request.second.callback)
+        .Run(base::Value(PrinterProviderAPI::GetDefaultPrintError()));
   }
   pending_requests_.clear();
 }
@@ -480,8 +478,8 @@
 }
 
 int PendingUsbPrinterInfoRequests::Add(
-    const PrinterProviderAPI::GetPrinterInfoCallback& callback) {
-  pending_requests_[++last_request_id_] = callback;
+    PrinterProviderAPI::GetPrinterInfoCallback callback) {
+  pending_requests_[++last_request_id_] = std::move(callback);
   return last_request_id_;
 }
 
@@ -492,15 +490,15 @@
   if (it == pending_requests_.end())
     return;
 
-  PrinterProviderAPI::GetPrinterInfoCallback callback = it->second;
+  PrinterProviderAPI::GetPrinterInfoCallback callback = std::move(it->second);
   pending_requests_.erase(it);
 
-  callback.Run(printer_info);
+  std::move(callback).Run(printer_info);
 }
 
 void PendingUsbPrinterInfoRequests::FailAll() {
   for (auto& request : pending_requests_) {
-    request.second.Run(base::DictionaryValue());
+    std::move(request.second).Run(base::DictionaryValue());
   }
   pending_requests_.clear();
 }
@@ -552,11 +550,11 @@
 
 void PrinterProviderAPIImpl::DispatchGetCapabilityRequested(
     const std::string& printer_id,
-    const GetCapabilityCallback& callback) {
+    GetCapabilityCallback callback) {
   std::string extension_id;
   std::string internal_printer_id;
   if (!ParsePrinterId(printer_id, &extension_id, &internal_printer_id)) {
-    callback.Run(base::DictionaryValue());
+    std::move(callback).Run(base::DictionaryValue());
     return;
   }
 
@@ -564,11 +562,12 @@
   if (!event_router->ExtensionHasEventListener(
           extension_id,
           api::printer_provider::OnGetCapabilityRequested::kEventName)) {
-    callback.Run(base::DictionaryValue());
+    std::move(callback).Run(base::DictionaryValue());
     return;
   }
 
-  int request_id = pending_capability_requests_[extension_id].Add(callback);
+  int request_id =
+      pending_capability_requests_[extension_id].Add(std::move(callback));
 
   std::unique_ptr<base::ListValue> internal_args(new base::ListValue);
   // Request id is not part of the public API, but it will be massaged out in
@@ -586,18 +585,18 @@
 
 void PrinterProviderAPIImpl::DispatchPrintRequested(
     const PrinterProviderPrintJob& job,
-    const PrintCallback& callback) {
+    PrintCallback callback) {
   std::string extension_id;
   std::string internal_printer_id;
   if (!ParsePrinterId(job.printer_id, &extension_id, &internal_printer_id)) {
-    callback.Run(base::Value(GetDefaultPrintError()));
+    std::move(callback).Run(base::Value(GetDefaultPrintError()));
     return;
   }
 
   EventRouter* event_router = EventRouter::Get(browser_context_);
   if (!event_router->ExtensionHasEventListener(
           extension_id, api::printer_provider::OnPrintRequested::kEventName)) {
-    callback.Run(base::Value(GetDefaultPrintError()));
+    std::move(callback).Run(base::Value(GetDefaultPrintError()));
     return;
   }
 
@@ -610,14 +609,15 @@
   if (!ticket_value ||
       !api::printer_provider::PrintJob::Ticket::Populate(*ticket_value,
                                                          &print_job.ticket)) {
-    callback.Run(base::Value(api::printer_provider::ToString(
+    std::move(callback).Run(base::Value(api::printer_provider::ToString(
         api::printer_provider::PRINT_ERROR_INVALID_TICKET)));
     return;
   }
 
   print_job.content_type = job.content_type;
   print_job.title = base::UTF16ToUTF8(job.job_title);
-  int request_id = pending_print_requests_[extension_id].Add(job, callback);
+  int request_id =
+      pending_print_requests_[extension_id].Add(job, std::move(callback));
 
   std::unique_ptr<base::ListValue> internal_args(new base::ListValue);
   // Request id is not part of the public API and it will be massaged out in
@@ -643,17 +643,17 @@
 void PrinterProviderAPIImpl::DispatchGetUsbPrinterInfoRequested(
     const std::string& extension_id,
     scoped_refptr<UsbDevice> device,
-    const GetPrinterInfoCallback& callback) {
+    GetPrinterInfoCallback callback) {
   EventRouter* event_router = EventRouter::Get(browser_context_);
   if (!event_router->ExtensionHasEventListener(
           extension_id,
           api::printer_provider::OnGetUsbPrinterInfoRequested::kEventName)) {
-    callback.Run(base::DictionaryValue());
+    std::move(callback).Run(base::DictionaryValue());
     return;
   }
 
   int request_id =
-      pending_usb_printer_info_requests_[extension_id].Add(callback);
+      pending_usb_printer_info_requests_[extension_id].Add(std::move(callback));
   api::usb::Device api_device;
   UsbGuidMap::Get(browser_context_)->GetApiDevice(device, &api_device);
 
diff --git a/extensions/browser/api/printer_provider/printer_provider_api.h b/extensions/browser/api/printer_provider/printer_provider_api.h
index da9bc93..e5f3c68 100644
--- a/extensions/browser/api/printer_provider/printer_provider_api.h
+++ b/extensions/browser/api/printer_provider/printer_provider_api.h
@@ -36,12 +36,12 @@
 class PrinterProviderAPI : public KeyedService {
  public:
   using GetPrintersCallback =
-      base::Callback<void(const base::ListValue& printers, bool done)>;
+      base::RepeatingCallback<void(const base::ListValue& printers, bool done)>;
   using GetCapabilityCallback =
-      base::Callback<void(const base::DictionaryValue& capability)>;
-  using PrintCallback = base::Callback<void(const base::Value& error)>;
+      base::OnceCallback<void(const base::DictionaryValue& capability)>;
+  using PrintCallback = base::OnceCallback<void(const base::Value& error)>;
   using GetPrinterInfoCallback =
-      base::Callback<void(const base::DictionaryValue& printer_info)>;
+      base::OnceCallback<void(const base::DictionaryValue& printer_info)>;
 
   static PrinterProviderAPI* Create(content::BrowserContext* context);
 
@@ -74,7 +74,7 @@
   // reported by the extension.
   virtual void DispatchGetCapabilityRequested(
       const std::string& printer_id,
-      const GetCapabilityCallback& callback) = 0;
+      GetCapabilityCallback callback) = 0;
 
   // It dispatches chrome.printerProvider.onPrintRequested event with the
   // provided print job. The event is dispatched only to the extension that
@@ -82,7 +82,7 @@
   // |callback| is passed the print status returned by the extension, and it
   // must not be null.
   virtual void DispatchPrintRequested(const PrinterProviderPrintJob& job,
-                                      const PrintCallback& callback) = 0;
+                                      PrintCallback callback) = 0;
 
   // Returns print job associated with the print request with id |request_id|
   // for extension |extension|.
@@ -96,7 +96,7 @@
   virtual void DispatchGetUsbPrinterInfoRequested(
       const std::string& extension_id,
       scoped_refptr<device::UsbDevice> device,
-      const PrinterProviderAPI::GetPrinterInfoCallback& callback) = 0;
+      GetPrinterInfoCallback callback) = 0;
 };
 
 }  // namespace extensions
diff --git a/extensions/browser/api/printer_provider/printer_provider_apitest.cc b/extensions/browser/api/printer_provider/printer_provider_apitest.cc
index 102ef19..2b5d573 100644
--- a/extensions/browser/api/printer_provider/printer_provider_apitest.cc
+++ b/extensions/browser/api/printer_provider/printer_provider_apitest.cc
@@ -116,15 +116,15 @@
   void StartGetUsbPrinterInfoRequest(
       const std::string& extension_id,
       scoped_refptr<device::UsbDevice> device,
-      const PrinterProviderAPI::GetPrinterInfoCallback& callback) {
+      PrinterProviderAPI::GetPrinterInfoCallback callback) {
     PrinterProviderAPIFactory::GetInstance()
         ->GetForBrowserContext(browser_context())
-        ->DispatchGetUsbPrinterInfoRequested(extension_id, device, callback);
+        ->DispatchGetUsbPrinterInfoRequested(extension_id, device,
+                                             std::move(callback));
   }
 
-  void StartPrintRequestWithNoData(
-      const std::string& extension_id,
-      const PrinterProviderAPI::PrintCallback& callback) {
+  void StartPrintRequestWithNoData(const std::string& extension_id,
+                                   PrinterProviderAPI::PrintCallback callback) {
     PrinterProviderPrintJob job;
     job.printer_id = extension_id + ":printer_id";
     job.ticket_json = "{}";
@@ -132,12 +132,12 @@
 
     PrinterProviderAPIFactory::GetInstance()
         ->GetForBrowserContext(browser_context())
-        ->DispatchPrintRequested(job, callback);
+        ->DispatchPrintRequested(job, std::move(callback));
   }
 
   void StartPrintRequestUsingDocumentBytes(
       const std::string& extension_id,
-      const PrinterProviderAPI::PrintCallback& callback) {
+      PrinterProviderAPI::PrintCallback callback) {
     PrinterProviderPrintJob job;
     job.printer_id = extension_id + ":printer_id";
     job.job_title = base::ASCIIToUTF16("Print job");
@@ -149,12 +149,12 @@
 
     PrinterProviderAPIFactory::GetInstance()
         ->GetForBrowserContext(browser_context())
-        ->DispatchPrintRequested(job, callback);
+        ->DispatchPrintRequested(job, std::move(callback));
   }
 
   bool StartPrintRequestUsingFileInfo(
       const std::string& extension_id,
-      const PrinterProviderAPI::PrintCallback& callback) {
+      PrinterProviderAPI::PrintCallback callback) {
     PrinterProviderPrintJob job;
 
     const char kBytes[] = {'b', 'y', 't', 'e', 's'};
@@ -171,17 +171,17 @@
 
     PrinterProviderAPIFactory::GetInstance()
         ->GetForBrowserContext(browser_context())
-        ->DispatchPrintRequested(job, callback);
+        ->DispatchPrintRequested(job, std::move(callback));
     return true;
   }
 
   void StartCapabilityRequest(
       const std::string& extension_id,
-      const PrinterProviderAPI::GetCapabilityCallback& callback) {
+      PrinterProviderAPI::GetCapabilityCallback callback) {
     PrinterProviderAPIFactory::GetInstance()
         ->GetForBrowserContext(browser_context())
         ->DispatchGetCapabilityRequested(extension_id + ":printer_id",
-                                         callback);
+                                         std::move(callback));
   }
 
   // Loads chrome.printerProvider test app and initializes is for test
@@ -238,19 +238,21 @@
 
     switch (data_type) {
       case PRINT_REQUEST_DATA_TYPE_NOT_SET:
-        StartPrintRequestWithNoData(extension_id, callback);
+        StartPrintRequestWithNoData(extension_id, std::move(callback));
         break;
       case PRINT_REQUEST_DATA_TYPE_FILE:
-        ASSERT_TRUE(StartPrintRequestUsingFileInfo(extension_id, callback));
+        ASSERT_TRUE(
+            StartPrintRequestUsingFileInfo(extension_id, std::move(callback)));
         break;
       case PRINT_REQUEST_DATA_TYPE_FILE_DELETED: {
-        ASSERT_TRUE(StartPrintRequestUsingFileInfo(extension_id, callback));
+        ASSERT_TRUE(
+            StartPrintRequestUsingFileInfo(extension_id, std::move(callback)));
         base::ScopedAllowBlockingForTesting allow_blocking;
         ASSERT_TRUE(data_dir_.Delete());
         break;
       }
       case PRINT_REQUEST_DATA_TYPE_BYTES:
-        StartPrintRequestUsingDocumentBytes(extension_id, callback);
+        StartPrintRequestUsingDocumentBytes(extension_id, std::move(callback));
         break;
     }
 
diff --git a/ios/chrome/browser/ui/reading_list/BUILD.gn b/ios/chrome/browser/ui/reading_list/BUILD.gn
index efd5af8..94b52a18 100644
--- a/ios/chrome/browser/ui/reading_list/BUILD.gn
+++ b/ios/chrome/browser/ui/reading_list/BUILD.gn
@@ -123,6 +123,7 @@
     "//components/favicon/core",
     "//components/favicon/core/test:test_support",
     "//components/feature_engagement",
+    "//components/feature_engagement/test:test_support",
     "//components/prefs",
     "//components/reading_list/core",
     "//components/url_formatter",
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_coordinator_unittest.mm b/ios/chrome/browser/ui/reading_list/reading_list_coordinator_unittest.mm
index fbe4261..066b6ff8 100644
--- a/ios/chrome/browser/ui/reading_list/reading_list_coordinator_unittest.mm
+++ b/ios/chrome/browser/ui/reading_list/reading_list_coordinator_unittest.mm
@@ -11,6 +11,7 @@
 #include "components/feature_engagement/public/event_constants.h"
 #include "components/feature_engagement/public/feature_constants.h"
 #include "components/feature_engagement/public/tracker.h"
+#include "components/feature_engagement/test/mock_tracker.h"
 #include "components/reading_list/core/reading_list_entry.h"
 #include "components/reading_list/core/reading_list_model_impl.h"
 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
@@ -99,24 +100,6 @@
 
 @end
 
-#pragma mark - feature_engagement::Tracker
-namespace feature_engagement {
-namespace {
-
-class TrackerStub : public feature_engagement::Tracker {
- public:
-  MOCK_METHOD1(NotifyEvent, void(const std::string&));
-  MOCK_METHOD1(ShouldTriggerHelpUI, bool(const base::Feature& feature));
-  MOCK_METHOD1(GetTriggerState,
-               Tracker::TriggerState(const base::Feature& feature));
-  MOCK_METHOD1(Dismissed, void(const base::Feature& feature));
-  MOCK_METHOD0(IsInitialized, bool());
-  MOCK_METHOD1(AddOnInitializedCallback, void(OnInitializedCallback callback));
-};
-
-}  //  namespace
-}  //  namespace feature_engagement
-
 #pragma mark - ReadingListCoordinatorTest
 
 class ReadingListCoordinatorTest : public web::WebTestWithWebState {
@@ -127,7 +110,7 @@
     TestChromeBrowserState::Builder builder;
     builder.AddTestingFactory(
         feature_engagement::TrackerFactory::GetInstance(),
-        ReadingListCoordinatorTest::BuildFeatureEngagementTrackerStub);
+        ReadingListCoordinatorTest::BuildFeatureEngagementMockTracker);
     browser_state_ = builder.Build();
 
     reading_list_model_.reset(new ReadingListModelImpl(
@@ -164,9 +147,9 @@
                    toolbar:nil];
   }
 
-  static std::unique_ptr<KeyedService> BuildFeatureEngagementTrackerStub(
+  static std::unique_ptr<KeyedService> BuildFeatureEngagementMockTracker(
       web::BrowserState*) {
-    return base::MakeUnique<feature_engagement::TrackerStub>();
+    return base::MakeUnique<feature_engagement::test::MockTracker>();
   }
 
  private:
@@ -263,8 +246,8 @@
 
 TEST_F(ReadingListCoordinatorTest, SendViewedReadingListEventInStart) {
   // Setup.
-  feature_engagement::TrackerStub* tracker =
-      static_cast<feature_engagement::TrackerStub*>(
+  feature_engagement::test::MockTracker* tracker =
+      static_cast<feature_engagement::test::MockTracker*>(
           feature_engagement::TrackerFactory::GetForBrowserState(
               GetBrowserState()));
 
diff --git a/ios/chrome/browser/ui/stack_view/stack_view_controller.mm b/ios/chrome/browser/ui/stack_view/stack_view_controller.mm
index 1880551..4923d92 100644
--- a/ios/chrome/browser/ui/stack_view/stack_view_controller.mm
+++ b/ios/chrome/browser/ui/stack_view/stack_view_controller.mm
@@ -791,8 +791,22 @@
     }
   }
   [self.view addSubview:_scrollView];
-  [_scrollView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight |
-                                    UIViewAutoresizingFlexibleWidth)];
+
+  if (base::FeatureList::IsEnabled(kSafeAreaCompatibleToolbar)) {
+    [_scrollView setTranslatesAutoresizingMaskIntoConstraints:NO];
+    [NSLayoutConstraint activateConstraints:@[
+      [_scrollView.topAnchor
+          constraintEqualToAnchor:[_toolbarController view].bottomAnchor],
+      [_scrollView.leadingAnchor
+          constraintEqualToAnchor:self.view.leadingAnchor],
+      [_scrollView.trailingAnchor
+          constraintEqualToAnchor:self.view.trailingAnchor],
+      [_scrollView.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor]
+    ]];
+  } else {
+    [_scrollView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight |
+                                      UIViewAutoresizingFlexibleWidth)];
+  }
   [_scrollView setBounces:NO];
   [_scrollView setScrollsToTop:NO];
   [_scrollView setClipsToBounds:NO];
diff --git a/ios/web/web_state/error_translation_util.h b/ios/web/web_state/error_translation_util.h
index a766451..b71fbc42 100644
--- a/ios/web/web_state/error_translation_util.h
+++ b/ios/web/web_state/error_translation_util.h
@@ -9,14 +9,18 @@
 
 namespace web {
 
-// Translates an iOS-specific error into its net error equivalent and returns
-// a copy of |error| with the translation as its final underlying error.  The
+// Translates an CFNetwork error code to a net error code using |net_error_code|
+// as an out-parameter.  Returns true if a valid translation was found.
+bool GetNetErrorFromIOSErrorCode(NSInteger ios_error_code, int* net_error_code);
+
+// Translates an iOS-specific error into its net error equivalent and returns a
+// copy of |error| with the translation as its final underlying error.  The
 // underlying net error will have an error code of net::ERR_FAILED if no
 // specific translation of the iOS error is found.
 NSError* NetErrorFromError(NSError* error);
 
 // Same as above but uses |net_error_code| for underlying error.
-NSError* NetErrorFromError(NSError* error, NSInteger net_error_code);
+NSError* NetErrorFromError(NSError* error, int net_error_code);
 
 }  // namespace web
 
diff --git a/ios/web/web_state/error_translation_util.mm b/ios/web/web_state/error_translation_util.mm
index 4b07e2b3..f8d2603 100644
--- a/ios/web/web_state/error_translation_util.mm
+++ b/ios/web/web_state/error_translation_util.mm
@@ -16,11 +16,8 @@
 
 namespace web {
 
-namespace {
-// Translates an iOS error to a net error using |net_error_code| as an
-// out-parameter.  Returns true if a valid translation was found.
 bool GetNetErrorFromIOSErrorCode(NSInteger ios_error_code,
-                                 NSInteger* net_error_code) {
+                                 int* net_error_code) {
   DCHECK(net_error_code);
   bool translation_success = true;
   switch (ios_error_code) {
@@ -146,14 +143,13 @@
   }
   return translation_success;
 }
-}  // namespace
 
 NSError* NetErrorFromError(NSError* error) {
   DCHECK(error);
   NSError* underlying_error =
       base::ios::GetFinalUnderlyingErrorFromError(error);
 
-  NSInteger net_error_code = net::ERR_FAILED;
+  int net_error_code = net::ERR_FAILED;
   if ([underlying_error.domain isEqualToString:NSURLErrorDomain] ||
       [underlying_error.domain
           isEqualToString:static_cast<NSString*>(kCFErrorDomainCFNetwork)]) {
@@ -164,13 +160,14 @@
   return NetErrorFromError(error, net_error_code);
 }
 
-NSError* NetErrorFromError(NSError* error, NSInteger net_error_code) {
+NSError* NetErrorFromError(NSError* error, int net_error_code) {
   DCHECK(error);
   NSString* net_error_domain =
       [NSString stringWithUTF8String:net::kErrorDomain];
-  NSError* net_error = [NSError errorWithDomain:net_error_domain
-                                           code:net_error_code
-                                       userInfo:nil];
+  NSError* net_error =
+      [NSError errorWithDomain:net_error_domain
+                          code:static_cast<NSInteger>(net_error_code)
+                      userInfo:nil];
   return base::ios::ErrorWithAppendedUnderlyingError(error, net_error);
 }
 
diff --git a/ios/web/web_state/error_translation_util_unittest.mm b/ios/web/web_state/error_translation_util_unittest.mm
index aa0e019bd..77bf2bc 100644
--- a/ios/web/web_state/error_translation_util_unittest.mm
+++ b/ios/web/web_state/error_translation_util_unittest.mm
@@ -17,6 +17,8 @@
 #error "This file requires ARC support."
 #endif
 
+namespace web {
+
 // Test fixture for error translation testing.
 typedef PlatformTest ErrorTranslationUtilTest;
 
@@ -27,10 +29,20 @@
 }
 }  // namespcae
 
+// Tests translation of CFNetwork error code to net error code.
+TEST_F(ErrorTranslationUtilTest, ErrorCodeTranslation) {
+  int net_error_code = 0;
+  EXPECT_TRUE(GetNetErrorFromIOSErrorCode(kCFURLErrorUnknown, &net_error_code));
+  EXPECT_EQ(net::ERR_FAILED, net_error_code);
+
+  EXPECT_FALSE(GetNetErrorFromIOSErrorCode(kCFSOCKSErrorUnknownClientVersion,
+                                           &net_error_code));
+}
+
 // Tests translation of an error with empty domain and no underlying error.
 TEST_F(ErrorTranslationUtilTest, MalformedError) {
   NSError* error = [[NSError alloc] initWithDomain:@"" code:0 userInfo:nil];
-  NSError* net_error = web::NetErrorFromError(error);
+  NSError* net_error = NetErrorFromError(error);
 
   // Top level error should be the same as the original error.
   EXPECT_TRUE(net_error);
@@ -51,7 +63,7 @@
       initWithDomain:base::mac::CFToNSCast(kCFErrorDomainCFNetwork)
                 code:kCFURLErrorUnknown
             userInfo:nil];
-  NSError* net_error = web::NetErrorFromError(error);
+  NSError* net_error = NetErrorFromError(error);
 
   // Top level error should be the same as the original error.
   EXPECT_TRUE(net_error);
@@ -79,7 +91,7 @@
                              userInfo:@{
                                NSUnderlyingErrorKey : underlying_error,
                              }];
-  NSError* net_error = web::NetErrorFromError(error);
+  NSError* net_error = NetErrorFromError(error);
 
   // Top level error should be the same as the original error.
   EXPECT_TRUE(net_error);
@@ -114,7 +126,7 @@
                              userInfo:@{
                                NSUnderlyingErrorKey : underlying_error,
                              }];
-  NSError* net_error = web::NetErrorFromError(error, net::ERR_CONNECTION_RESET);
+  NSError* net_error = NetErrorFromError(error, net::ERR_CONNECTION_RESET);
 
   // Top level error should be the same as the original error.
   EXPECT_TRUE(net_error);
@@ -134,3 +146,5 @@
   EXPECT_NSEQ(GetNetErrorDomain(), [final_net_underlying_error domain]);
   EXPECT_EQ(net::ERR_CONNECTION_RESET, [final_net_underlying_error code]);
 }
+
+}  // namespace web
diff --git a/media/audio/audio_output_controller.h b/media/audio/audio_output_controller.h
index f8d849d5..d8082ed 100644
--- a/media/audio/audio_output_controller.h
+++ b/media/audio/audio_output_controller.h
@@ -124,7 +124,7 @@
   // Indicates whether audio power level analysis will be performed.  If false,
   // ReadCurrentPowerAndClip() can not be called.
   static bool will_monitor_audio_levels() {
-#if defined(OS_IOS)
+#if defined(OS_ANDROID) || defined(OS_IOS)
     return false;
 #else
     return true;
diff --git a/mojo/public/cpp/bindings/lib/map_data_internal.h b/mojo/public/cpp/bindings/lib/map_data_internal.h
index 4809d08b..217904fd 100644
--- a/mojo/public/cpp/bindings/lib/map_data_internal.h
+++ b/mojo/public/cpp/bindings/lib/map_data_internal.h
@@ -62,16 +62,13 @@
       return false;
     }
 
-    if (!ValidatePointerNonNullable(
-            object->keys, "null key array in map struct", validation_context) ||
+    if (!ValidatePointerNonNullable(object->keys, 0, validation_context) ||
         !ValidateContainer(object->keys, validation_context,
                            validate_params->key_validate_params)) {
       return false;
     }
 
-    if (!ValidatePointerNonNullable(object->values,
-                                    "null value array in map struct",
-                                    validation_context) ||
+    if (!ValidatePointerNonNullable(object->values, 1, validation_context) ||
         !ValidateContainer(object->values, validation_context,
                            validate_params->element_validate_params)) {
       return false;
diff --git a/mojo/public/cpp/bindings/lib/message_header_validator.cc b/mojo/public/cpp/bindings/lib/message_header_validator.cc
index f7fbb996..e326762 100644
--- a/mojo/public/cpp/bindings/lib/message_header_validator.cc
+++ b/mojo/public/cpp/bindings/lib/message_header_validator.cc
@@ -73,8 +73,7 @@
   //   payload size).
   // - Validation of the payload contents will be done separately based on the
   //   payload type.
-  if (!internal::ValidatePointerNonNullable(header_v2->payload,
-                                            "null payload in message header",
+  if (!internal::ValidatePointerNonNullable(header_v2->payload, 0,
                                             validation_context) ||
       !internal::ValidatePointer(header_v2->payload, validation_context) ||
       !validation_context->ClaimMemory(header_v2->payload.Get(), 1)) {
diff --git a/mojo/public/cpp/bindings/lib/validation_util.cc b/mojo/public/cpp/bindings/lib/validation_util.cc
index 7614df5..b657da3 100644
--- a/mojo/public/cpp/bindings/lib/validation_util.cc
+++ b/mojo/public/cpp/bindings/lib/validation_util.cc
@@ -8,6 +8,7 @@
 
 #include <limits>
 
+#include "base/strings/stringprintf.h"
 #include "mojo/public/cpp/bindings/lib/message_internal.h"
 #include "mojo/public/cpp/bindings/lib/serialization_util.h"
 #include "mojo/public/cpp/bindings/lib/validation_errors.h"
@@ -16,6 +17,17 @@
 namespace mojo {
 namespace internal {
 
+void ReportNonNullableValidationError(ValidationContext* validation_context,
+                                      ValidationError error,
+                                      int field_index) {
+  const char* null_or_invalid =
+      error == VALIDATION_ERROR_UNEXPECTED_NULL_POINTER ? "null" : "invalid";
+
+  std::string error_message =
+      base::StringPrintf("%s field %d", null_or_invalid, field_index);
+  ReportValidationError(validation_context, error, error_message.c_str());
+}
+
 bool ValidateStructHeaderAndClaimMemory(const void* data,
                                         ValidationContext* validation_context) {
   if (!IsAligned(data)) {
@@ -118,53 +130,53 @@
 
 bool ValidateHandleOrInterfaceNonNullable(
     const AssociatedInterface_Data& input,
-    const char* error_message,
+    int field_index,
     ValidationContext* validation_context) {
   if (IsHandleOrInterfaceValid(input))
     return true;
 
-  ReportValidationError(validation_context,
-                        VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID,
-                        error_message);
+  ReportNonNullableValidationError(
+      validation_context, VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID,
+      field_index);
   return false;
 }
 
 bool ValidateHandleOrInterfaceNonNullable(
     const AssociatedEndpointHandle_Data& input,
-    const char* error_message,
+    int field_index,
     ValidationContext* validation_context) {
   if (IsHandleOrInterfaceValid(input))
     return true;
 
-  ReportValidationError(validation_context,
-                        VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID,
-                        error_message);
+  ReportNonNullableValidationError(
+      validation_context, VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID,
+      field_index);
   return false;
 }
 
 bool ValidateHandleOrInterfaceNonNullable(
     const Interface_Data& input,
-    const char* error_message,
+    int field_index,
     ValidationContext* validation_context) {
   if (IsHandleOrInterfaceValid(input))
     return true;
 
-  ReportValidationError(validation_context,
-                        VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
-                        error_message);
+  ReportNonNullableValidationError(validation_context,
+                                   VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
+                                   field_index);
   return false;
 }
 
 bool ValidateHandleOrInterfaceNonNullable(
     const Handle_Data& input,
-    const char* error_message,
+    int field_index,
     ValidationContext* validation_context) {
   if (IsHandleOrInterfaceValid(input))
     return true;
 
-  ReportValidationError(validation_context,
-                        VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
-                        error_message);
+  ReportNonNullableValidationError(validation_context,
+                                   VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
+                                   field_index);
   return false;
 }
 
diff --git a/mojo/public/cpp/bindings/lib/validation_util.h b/mojo/public/cpp/bindings/lib/validation_util.h
index ea5a9916..59a3be43 100644
--- a/mojo/public/cpp/bindings/lib/validation_util.h
+++ b/mojo/public/cpp/bindings/lib/validation_util.h
@@ -18,6 +18,12 @@
 namespace mojo {
 namespace internal {
 
+// Calls ReportValidationError() with a constructed error string.
+MOJO_CPP_BINDINGS_EXPORT void ReportNonNullableValidationError(
+    ValidationContext* validation_context,
+    ValidationError error,
+    int field_index);
+
 // Checks whether decoding the pointer will overflow and produce a pointer
 // smaller than |offset|.
 inline bool ValidateEncodedPointer(const uint64_t* offset) {
@@ -85,27 +91,25 @@
 // |input| is not null/invalid.
 template <typename T>
 bool ValidatePointerNonNullable(const T& input,
-                                const char* error_message,
+                                int field_index,
                                 ValidationContext* validation_context) {
   if (input.offset)
     return true;
-
-  ReportValidationError(validation_context,
-                        VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
-                        error_message);
+  ReportNonNullableValidationError(validation_context,
+                                   VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
+                                   field_index);
   return false;
 }
 
 template <typename T>
 bool ValidateInlinedUnionNonNullable(const T& input,
-                                     const char* error_message,
+                                     int field_index,
                                      ValidationContext* validation_context) {
   if (!input.is_null())
     return true;
-
-  ReportValidationError(validation_context,
-                        VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
-                        error_message);
+  ReportNonNullableValidationError(validation_context,
+                                   VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
+                                   field_index);
   return false;
 }
 
@@ -120,19 +124,19 @@
 
 MOJO_CPP_BINDINGS_EXPORT bool ValidateHandleOrInterfaceNonNullable(
     const AssociatedInterface_Data& input,
-    const char* error_message,
+    int field_index,
     ValidationContext* validation_context);
 MOJO_CPP_BINDINGS_EXPORT bool ValidateHandleOrInterfaceNonNullable(
     const AssociatedEndpointHandle_Data& input,
-    const char* error_message,
+    int field_index,
     ValidationContext* validation_context);
 MOJO_CPP_BINDINGS_EXPORT bool ValidateHandleOrInterfaceNonNullable(
     const Interface_Data& input,
-    const char* error_message,
+    int field_index,
     ValidationContext* validation_context);
 MOJO_CPP_BINDINGS_EXPORT bool ValidateHandleOrInterfaceNonNullable(
     const Handle_Data& input,
-    const char* error_message,
+    int field_index,
     ValidationContext* validation_context);
 
 template <typename T>
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_definition.tmpl
index 9c1eae8..1638962 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/struct_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_definition.tmpl
@@ -61,7 +61,7 @@
     return true;
 {%-     endif %}
 {%-     set field_expr = "object->" ~ packed_field.field.name %}
-{{validation_macros.validate_field(packed_field.field, field_expr, struct.name, true)}}
+{{validation_macros.validate_field(packed_field.field, loop.index, field_expr, struct.name, true)}}
 {%-   endif %}
 {%- endfor %}
 
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl
index af5ea9f8..feff229 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl
@@ -32,7 +32,7 @@
 {%  for field in union.fields %}
     case {{enum_name}}::{{field.name|upper}}: {
 {%-   set field_expr = "object->data.f_" ~ field.name %}
-{{validation_macros.validate_field(field, field_expr, union.name, false)|indent(4)}}
+{{validation_macros.validate_field(field, loop.index, field_expr, union.name, false)|indent(4)}}
       return true;
     }
 {%- endfor %}
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/validation_macros.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/validation_macros.tmpl
index a50a585c..457f2f99 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/validation_macros.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/validation_macros.tmpl
@@ -2,20 +2,18 @@
     (struct/array/string/map/union). If it is a union, |union_is_inlined|
     indicates whether the union is inlined. (Nested unions are not inlined.)
     This macro is expanded by the Validate() method. #}
-{%- macro validate_object(field, field_expr, object_name, union_is_inlined) %}
+{%- macro validate_object(field, field_index, field_expr, union_is_inlined) %}
 {%-   set name = field.name %}
 {%-   set kind = field.kind %}
 {%-   if not kind|is_nullable_kind %}
 {%-     if kind|is_union_kind and union_is_inlined %}
   if (!mojo::internal::ValidateInlinedUnionNonNullable(
-          {{field_expr}}, "null {{name}} field in {{object_name}}",
-          validation_context)) {
+          {{field_expr}}, {{field_index}}, validation_context)) {
     return false;
   }
 {%-     else %}
   if (!mojo::internal::ValidatePointerNonNullable(
-          {{field_expr}}, "null {{name}} field in {{object_name}}",
-          validation_context)) {
+          {{field_expr}}, {{field_index}}, validation_context)) {
     return false;
   }
 {%-     endif %}
@@ -47,13 +45,12 @@
 {#- Validates the specified field, which is supposed to be a handle,
     an interface, an associated interface or an associated interface request.
     This macro is expanded by the Validate() method. #}
-{%- macro validate_handle_or_interface(field, field_expr, object_name) %}
+{%- macro validate_handle_or_interface(field, field_index, field_expr, object_name) %}
 {%-   set name = field.name %}
 {%-   set kind = field.kind %}
 {%-   if not kind|is_nullable_kind %}
   if (!mojo::internal::ValidateHandleOrInterfaceNonNullable(
-          {{field_expr}},
-          "invalid {{name}} field in {{object_name}}", validation_context)) {
+          {{field_expr}}, {{field_index}}, validation_context)) {
     return false;
   }
 {%-   endif %}
@@ -71,11 +68,11 @@
     return false;
 {%- endmacro %}
 
-{%- macro validate_field(field, field_expr, object_name, union_is_inlined) %}
+{%- macro validate_field(field, field_index, field_expr, object_name, union_is_inlined) %}
 {%-   if field.kind|is_object_kind -%}
-{{validate_object(field, field_expr, object_name, union_is_inlined)}}
+{{validate_object(field, field_index, field_expr, union_is_inlined)}}
 {%-   elif field.kind|is_any_handle_or_interface_kind -%}
-{{validate_handle_or_interface(field, field_expr, object_name)}}
+{{validate_handle_or_interface(field, field_index, field_expr, object_name)}}
 {%-   elif field.kind|is_enum_kind %}
 {{validate_enum(field, field_expr)}}
 {%-   endif %}
diff --git a/net/BUILD.gn b/net/BUILD.gn
index e4101cd..5962d19 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -40,13 +40,6 @@
 # Unix sockets are not supported on iOS, Fuchsia or NaCl.
 enable_unix_sockets = is_posix && !is_ios && !is_fuchsia && !is_nacl
 
-# True if certificates are represented with DER byte buffers. This can be true
-# in addition to use_nss_certs, in that case byte certs are used internally but
-# NSS is used for certificate verification.
-# TODO(mattm): crbug.com/671420: Implement and enable this for all platforms.
-use_byte_certs = is_mac || is_android || is_nacl || is_ios || is_win ||
-                 is_fuchsia || is_linux
-
 # Android and Fuchsia can't run testserver.py directly, so they use remote
 # test server.
 use_remote_test_server = is_android || is_fuchsia
@@ -63,7 +56,6 @@
     "ENABLE_MDNS=$enable_mdns",
     "ENABLE_REPORTING=$enable_reporting",
     "ENABLE_WEBSOCKETS=$enable_websockets",
-    "USE_BYTE_CERTS=$use_byte_certs",
     "INCLUDE_TRANSPORT_SECURITY_STATE_PRELOAD_LIST=$include_transport_security_state_preload_list",
   ]
 }
@@ -604,7 +596,6 @@
       "cert/test_root_certs_nss.cc",
       "cert/test_root_certs_win.cc",
       "cert/x509_certificate_known_roots_win.h",
-      "cert/x509_certificate_nss.cc",
       "cert/x509_util_android.cc",
       "cert/x509_util_ios.cc",
       "cert/x509_util_ios.h",
@@ -1820,14 +1811,6 @@
       ]
     }
 
-    if (use_byte_certs) {
-      if (use_nss_certs) {
-        sources -= [ "cert/x509_certificate_nss.cc" ]
-      }
-    } else {
-      sources -= [ "cert/x509_certificate_bytes.cc" ]
-    }
-
     if (!use_kerberos || is_android) {
       sources -= [
         "http/http_auth_gssapi_posix.cc",
@@ -1863,7 +1846,6 @@
         "cert/known_roots_nss.h",
         "cert/nss_cert_database.cc",
         "cert/nss_cert_database.h",
-        "cert/x509_certificate_nss.cc",
         "ssl/client_cert_store_nss.cc",
         "ssl/client_cert_store_nss.h",
         "third_party/mozilla_security_manager/nsNSSCertificateDB.cpp",
diff --git a/net/cert/cert_verify_proc_unittest.cc b/net/cert/cert_verify_proc_unittest.cc
index 2ac2e4d..f371a3f 100644
--- a/net/cert/cert_verify_proc_unittest.cc
+++ b/net/cert/cert_verify_proc_unittest.cc
@@ -474,7 +474,6 @@
   // TODO(crbug.com/649017): What expectations to use for the other verifiers?
 }
 
-#if BUILDFLAG(USE_BYTE_CERTS)
 // Tests the case where the target certificate is accepted by
 // X509CertificateBytes, but has errors that should cause verification to fail.
 TEST_P(CertVerifyProcInternalTest, InvalidTarget) {
@@ -536,7 +535,6 @@
   EXPECT_THAT(error, IsOk());
   EXPECT_EQ(0u, verify_result.cert_status);
 }
-#endif  // BUILDFLAG(USE_BYTE_CERTS)
 
 // A regression test for http://crbug.com/31497.
 TEST_P(CertVerifyProcInternalTest, IntermediateCARequireExplicitPolicy) {
diff --git a/net/cert/x509_cert_types.cc b/net/cert/x509_cert_types.cc
index 78450fd2..4c31915 100644
--- a/net/cert/x509_cert_types.cc
+++ b/net/cert/x509_cert_types.cc
@@ -11,12 +11,9 @@
 #include "base/strings/string_piece.h"
 #include "base/time/time.h"
 #include "net/base/parse_number.h"
-#include "net/cert/x509_certificate.h"
-
-#if BUILDFLAG(USE_BYTE_CERTS)
 #include "net/cert/internal/parse_name.h"
+#include "net/cert/x509_certificate.h"
 #include "net/der/input.h"
-#endif
 
 namespace net {
 
@@ -44,7 +41,6 @@
 CertPrincipal::~CertPrincipal() {
 }
 
-#if BUILDFLAG(USE_BYTE_CERTS)
 bool CertPrincipal::ParseDistinguishedName(
     const void* ber_name_data,
     size_t length,
@@ -110,7 +106,6 @@
   }
   return true;
 }
-#endif
 
 std::string CertPrincipal::GetDisplayName() const {
   if (!common_name.empty())
diff --git a/net/cert/x509_cert_types.h b/net/cert/x509_cert_types.h
index defc89d..9408082 100644
--- a/net/cert/x509_cert_types.h
+++ b/net/cert/x509_cert_types.h
@@ -19,7 +19,6 @@
 #include "net/base/hash_value.h"
 #include "net/base/net_export.h"
 #include "net/cert/cert_status_flags.h"
-#include "net/net_features.h"
 
 #if defined(OS_MACOSX) && !defined(OS_IOS)
 #include <Security/x509defs.h>
@@ -37,7 +36,6 @@
   explicit CertPrincipal(const std::string& name);
   ~CertPrincipal();
 
-#if BUILDFLAG(USE_BYTE_CERTS)
   // Configures handling of PrintableString values in the DistinguishedName. Do
   // not use non-default handling without consulting //net owners. With
   // kAsUTF8Hack, PrintableStrings are interpreted as UTF-8 strings.
@@ -50,7 +48,6 @@
       size_t length,
       PrintableStringHandling printable_string_handling =
           PrintableStringHandling::kDefault);
-#endif
 
   // Returns a name that can be used to represent the issuer.  It tries in this
   // order: CN, O and OU and returns the first non-empty one found.
diff --git a/net/cert/x509_cert_types_unittest.cc b/net/cert/x509_cert_types_unittest.cc
index add3cd9..43db271 100644
--- a/net/cert/x509_cert_types_unittest.cc
+++ b/net/cert/x509_cert_types_unittest.cc
@@ -14,7 +14,6 @@
 
 namespace {
 
-#if BUILDFLAG(USE_BYTE_CERTS)
 TEST(X509TypesTest, ParseDNVerisign) {
   CertPrincipal verisign;
   EXPECT_TRUE(verisign.ParseDistinguishedName(VerisignDN, sizeof(VerisignDN)));
@@ -102,7 +101,6 @@
   EXPECT_EQ("(c) 1999 Entrust.net Limited",
             entrust.organization_unit_names[1]);
 }
-#endif
 
 const struct CertDateTestData {
   CertDateFormat format;
diff --git a/net/cert/x509_certificate.h b/net/cert/x509_certificate.h
index e31ebad..9502f65 100644
--- a/net/cert/x509_certificate.h
+++ b/net/cert/x509_certificate.h
@@ -18,14 +18,7 @@
 #include "base/time/time.h"
 #include "net/base/net_export.h"
 #include "net/cert/x509_cert_types.h"
-#include "net/net_features.h"
-
-#if BUILDFLAG(USE_BYTE_CERTS)
 #include "third_party/boringssl/src/include/openssl/base.h"
-#elif defined(USE_NSS_CERTS)
-// Forward declaration; real one in <cert.h>
-struct CERTCertificateStr;
-#endif
 
 namespace base {
 class Pickle;
@@ -48,16 +41,9 @@
   // An OSCertHandle is a handle to a certificate object in the underlying
   // crypto library. We assume that OSCertHandle is a pointer type on all
   // platforms and that NULL represents an invalid OSCertHandle.
-#if BUILDFLAG(USE_BYTE_CERTS)
   // TODO(mattm): Remove OSCertHandle type and clean up the interfaces once all
   // platforms use the CRYPTO_BUFFER version.
   typedef CRYPTO_BUFFER* OSCertHandle;
-#elif defined(USE_NSS_CERTS)
-  typedef struct CERTCertificateStr* OSCertHandle;
-#else
-  // TODO(ericroman): not implemented
-  typedef void* OSCertHandle;
-#endif
 
   typedef std::vector<OSCertHandle> OSCertHandles;
 
diff --git a/net/cert/x509_certificate_nss.cc b/net/cert/x509_certificate_nss.cc
deleted file mode 100644
index 7eef7627..0000000
--- a/net/cert/x509_certificate_nss.cc
+++ /dev/null
@@ -1,442 +0,0 @@
-// Copyright (c) 2012 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 <cert.h>
-#include <cryptohi.h>
-#include <keyhi.h>
-#include <nss.h>
-#include <pk11pub.h>
-#include <prtime.h>
-#include <seccomon.h>
-#include <secder.h>
-#include <sechash.h>
-
-#include <memory>
-
-#include "base/logging.h"
-#include "base/numerics/safe_conversions.h"
-#include "base/pickle.h"
-#include "base/strings/stringprintf.h"
-#include "base/time/time.h"
-#include "crypto/nss_util.h"
-#include "crypto/scoped_nss_types.h"
-#include "net/cert/x509_certificate.h"
-#include "net/cert/x509_util_nss.h"
-
-namespace net {
-
-namespace {
-
-// Callback for CERT_DecodeCertPackage(), used in
-// CreateOSCertHandlesFromBytes().
-SECStatus PR_CALLBACK CollectCertsCallback(void* arg,
-                                           SECItem** certs,
-                                           int num_certs) {
-  X509Certificate::OSCertHandles* results =
-      reinterpret_cast<X509Certificate::OSCertHandles*>(arg);
-
-  for (int i = 0; i < num_certs; ++i) {
-    X509Certificate::OSCertHandle handle =
-        X509Certificate::CreateOSCertHandleFromBytes(
-            reinterpret_cast<char*>(certs[i]->data), certs[i]->len);
-    if (handle)
-      results->push_back(handle);
-  }
-
-  return SECSuccess;
-}
-
-// Parses the Principal attribute from |name| and outputs the result in
-// |principal|. Returns true on success.
-bool ParsePrincipal(CERTName* name, CertPrincipal* principal) {
-  typedef char* (*CERTGetNameFunc)(const CERTName* name);
-
-  // TODO(jcampan): add business_category and serial_number.
-  // TODO(wtc): NSS has the CERT_GetOrgName, CERT_GetOrgUnitName, and
-  // CERT_GetDomainComponentName functions, but they return only the most
-  // general (the first) RDN.  NSS doesn't have a function for the street
-  // address.
-  static const SECOidTag kOIDs[] = {
-      SEC_OID_AVA_STREET_ADDRESS, SEC_OID_AVA_ORGANIZATION_NAME,
-      SEC_OID_AVA_ORGANIZATIONAL_UNIT_NAME, SEC_OID_AVA_DC};
-
-  std::vector<std::string>* values[] = {
-      &principal->street_addresses, &principal->organization_names,
-      &principal->organization_unit_names, &principal->domain_components};
-  DCHECK_EQ(arraysize(kOIDs), arraysize(values));
-
-  CERTRDN** rdns = name->rdns;
-  for (size_t rdn = 0; rdns[rdn]; ++rdn) {
-    CERTAVA** avas = rdns[rdn]->avas;
-    for (size_t pair = 0; avas[pair] != 0; ++pair) {
-      SECOidTag tag = CERT_GetAVATag(avas[pair]);
-      for (size_t oid = 0; oid < arraysize(kOIDs); ++oid) {
-        if (kOIDs[oid] == tag) {
-          SECItem* decode_item = CERT_DecodeAVAValue(&avas[pair]->value);
-          if (!decode_item)
-            return false;
-          // TODO(wtc): Pass decode_item to CERT_RFC1485_EscapeAndQuote.
-          std::string value(reinterpret_cast<char*>(decode_item->data),
-                            decode_item->len);
-          values[oid]->push_back(value);
-          SECITEM_FreeItem(decode_item, PR_TRUE);
-          break;
-        }
-      }
-    }
-  }
-
-  // Get CN, L, S, and C.
-  CERTGetNameFunc get_name_funcs[4] = {CERT_GetCommonName, CERT_GetLocalityName,
-                                       CERT_GetStateName, CERT_GetCountryName};
-  std::string* single_values[4] = {
-      &principal->common_name, &principal->locality_name,
-      &principal->state_or_province_name, &principal->country_name};
-  for (size_t i = 0; i < arraysize(get_name_funcs); ++i) {
-    char* value = get_name_funcs[i](name);
-    if (value) {
-      single_values[i]->assign(value);
-      PORT_Free(value);
-    }
-  }
-
-  return true;
-}
-
-// Parses the date from |der_date| and outputs the result in |result|.
-// Returns true on success.
-bool ParseDate(const SECItem* der_date, base::Time* result) {
-  PRTime prtime;
-  SECStatus rv = DER_DecodeTimeChoice(&prtime, der_date);
-  if (rv != SECSuccess)
-    return false;
-  *result = crypto::PRTimeToBaseTime(prtime);
-  return true;
-}
-
-// Parses the serial number from |certificate|.
-std::string ParseSerialNumber(const CERTCertificate* certificate) {
-  return std::string(reinterpret_cast<char*>(certificate->serialNumber.data),
-                     certificate->serialNumber.len);
-}
-
-typedef std::unique_ptr<CERTName,
-                        crypto::NSSDestroyer<CERTName, CERT_DestroyName>>
-    ScopedCERTName;
-
-// Create a new CERTName object from its encoded representation.
-// |arena| is the allocation pool to use.
-// |data| points to a DER-encoded X.509 DistinguishedName.
-// Return a new CERTName pointer on success, or NULL.
-CERTName* CreateCertNameFromEncoded(PLArenaPool* arena,
-                                    const base::StringPiece& data) {
-  if (!arena)
-    return NULL;
-
-  ScopedCERTName name(PORT_ArenaZNew(arena, CERTName));
-  if (!name.get())
-    return NULL;
-
-  SECItem item;
-  item.len = static_cast<unsigned int>(data.length());
-  item.data = reinterpret_cast<unsigned char*>(const_cast<char*>(data.data()));
-
-  SECStatus rv = SEC_ASN1DecodeItem(arena, name.get(),
-                                    SEC_ASN1_GET(CERT_NameTemplate), &item);
-  if (rv != SECSuccess)
-    return NULL;
-
-  return name.release();
-}
-
-// Create a list of CERTName objects from a list of DER-encoded X.509
-// DistinguishedName items. All objects are created in a given arena.
-// |encoded_issuers| is the list of encoded DNs.
-// |arena| is the arena used for all allocations.
-// |out| will receive the result list on success.
-// Return true on success. On failure, the caller must free the
-// intermediate CERTName objects pushed to |out|.
-bool GetIssuersFromEncodedList(const std::vector<std::string>& encoded_issuers,
-                               PLArenaPool* arena,
-                               std::vector<CERTName*>* out) {
-  std::vector<CERTName*> result;
-  for (size_t n = 0; n < encoded_issuers.size(); ++n) {
-    CERTName* name = CreateCertNameFromEncoded(arena, encoded_issuers[n]);
-    if (name != NULL)
-      result.push_back(name);
-  }
-
-  if (result.size() == encoded_issuers.size()) {
-    out->swap(result);
-    return true;
-  }
-
-  for (size_t n = 0; n < result.size(); ++n)
-    CERT_DestroyName(result[n]);
-  return false;
-}
-
-// Returns true iff a certificate is issued by any of the issuers listed
-// by name in |valid_issuers|.
-// |cert_chain| is the certificate's chain.
-// |valid_issuers| is a list of strings, where each string contains
-// a DER-encoded X.509 Distinguished Name.
-bool IsCertificateIssuedBy(const std::vector<CERTCertificate*>& cert_chain,
-                           const std::vector<CERTName*>& valid_issuers) {
-  for (size_t n = 0; n < cert_chain.size(); ++n) {
-    CERTName* cert_issuer = &cert_chain[n]->issuer;
-    for (size_t i = 0; i < valid_issuers.size(); ++i) {
-      if (CERT_CompareName(valid_issuers[i], cert_issuer) == SECEqual)
-        return true;
-    }
-  }
-  return false;
-}
-
-}  // namespace
-
-bool X509Certificate::Initialize(UnsafeCreateOptions) {
-  serial_number_ = ParseSerialNumber(cert_handle_);
-
-  return (!serial_number_.empty() &&
-          ParsePrincipal(&cert_handle_->subject, &subject_) &&
-          ParsePrincipal(&cert_handle_->issuer, &issuer_) &&
-          ParseDate(&cert_handle_->validity.notBefore, &valid_start_) &&
-          ParseDate(&cert_handle_->validity.notAfter, &valid_expiry_));
-}
-
-bool X509Certificate::GetSubjectAltName(
-    std::vector<std::string>* dns_names,
-    std::vector<std::string>* ip_addrs) const {
-  if (dns_names)
-    dns_names->clear();
-  if (ip_addrs)
-    ip_addrs->clear();
-
-  SECItem alt_name;
-  SECStatus rv = CERT_FindCertExtension(
-      cert_handle_, SEC_OID_X509_SUBJECT_ALT_NAME, &alt_name);
-  if (rv != SECSuccess)
-    return false;
-
-  crypto::ScopedPLArenaPool arena(PORT_NewArena(DER_DEFAULT_CHUNKSIZE));
-
-  CERTGeneralName* alt_name_list;
-  alt_name_list = CERT_DecodeAltNameExtension(arena.get(), &alt_name);
-  SECITEM_FreeItem(&alt_name, PR_FALSE);
-
-  bool has_san = false;
-  CERTGeneralName* name = alt_name_list;
-  while (name) {
-    // DNSName and IPAddress are encoded as IA5String and OCTET STRINGs
-    // respectively, both of which can be byte copied from
-    // SECItemType::data into the appropriate output vector.
-    if (name->type == certDNSName) {
-      has_san = true;
-      if (dns_names) {
-        dns_names->push_back(
-            std::string(reinterpret_cast<char*>(name->name.other.data),
-                        name->name.other.len));
-      }
-    } else if (name->type == certIPAddress) {
-      has_san = true;
-      if (ip_addrs) {
-        ip_addrs->push_back(
-            std::string(reinterpret_cast<char*>(name->name.other.data),
-                        name->name.other.len));
-      }
-    }
-    // Fast path: Found at least one subjectAltName and the caller doesn't
-    // need the actual values.
-    if (has_san && !ip_addrs && !dns_names)
-      return true;
-
-    name = CERT_GetNextGeneralName(name);
-    if (name == alt_name_list)
-      break;
-  }
-  return has_san;
-}
-
-bool X509Certificate::IsIssuedByEncoded(
-    const std::vector<std::string>& valid_issuers) {
-  // Get certificate chain as scoped list of CERTCertificate objects.
-  std::vector<CERTCertificate*> cert_chain;
-  cert_chain.push_back(cert_handle_);
-  for (size_t n = 0; n < intermediate_ca_certs_.size(); ++n) {
-    cert_chain.push_back(intermediate_ca_certs_[n]);
-  }
-  // Convert encoded issuers to scoped CERTName* list.
-  std::vector<CERTName*> issuers;
-  crypto::ScopedPLArenaPool arena(PORT_NewArena(DER_DEFAULT_CHUNKSIZE));
-  if (!GetIssuersFromEncodedList(valid_issuers, arena.get(), &issuers)) {
-    return false;
-  }
-  return IsCertificateIssuedBy(cert_chain, issuers);
-}
-
-// static
-bool X509Certificate::GetDEREncoded(X509Certificate::OSCertHandle cert_handle,
-                                    std::string* encoded) {
-  return x509_util::GetDEREncoded(cert_handle, encoded);
-}
-
-// static
-bool X509Certificate::IsSameOSCert(X509Certificate::OSCertHandle a,
-                                   X509Certificate::OSCertHandle b) {
-  return x509_util::IsSameCertificate(a, b);
-}
-
-// static
-X509Certificate::OSCertHandle X509Certificate::CreateOSCertHandleFromBytes(
-    const char* data,
-    size_t length) {
-  return x509_util::CreateCERTCertificateFromBytes(
-             reinterpret_cast<const uint8_t*>(data), length)
-      .release();
-}
-
-// static
-X509Certificate::OSCertHandles X509Certificate::CreateOSCertHandlesFromBytes(
-    const char* data,
-    size_t length,
-    Format format) {
-  X509Certificate::OSCertHandles results;
-
-  crypto::EnsureNSSInit();
-
-  if (!NSS_IsInitialized())
-    return results;
-
-  switch (format) {
-    case X509Certificate::FORMAT_SINGLE_CERTIFICATE: {
-      X509Certificate::OSCertHandle handle =
-          X509Certificate::CreateOSCertHandleFromBytes(data, length);
-      if (handle)
-        results.push_back(handle);
-      break;
-    }
-    case X509Certificate::FORMAT_PKCS7: {
-      // Make a copy since CERT_DecodeCertPackage may modify it
-      std::vector<char> data_copy(data, data + length);
-
-      SECStatus result = CERT_DecodeCertPackage(
-          data_copy.data(), base::checked_cast<int>(data_copy.size()),
-          CollectCertsCallback, &results);
-      if (result != SECSuccess)
-        results.clear();
-      break;
-    }
-    default:
-      NOTREACHED() << "Certificate format " << format << " unimplemented";
-      break;
-  }
-
-  return results;
-}
-
-// static
-X509Certificate::OSCertHandle X509Certificate::DupOSCertHandle(
-    OSCertHandle cert_handle) {
-  return CERT_DupCertificate(cert_handle);
-}
-
-// static
-void X509Certificate::FreeOSCertHandle(OSCertHandle cert_handle) {
-  CERT_DestroyCertificate(cert_handle);
-}
-
-// static
-SHA256HashValue X509Certificate::CalculateFingerprint256(OSCertHandle cert) {
-  return x509_util::CalculateFingerprint256(cert);
-}
-
-// static
-SHA256HashValue X509Certificate::CalculateCAFingerprint256(
-    const OSCertHandles& intermediates) {
-  SHA256HashValue sha256;
-  memset(sha256.data, 0, sizeof(sha256.data));
-
-  HASHContext* sha256_ctx = HASH_Create(HASH_AlgSHA256);
-  if (!sha256_ctx)
-    return sha256;
-  HASH_Begin(sha256_ctx);
-  for (size_t i = 0; i < intermediates.size(); ++i) {
-    CERTCertificate* ca_cert = intermediates[i];
-    HASH_Update(sha256_ctx, ca_cert->derCert.data, ca_cert->derCert.len);
-  }
-  unsigned int result_len;
-  HASH_End(sha256_ctx, sha256.data, &result_len,
-           HASH_ResultLenContext(sha256_ctx));
-  HASH_Destroy(sha256_ctx);
-
-  return sha256;
-}
-
-// static
-X509Certificate::OSCertHandle X509Certificate::ReadOSCertHandleFromPickle(
-    base::PickleIterator* pickle_iter) {
-  const char* data;
-  int length;
-  if (!pickle_iter->ReadData(&data, &length))
-    return NULL;
-
-  return CreateOSCertHandleFromBytes(data, length);
-}
-
-// static
-void X509Certificate::WriteOSCertHandleToPickle(OSCertHandle cert_handle,
-                                                base::Pickle* pickle) {
-  pickle->WriteData(reinterpret_cast<const char*>(cert_handle->derCert.data),
-                    cert_handle->derCert.len);
-}
-
-// static
-void X509Certificate::GetPublicKeyInfo(OSCertHandle cert_handle,
-                                       size_t* size_bits,
-                                       PublicKeyType* type) {
-  // Since we might fail, set the output parameters to default values first.
-  *type = X509Certificate::kPublicKeyTypeUnknown;
-  *size_bits = 0;
-
-  crypto::ScopedSECKEYPublicKey key(CERT_ExtractPublicKey(cert_handle));
-  if (!key.get())
-    return;
-
-  *size_bits = SECKEY_PublicKeyStrengthInBits(key.get());
-
-  switch (key->keyType) {
-    case rsaKey:
-      *type = X509Certificate::kPublicKeyTypeRSA;
-      break;
-    case dsaKey:
-      *type = X509Certificate::kPublicKeyTypeDSA;
-      break;
-    case dhKey:
-      *type = X509Certificate::kPublicKeyTypeDH;
-      break;
-    case ecKey:
-      *type = X509Certificate::kPublicKeyTypeECDSA;
-      break;
-    default:
-      *type = X509Certificate::kPublicKeyTypeUnknown;
-      *size_bits = 0;
-      break;
-  }
-}
-
-// static
-bool X509Certificate::IsSelfSigned(OSCertHandle cert_handle) {
-  crypto::ScopedSECKEYPublicKey public_key(CERT_ExtractPublicKey(cert_handle));
-  if (!public_key.get())
-    return false;
-  if (SECSuccess != CERT_VerifySignedDataWithPublicKey(
-                        &cert_handle->signatureWrap, public_key.get(), NULL)) {
-    return false;
-  }
-  return CERT_CompareName(&cert_handle->subject, &cert_handle->issuer) ==
-         SECEqual;
-}
-
-}  // namespace net
diff --git a/net/cert/x509_certificate_unittest.cc b/net/cert/x509_certificate_unittest.cc
index 459da309..6ae425c3 100644
--- a/net/cert/x509_certificate_unittest.cc
+++ b/net/cert/x509_certificate_unittest.cc
@@ -265,7 +265,6 @@
   EXPECT_EQ(0U, subject.domain_components.size());
 }
 
-#if BUILDFLAG(USE_BYTE_CERTS)
 TEST(X509CertificateTest, InvalidPrintableStringIsUtf8) {
   base::FilePath certs_dir =
       GetTestNetDataDirectory().AppendASCII("parse_certificate_unittest");
@@ -296,7 +295,6 @@
   const CertPrincipal& subject = cert->subject();
   EXPECT_EQ("Foo@#_ Clïênt Cërt", subject.common_name);
 }
-#endif
 
 TEST(X509CertificateTest, TeletexStringIsLatin1) {
   base::FilePath certs_dir =
diff --git a/net/cert/x509_util.cc b/net/cert/x509_util.cc
index 74f7bf3..6963ed4 100644
--- a/net/cert/x509_util.cc
+++ b/net/cert/x509_util.cc
@@ -400,24 +400,11 @@
     return nullptr;
   }
 
-#if BUILDFLAG(USE_BYTE_CERTS)
   std::vector<CRYPTO_BUFFER*> intermediate_chain;
   for (size_t i = 1; i < sk_CRYPTO_BUFFER_num(buffers); ++i)
     intermediate_chain.push_back(sk_CRYPTO_BUFFER_value(buffers, i));
   return X509Certificate::CreateFromHandle(sk_CRYPTO_BUFFER_value(buffers, 0),
                                            intermediate_chain);
-#else
-  // Convert the certificate chains to a platform certificate handle.
-  std::vector<base::StringPiece> der_chain;
-  der_chain.reserve(sk_CRYPTO_BUFFER_num(buffers));
-  for (size_t i = 0; i < sk_CRYPTO_BUFFER_num(buffers); ++i) {
-    const CRYPTO_BUFFER* cert = sk_CRYPTO_BUFFER_value(buffers, i);
-    der_chain.push_back(base::StringPiece(
-        reinterpret_cast<const char*>(CRYPTO_BUFFER_data(cert)),
-        CRYPTO_BUFFER_len(cert)));
-  }
-  return X509Certificate::CreateFromDERCertChain(der_chain);
-#endif
 }
 
 ParseCertificateOptions DefaultParseCertificateOptions() {
diff --git a/net/cert/x509_util_nss.cc b/net/cert/x509_util_nss.cc
index a34917dc..33f39d2a 100644
--- a/net/cert/x509_util_nss.cc
+++ b/net/cert/x509_util_nss.cc
@@ -142,13 +142,9 @@
 }
 
 bool IsSameCertificate(CERTCertificate* a, const X509Certificate* b) {
-#if BUILDFLAG(USE_BYTE_CERTS)
   return a->derCert.len == CRYPTO_BUFFER_len(b->os_cert_handle()) &&
          memcmp(a->derCert.data, CRYPTO_BUFFER_data(b->os_cert_handle()),
                 a->derCert.len) == 0;
-#else
-  return IsSameCertificate(a, b->os_cert_handle());
-#endif
 }
 bool IsSameCertificate(const X509Certificate* a, CERTCertificate* b) {
   return IsSameCertificate(b, a);
@@ -174,13 +170,9 @@
 
 ScopedCERTCertificate CreateCERTCertificateFromX509Certificate(
     const X509Certificate* cert) {
-#if BUILDFLAG(USE_BYTE_CERTS)
   return CreateCERTCertificateFromBytes(
       CRYPTO_BUFFER_data(cert->os_cert_handle()),
       CRYPTO_BUFFER_len(cert->os_cert_handle()));
-#else
-  return DupCERTCertificate(cert->os_cert_handle());
-#endif
 }
 
 ScopedCERTCertificateList CreateCERTCertificateListFromX509Certificate(
@@ -194,7 +186,6 @@
     InvalidIntermediateBehavior invalid_intermediate_behavior) {
   ScopedCERTCertificateList nss_chain;
   nss_chain.reserve(1 + cert->GetIntermediateCertificates().size());
-#if BUILDFLAG(USE_BYTE_CERTS)
   ScopedCERTCertificate nss_cert =
       CreateCERTCertificateFromX509Certificate(cert);
   if (!nss_cert)
@@ -212,13 +203,6 @@
     }
     nss_chain.push_back(std::move(nss_intermediate));
   }
-#else
-  nss_chain.push_back(DupCERTCertificate(cert->os_cert_handle()));
-  for (net::X509Certificate::OSCertHandle intermediate :
-       cert->GetIntermediateCertificates()) {
-    nss_chain.push_back(DupCERTCertificate(intermediate));
-  }
-#endif
   return nss_chain;
 }
 
@@ -262,7 +246,6 @@
     CERTCertificate* nss_cert,
     const std::vector<CERTCertificate*>& nss_chain,
     X509Certificate::UnsafeCreateOptions options) {
-#if BUILDFLAG(USE_BYTE_CERTS)
   if (!nss_cert || !nss_cert->derCert.len)
     return nullptr;
   bssl::UniquePtr<CRYPTO_BUFFER> cert_handle(
@@ -292,10 +275,6 @@
       X509Certificate::CreateFromHandleUnsafeOptions(
           cert_handle.get(), intermediates_raw, options));
   return result;
-#else
-  return X509Certificate::CreateFromHandleUnsafeOptions(nss_cert, nss_chain,
-                                                        options);
-#endif
 }
 
 scoped_refptr<X509Certificate> CreateX509CertificateFromCERTCertificate(
diff --git a/net/cert/x509_util_nss_unittest.cc b/net/cert/x509_util_nss_unittest.cc
index 5b1baf47..d9b9a700 100644
--- a/net/cert/x509_util_nss_unittest.cc
+++ b/net/cert/x509_util_nss_unittest.cc
@@ -139,7 +139,6 @@
             BytesForNSSCert(nss_certs[3].get()));
 }
 
-#if BUILDFLAG(USE_BYTE_CERTS)
 TEST(X509UtilTest, CreateCERTCertificateListFromX509CertificateErrors) {
   scoped_refptr<X509Certificate> ok_cert(
       ImportCertFromFile(GetTestCertsDirectory(), "ok_cert.pem"));
@@ -181,7 +180,6 @@
   EXPECT_EQ(BytesForX509Cert(ok_cert2.get()),
             BytesForNSSCert(nss_certs[1].get()));
 }
-#endif
 
 TEST(X509UtilNSSTest, CreateCERTCertificateListFromBytes) {
   base::FilePath cert_path =
diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_state.cc
index b04a52e96..964494f 100644
--- a/net/http/transport_security_state.cc
+++ b/net/http/transport_security_state.cc
@@ -30,6 +30,7 @@
 #include "net/cert/x509_certificate.h"
 #include "net/dns/dns_util.h"
 #include "net/http/http_security_headers.h"
+#include "net/net_features.h"
 #include "net/ssl/ssl_info.h"
 
 #if !defined(OS_NACL)
diff --git a/net/ssl/client_cert_store_nss.cc b/net/ssl/client_cert_store_nss.cc
index 7589e36..bd6a8f0 100644
--- a/net/ssl/client_cert_store_nss.cc
+++ b/net/ssl/client_cert_store_nss.cc
@@ -118,7 +118,6 @@
 
     X509Certificate::OSCertHandles intermediates_raw;
     intermediates_raw.reserve(nss_intermediates.size());
-#if BUILDFLAG(USE_BYTE_CERTS)
     std::vector<bssl::UniquePtr<CRYPTO_BUFFER>> intermediates;
     intermediates.reserve(nss_intermediates.size());
     for (const ScopedCERTCertificate& nss_intermediate : nss_intermediates) {
@@ -131,10 +130,6 @@
       intermediates_raw.push_back(intermediate_cert_handle.get());
       intermediates.push_back(std::move(intermediate_cert_handle));
     }
-#else
-    for (const ScopedCERTCertificate& nss_intermediate : nss_intermediates)
-      intermediates_raw.push_back(nss_intermediate.get());
-#endif
 
     // Retain a copy of the intermediates. Some deployments expect the client to
     // supply intermediates out of the local store. See
diff --git a/net/ssl/openssl_ssl_util.cc b/net/ssl/openssl_ssl_util.cc
index 0209955..ae0fb4f7 100644
--- a/net/ssl/openssl_ssl_util.cc
+++ b/net/ssl/openssl_ssl_util.cc
@@ -140,16 +140,6 @@
   return std::move(dict);
 }
 
-#if !BUILDFLAG(USE_BYTE_CERTS)
-bssl::UniquePtr<CRYPTO_BUFFER> OSCertHandleToBuffer(
-    X509Certificate::OSCertHandle os_handle) {
-  std::string der_encoded;
-  if (!X509Certificate::GetDEREncoded(os_handle, &der_encoded))
-    return nullptr;
-  return x509_util::CreateCryptoBuffer(der_encoded);
-}
-#endif
-
 }  // namespace
 
 void OpenSSLPutNetError(const base::Location& location, int err) {
@@ -240,36 +230,12 @@
                        X509Certificate* cert,
                        EVP_PKEY* pkey,
                        const SSL_PRIVATE_KEY_METHOD* custom_key) {
-#if BUILDFLAG(USE_BYTE_CERTS)
   std::vector<CRYPTO_BUFFER*> chain_raw;
   chain_raw.push_back(cert->os_cert_handle());
   for (X509Certificate::OSCertHandle handle :
        cert->GetIntermediateCertificates()) {
     chain_raw.push_back(handle);
   }
-#else
-  std::vector<bssl::UniquePtr<CRYPTO_BUFFER>> chain;
-  std::vector<CRYPTO_BUFFER*> chain_raw;
-  bssl::UniquePtr<CRYPTO_BUFFER> buf =
-      OSCertHandleToBuffer(cert->os_cert_handle());
-  if (!buf) {
-    LOG(WARNING) << "Failed to import certificate";
-    return false;
-  }
-  chain_raw.push_back(buf.get());
-  chain.push_back(std::move(buf));
-
-  for (X509Certificate::OSCertHandle handle :
-       cert->GetIntermediateCertificates()) {
-    bssl::UniquePtr<CRYPTO_BUFFER> buf = OSCertHandleToBuffer(handle);
-    if (!buf) {
-      LOG(WARNING) << "Failed to import intermediate";
-      return false;
-    }
-    chain_raw.push_back(buf.get());
-    chain.push_back(std::move(buf));
-  }
-#endif
 
   if (!SSL_set_chain_and_key(ssl, chain_raw.data(), chain_raw.size(), pkey,
                              custom_key)) {
diff --git a/net/third_party/nss/ssl/cmpcert.cc b/net/third_party/nss/ssl/cmpcert.cc
index d01c245..64e4828 100644
--- a/net/third_party/nss/ssl/cmpcert.cc
+++ b/net/third_party/nss/ssl/cmpcert.cc
@@ -32,7 +32,6 @@
 bool GetIssuerAndSubject(X509Certificate* cert,
                          der::Input* issuer,
                          der::Input* subject) {
-#if BUILDFLAG(USE_BYTE_CERTS)
   der::Input tbs_certificate_tlv;
   der::Input signature_algorithm_tlv;
   der::BitString signature_value;
@@ -52,9 +51,6 @@
   *issuer = tbs.issuer_tlv;
   *subject = tbs.subject_tlv;
   return true;
-#else
-  return GetIssuerAndSubject(cert->os_cert_handle(), issuer, subject);
-#endif
 }
 
 }  // namespace
diff --git a/services/service_manager/sandbox/linux/bpf_gpu_policy_linux.cc b/services/service_manager/sandbox/linux/bpf_gpu_policy_linux.cc
index 3a75053..4019350 100644
--- a/services/service_manager/sandbox/linux/bpf_gpu_policy_linux.cc
+++ b/services/service_manager/sandbox/linux/bpf_gpu_policy_linux.cc
@@ -31,6 +31,7 @@
 #include "sandbox/linux/syscall_broker/broker_process.h"
 #include "sandbox/linux/system_headers/linux_syscalls.h"
 #include "services/service_manager/sandbox/linux/sandbox_bpf_base_policy_linux.h"
+#include "services/service_manager/sandbox/linux/sandbox_linux.h"
 #include "services/service_manager/sandbox/linux/sandbox_seccomp_bpf_linux.h"
 
 using sandbox::arch_seccomp_data;
@@ -86,7 +87,7 @@
 
 }  // namespace
 
-GpuProcessPolicy::GpuProcessPolicy() : broker_process_(NULL) {}
+GpuProcessPolicy::GpuProcessPolicy() {}
 
 GpuProcessPolicy::~GpuProcessPolicy() {}
 
@@ -115,9 +116,11 @@
     case __NR_open:
 #endif  // !defined(__aarch64__)
     case __NR_faccessat:
-    case __NR_openat:
-      DCHECK(broker_process_);
-      return Trap(GpuSIGSYS_Handler, broker_process_);
+    case __NR_openat: {
+      auto* broker_process = SandboxLinux::GetInstance()->broker_process();
+      DCHECK(broker_process);
+      return Trap(GpuSIGSYS_Handler, broker_process);
+    }
     case __NR_sched_getaffinity:
     case __NR_sched_setaffinity:
       return sandbox::RestrictSchedTarget(GetPolicyPid(), sysno);
diff --git a/services/service_manager/sandbox/linux/bpf_gpu_policy_linux.h b/services/service_manager/sandbox/linux/bpf_gpu_policy_linux.h
index 46cd704..004d444 100644
--- a/services/service_manager/sandbox/linux/bpf_gpu_policy_linux.h
+++ b/services/service_manager/sandbox/linux/bpf_gpu_policy_linux.h
@@ -24,24 +24,7 @@
   sandbox::bpf_dsl::ResultExpr EvaluateSyscall(
       int system_call_number) const override;
 
-  sandbox::syscall_broker::BrokerProcess* broker_process() const {
-    return broker_process_;
-  }
-
-  void set_broker_process(
-      std::unique_ptr<sandbox::syscall_broker::BrokerProcess> broker_process) {
-    DCHECK(!broker_process_);
-    broker_process_ = broker_process.release();
-  }
-
  private:
-  // A BrokerProcess is a helper that is started before the sandbox is engaged
-  // and will serve requests to access files over an IPC channel. The client of
-  // this runs from a SIGSYS handler triggered by the seccomp-bpf sandbox.
-  // This should never be destroyed, as after the sandbox is started it is
-  // vital to the process.
-  sandbox::syscall_broker::BrokerProcess* broker_process_;  // Leaked as global.
-
   DISALLOW_COPY_AND_ASSIGN(GpuProcessPolicy);
 };
 
diff --git a/services/service_manager/sandbox/linux/sandbox_linux.cc b/services/service_manager/sandbox/linux/sandbox_linux.cc
index 9d07052..c2c2df8 100644
--- a/services/service_manager/sandbox/linux/sandbox_linux.cc
+++ b/services/service_manager/sandbox/linux/sandbox_linux.cc
@@ -111,12 +111,13 @@
       seccomp_bpf_with_tsync_supported_(false),
       yama_is_enforcing_(false),
       initialize_sandbox_ran_(false),
-      setuid_sandbox_client_(sandbox::SetuidSandboxClient::Create()) {
-  if (setuid_sandbox_client_ == NULL) {
+      setuid_sandbox_client_(sandbox::SetuidSandboxClient::Create()),
+      broker_process_(nullptr) {
+  if (!setuid_sandbox_client_) {
     LOG(FATAL) << "Failed to instantiate the setuid sandbox client.";
   }
 #if defined(ANY_OF_AMTLU_SANITIZER)
-  sanitizer_args_ = base::WrapUnique(new __sanitizer_sandbox_arguments);
+  sanitizer_args_ = std::make_unique<__sanitizer_sandbox_arguments>();
   *sanitizer_args_ = {0};
 #endif
 }
diff --git a/services/service_manager/sandbox/linux/sandbox_linux.h b/services/service_manager/sandbox/linux/sandbox_linux.h
index 927bab8..e7425b6 100644
--- a/services/service_manager/sandbox/linux/sandbox_linux.h
+++ b/services/service_manager/sandbox/linux/sandbox_linux.h
@@ -29,9 +29,13 @@
 struct DefaultSingletonTraits;
 class Thread;
 }  // namespace base
+
 namespace sandbox {
+namespace syscall_broker {
+class BrokerProcess;
+}  // namespace syscall_broker
 class SetuidSandboxClient;
-}
+}  // namespace sandbox
 
 namespace service_manager {
 
@@ -145,6 +149,21 @@
   };
 #endif
 
+  // A BrokerProcess is a helper that is started before the sandbox is engaged
+  // and will serve requests to access files over an IPC channel. The client of
+  // this runs from a SIGSYS handler triggered by the seccomp-bpf sandbox.
+  // This should never be destroyed, as after the sandbox is started it is
+  // vital to the process.
+  sandbox::syscall_broker::BrokerProcess* broker_process() const {
+    return broker_process_;
+  }
+
+  void set_broker_process(
+      std::unique_ptr<sandbox::syscall_broker::BrokerProcess> broker_process) {
+    DCHECK(!broker_process_);
+    broker_process_ = broker_process.release();
+  }
+
  private:
   friend struct base::DefaultSingletonTraits<SandboxLinux>;
 
@@ -157,19 +176,24 @@
                              SandboxSeccompBPF::PreSandboxHook hook,
                              const SandboxSeccompBPF::Options& options);
   void StopThreadImpl(base::Thread* thread);
+
   // We must have been pre_initialized_ before using these.
   bool seccomp_bpf_supported() const;
   bool seccomp_bpf_with_tsync_supported() const;
+
   // Returns true if it can be determined that the current process has open
   // directories that are not managed by the SandboxLinux class. This would
   // be a vulnerability as it would allow to bypass the setuid sandbox.
   bool HasOpenDirectories() const;
+
   // The last part of the initialization is to make sure any temporary "hole"
   // in the sandbox is closed. For now, this consists of closing proc_fd_.
   void SealSandbox();
+
   // GetStatus() makes promises as to how the sandbox will behave. This
   // checks that no promises have been broken.
   void CheckForBrokenPromises(service_manager::SandboxType sandbox_type);
+
   // Stop |thread| and make sure it does not appear in /proc/self/tasks/
   // anymore.
   void StopThreadAndEnsureNotCounted(base::Thread* thread) const;
@@ -178,6 +202,7 @@
   // allow for sandbox bypasses. It needs to be closed before we consider
   // ourselves sandboxed.
   int proc_fd_;
+
   bool seccomp_bpf_started_;
   // The value returned by GetStatus(). Gets computed once and then cached.
   int sandbox_status_flags_;
@@ -191,6 +216,7 @@
 #if defined(ANY_OF_AMTLU_SANITIZER)
   std::unique_ptr<__sanitizer_sandbox_arguments> sanitizer_args_;
 #endif
+  sandbox::syscall_broker::BrokerProcess* broker_process_;  // Leaked as global.
 
   DISALLOW_COPY_AND_ASSIGN(SandboxLinux);
 };
diff --git a/services/ui/public/cpp/gpu/OWNERS b/services/ui/public/cpp/gpu/OWNERS
deleted file mode 100644
index d61fcbb..0000000
--- a/services/ui/public/cpp/gpu/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-file://services/ui/gpu/OWNERS
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json
index 4d36e51..6ee9d32 100644
--- a/testing/buildbot/chromium.clang.json
+++ b/testing/buildbot/chromium.clang.json
@@ -862,6 +862,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -1128,6 +1134,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -1387,6 +1399,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -1653,6 +1671,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -1949,6 +1973,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -2245,6 +2275,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -2541,6 +2577,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -2837,6 +2879,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -3133,6 +3181,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -3429,6 +3483,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -3725,6 +3785,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -4021,6 +4087,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -4311,6 +4383,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -8607,6 +8685,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -8915,6 +8999,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -9211,6 +9301,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -9507,6 +9603,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -9803,6 +9905,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -10099,6 +10207,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -10395,6 +10509,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -10691,6 +10811,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -10987,6 +11113,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index 529930b..635df302 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -13035,7 +13035,8 @@
         ],
         "name": "network_service_browser_tests",
         "swarming": {
-          "can_use_on_swarming_builders": true
+          "can_use_on_swarming_builders": true,
+          "shards": 5
         },
         "test": "browser_tests"
       },
@@ -14404,6 +14405,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -15948,6 +15955,12 @@
       },
       {
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
           "can_use_on_swarming_builders": false
         },
         "test": "crypto_unittests"
diff --git a/testing/buildbot/chromium.linux.json b/testing/buildbot/chromium.linux.json
index e323f1e..c394715 100644
--- a/testing/buildbot/chromium.linux.json
+++ b/testing/buildbot/chromium.linux.json
@@ -3432,6 +3432,27 @@
       }
     ]
   },
+  "Fuchsia ARM64": {
+    "additional_compile_targets": [
+      "base_unittests",
+      "content_unittests",
+      "crypto_unittests",
+      "gl_unittests",
+      "headless_shell",
+      "ipc_tests",
+      "media_unittests",
+      "mojo_common_unittests",
+      "mojo_js_unittests",
+      "mojo_public_bindings_unittests",
+      "mojo_public_system_unittests",
+      "mojo_system_unittests",
+      "net_unittests",
+      "service_manager_unittests",
+      "skia_unittests",
+      "sql_unittests",
+      "ui_base_unittests"
+    ]
+  },
   "Fuchsia x64": {
     "additional_compile_targets": [
       "base_unittests",
diff --git a/testing/buildbot/chromium.perf.fyi.json b/testing/buildbot/chromium.perf.fyi.json
index fc7bc9d..678a877 100644
--- a/testing/buildbot/chromium.perf.fyi.json
+++ b/testing/buildbot/chromium.perf.fyi.json
@@ -1728,68 +1728,6 @@
       },
       {
         "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release_x64",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:22b1",
-              "id": "build152-b1",
-              "os": "Windows-10-10586",
-              "pool": "Chrome-perf-fyi"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:22b1",
-              "id": "build152-b1",
-              "os": "Windows-10-10586",
-              "pool": "Chrome-perf-fyi"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "memory.desktop",
           "-v",
           "--upload-results",
@@ -5832,68 +5770,6 @@
       },
       {
         "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release_x64",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "1002:9874",
-              "id": "build216-b4",
-              "os": "Windows-10-10586",
-              "pool": "Chrome-perf-fyi"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "1002:9874",
-              "id": "build216-b4",
-              "os": "Windows-10-10586",
-              "pool": "Chrome-perf-fyi"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "memory.desktop",
           "-v",
           "--upload-results",
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json
index e1dfc2a..07ad10df 100644
--- a/testing/buildbot/chromium.perf.json
+++ b/testing/buildbot/chromium.perf.json
@@ -1339,66 +1339,6 @@
       },
       {
         "args": [
-          "media.android.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.android.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "id": "build14-b1--device6",
-              "os": "Android",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.android.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.android.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "id": "build14-b1--device6",
-              "os": "Android",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "media.media_cns_cases",
           "-v",
           "--upload-results",
@@ -6210,66 +6150,6 @@
       },
       {
         "args": [
-          "media.android.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.android.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "id": "build74-b1--device6",
-              "os": "Android",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.android.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.android.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "id": "build74-b1--device6",
-              "os": "Android",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "media.media_cns_cases",
           "-v",
           "--upload-results",
@@ -13445,66 +13325,6 @@
       },
       {
         "args": [
-          "media.android.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.android.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "id": "build16-b1--device6",
-              "os": "Android",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.android.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.android.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "id": "build16-b1--device6",
-              "os": "Android",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "media.media_cns_cases",
           "-v",
           "--upload-results",
@@ -20680,66 +20500,6 @@
       },
       {
         "args": [
-          "media.android.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.android.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "id": "build10-b1--device6",
-              "os": "Android",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.android.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.android.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "id": "build10-b1--device6",
-              "os": "Android",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "media.media_cns_cases",
           "-v",
           "--upload-results",
@@ -25551,66 +25311,6 @@
       },
       {
         "args": [
-          "media.android.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.android.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "id": "build18-b1--device6",
-              "os": "Android",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.android.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.android.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "id": "build18-b1--device6",
-              "os": "Android",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "media.media_cns_cases",
           "-v",
           "--upload-results",
@@ -30656,68 +30356,6 @@
         }
       },
       {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "10de:1cb3",
-              "id": "build30-a9",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "10de:1cb3",
-              "id": "build30-a9",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
         "args": [],
         "isolate_name": "media_perftests",
         "name": "media_perftests",
@@ -34967,68 +34605,6 @@
         }
       },
       {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:0166",
-              "id": "build102-b1",
-              "os": "Mac-10.11",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:0166",
-              "id": "build102-b1",
-              "os": "Mac-10.11",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
         "args": [],
         "isolate_name": "media_perftests",
         "name": "media_perftests",
@@ -39175,68 +38751,6 @@
       },
       {
         "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:0a2e",
-              "id": "build158-m1",
-              "os": "Mac-10.12",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:0a2e",
-              "id": "build158-m1",
-              "os": "Mac-10.12",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "memory.desktop",
           "-v",
           "--upload-results",
@@ -43382,68 +42896,6 @@
       },
       {
         "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:1626",
-              "id": "build123-b1",
-              "os": "Mac-10.11",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:1626",
-              "id": "build123-b1",
-              "os": "Mac-10.11",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "memory.desktop",
           "-v",
           "--upload-results",
@@ -47589,68 +47041,6 @@
       },
       {
         "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:0a26",
-              "id": "build24-b1",
-              "os": "Mac-10.12",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:0a26",
-              "id": "build24-b1",
-              "os": "Mac-10.12",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "memory.desktop",
           "-v",
           "--upload-results",
@@ -51775,68 +51165,6 @@
       },
       {
         "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "1002:6821",
-              "id": "build128-b1",
-              "os": "Mac-10.11",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "1002:6821",
-              "id": "build128-b1",
-              "os": "Mac-10.11",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "memory.desktop",
           "-v",
           "--upload-results",
@@ -55982,68 +55310,6 @@
       },
       {
         "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:0d26",
-              "id": "build4-b1",
-              "os": "Mac-10.11",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:0d26",
-              "id": "build4-b1",
-              "os": "Mac-10.11",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "memory.desktop",
           "-v",
           "--upload-results",
@@ -60065,68 +59331,6 @@
       },
       {
         "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release_x64",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:1616",
-              "id": "build117-b1",
-              "os": "Windows-10-10240",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:1616",
-              "id": "build117-b1",
-              "os": "Windows-10-10240",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "memory.desktop",
           "-v",
           "--upload-results",
@@ -64126,68 +63330,6 @@
         }
       },
       {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release_x64",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build132-m1",
-              "os": "Windows-10-10240",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build132-m1",
-              "os": "Windows-10-10240",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
         "args": [],
         "isolate_name": "media_perftests",
         "name": "media_perftests",
@@ -68251,68 +67393,6 @@
         }
       },
       {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release_x64",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "1002:6613",
-              "id": "build101-m1",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "1002:6613",
-              "id": "build101-m1",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
         "args": [],
         "isolate_name": "media_perftests",
         "name": "media_perftests",
@@ -72398,68 +71478,6 @@
       },
       {
         "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release_x64",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:041a",
-              "id": "build164-m1",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "8086:041a",
-              "id": "build164-m1",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "memory.desktop",
           "-v",
           "--upload-results",
@@ -76522,68 +75540,6 @@
         }
       },
       {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release_x64",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "10de:104a",
-              "id": "build92-m1",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "10de:104a",
-              "id": "build92-m1",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
         "args": [],
         "isolate_name": "media_perftests",
         "name": "media_perftests",
@@ -80626,68 +79582,6 @@
         }
       },
       {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0532",
-              "id": "build185-m1",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0532",
-              "id": "build185-m1",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
         "args": [],
         "isolate_name": "media_perftests",
         "name": "media_perftests",
@@ -84731,68 +83625,6 @@
       },
       {
         "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release_x64",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0532",
-              "id": "build138-m1",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0532",
-              "id": "build138-m1",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
           "memory.desktop",
           "-v",
           "--upload-results",
@@ -88834,68 +87666,6 @@
         }
       },
       {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=release_x64",
-          "--output-format=chartjson"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0532",
-              "id": "build143-m1",
-              "os": "Windows-2012ServerR2-SP0",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=chartjson",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0532",
-              "id": "build143-m1",
-              "os": "Windows-2012ServerR2-SP0",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 600,
-          "upload_test_results": false
-        }
-      },
-      {
         "args": [],
         "isolate_name": "media_perftests",
         "name": "media_perftests",
diff --git a/testing/buildbot/chromium.win.json b/testing/buildbot/chromium.win.json
index 2ee766f5..0297987 100644
--- a/testing/buildbot/chromium.win.json
+++ b/testing/buildbot/chromium.win.json
@@ -138,6 +138,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -715,6 +721,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -1264,6 +1276,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
@@ -1829,6 +1847,12 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "crashpad_util_test"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "crypto_unittests"
       },
       {
diff --git a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
index b887b4f..0ddfea5 100644
--- a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
+++ b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
@@ -75,11 +75,17 @@
 -AppEventPageTest.OnSuspendNoApiUse
 -AppEventPageTest.OnSuspendUseStorageApi
 -AppViewTests/AppViewTest.KillGuestWithInvalidInstanceID/0
+-AppViewTests/AppViewTest.KillGuestWithInvalidInstanceID/1
 -AppViewTests/AppViewTest.TestAppViewEmbedSelfShouldFail/0
+-AppViewTests/AppViewTest.TestAppViewEmbedSelfShouldFail/1
 -AppViewTests/AppViewTest.TestAppViewGoodDataShouldSucceed/0
+-AppViewTests/AppViewTest.TestAppViewGoodDataShouldSucceed/1
 -AppViewTests/AppViewTest.TestAppViewMultipleConnects/0
+-AppViewTests/AppViewTest.TestAppViewMultipleConnects/1
 -AppViewTests/AppViewTest.TestAppViewRefusedDataShouldFail/0
+-AppViewTests/AppViewTest.TestAppViewRefusedDataShouldFail/1
 -AppViewTests/AppViewTest.TestAppViewWithUndefinedDataShouldSucceed/0
+-AppViewTests/AppViewTest.TestAppViewWithUndefinedDataShouldSucceed/1
 -AppWindowAPITest.TestCloseEvent
 -AppWindowAPITest.TestCreate
 -AppWindowAPITest.TestFrameColors
@@ -249,6 +255,13 @@
 -ContentVerifierTest.FailOnDone
 -ContentVerifierTest.FailOnRead
 -CrazyExtensionTest.Crazy
+-CredentialManagerBrowserTest.StoreSavesPSLMatchedCredential
+-CredentialManagerBrowserTest.StoreInUnloadHandler_SameSite_PreestablishedPipe
+-CredentialManagerBrowserTest.StoreInUnloadHandler_CrossSite_OnDemandMojoPipe
+-CredentialManagerBrowserTest.StoreInUnloadHandler_CrossSite_PreestablishedPipe
+-CredentialManagerBrowserTest.MojoConnectionRecreatedAfterNavigation
+-CredentialManagerBrowserTest.CreatePublicKeyCredentialNotImplemented
+-CredentialManagerBrowserTest.CreatePublicKeyCredentialAlgorithmNotSupported
 -CrossOriginXHR.AllURLs
 -CrossOriginXHR.BackgroundPage
 -CrossOriginXHR.ContentScript
@@ -564,6 +577,9 @@
 -ExtensionWebUITest.ReceivesExtensionOptionsOnClose
 -ExtensionWindowLastFocusedTest.NoDevtoolsAndAppWindows
 -ExtensionWindowLastFocusedTest.NoTabIdForDevToolsAndAppWindows
+-ExtensionViewTests/ExtensionViewTest.ShimExtensionAttribute/1
+-ExtensionViewTests/ExtensionViewTest.TestExtensionViewCreationShouldSucceed/1
+-ExtensionViewTests/ExtensionViewTest.ShimSrcAttribute/1
 -ExternallyConnectableMessagingTest.WebConnectableWithTlsChannelIdWithEmptyTlsChannelId
 -ExternallyConnectableMessagingTest.WebConnectableWithoutTlsChannelId
 -ExternallyConnectableMessagingWithTlsChannelIdTest.WebConnectableWithNonEmptyTlsChannelId
@@ -693,6 +709,7 @@
 -LazyBackgroundPageApiTest.WaitForRequest
 -LazyBackgroundPageApiTest.WaitForView
 -LoadAndLaunchPlatformAppBrowserTest.LoadAndLaunchAppChromeNotRunning
+-LocalNTPJavascriptTest.LoadsIframe
 -LoginPromptBrowserTest.AllowCrossdomainPromptForSubframes
 -LoginPromptBrowserTest.BlockCrossdomainPromptForSubresources
 -LoginPromptBrowserTest.CancelLoginInterstitialOnRedirect
@@ -961,6 +978,14 @@
 -PaymentRequestJourneyLoggerNoShippingSectionStatsTest.NumberOfSuggestionsShown_UserAborted
 -PaymentRequestJourneyLoggerNoSupportedPaymentMethodTest.OnlyBobpaySupported
 -PaymentRequestJourneyLoggerSelectedPaymentInstrumentTest.TestSelectedPaymentMethod
+-PaymentRequestModifiersTest.NoModifierAppliedIfNoSelectedInstrument
+-PaymentRequestModifiersTest.ModifierAppliedIfApplicableSelectedInstrumentWithoutTypeOrNetwork
+-PaymentRequestModifiersTest.ModifierAppliedIfApplicableSelectedInstrumentWithCreditSupportedType
+-PaymentRequestModifiersTest.ModifierNotAppliedIfSelectedInstrumentWithDebitSupportedType
+-PaymentRequestModifiersTest.ModifierAppliedIfApplicableSelectedInstrumentWithMatchingNetwork
+-PaymentRequestModifiersTest.ModifierNotAppliedIfSelectedInstrumentWithoutMatchingNetwork
+-PaymentRequestModifiersTest.ModifierAppliedToBasicCardWithoutTypeOrNetwork
+-PaymentRequestModifiersTest.ModifierAppliedToUnknownTypeWithMatchingNetwork
 -PaymentRequestNoShippingTest.InactiveBrowserWindow
 -PaymentRequestNoShippingTest.InvalidSSL
 -PaymentRequestNoShippingTest.OpenAndClickCancel
@@ -1113,6 +1138,18 @@
 -PlatformAppWithFileBrowserTest.LaunchWithWrongEmptyExtension
 -PlatformAppWithFileBrowserTest.LaunchWithWrongExtension
 -PlatformAppWithFileBrowserTest.LaunchWithWrongType
+-PredictorBrowserTest.CrossSiteSimplePredictionAfterOneNavigation
+-PredictorBrowserTest.DontPredictBasedOnSubresources
+-PredictorBrowserTest.PredictBasedOnSubframeRedirect
+-PredictorBrowserTest.SubframeCrossSitePrediction
+-PredictorBrowserTest.SubframeInitiatesPreconnects
+-PredictorBrowserTest.SubframeLearning
+-PredictorBrowserTest.CrossSiteSimplePredictionAfterTwoNavigations
+-PredictorBrowserTest.CrossSiteSimplePredictionAfterTwoNavigations2
+-PredictorBrowserTest.CrossSiteRedirectPredictionWithNoPath
+-PredictorBrowserTest.CrossSiteRedirectPredictionWithNoPathDifferentHostName
+-PredictorBrowserTest.CrossSiteTwoRedirectsPredictionWithNoPath
+-PredictorBrowserTest.RendererInitiatedNavigationPreconnect
 -PreferencesPrivateApiTest.TestEasyUnlockEvent
 -PrefetchBrowserTestPredictionDisabled.ExperimentDisabled
 -PrintPreviewUIBrowserTest.AdvancedSettings1Option
@@ -1180,6 +1217,9 @@
 -ResourcesPrivateApiTest.GetStrings
 -RuntimeAPIUpdateTest.TerminatedExtensionUpdateHasCorrectPreviousVersion
 -SafeBrowsingRedirectTracking/WebstoreInlineInstallerRedirectTest.IncludesRedirectData/0
+-SafeBrowsingTriggeredPopupBlockerBrowserTest.NoFeature_AllowCreatingNewWindows
+-SafeBrowsingTriggeredPopupBlockerBrowserTest.NoFeature_NoMessages
+-SafeBrowsingTriggeredPopupBlockerBrowserTest.BlockCreatingNewWindows_LogsToConsole
 -SecurityStateTabHelperTest.SecurityLevelDowngradedAfterEditing
 -SerialApiTest.SerialFakeHardware
 -SerialApiTest.SerialRealHardware
@@ -1254,6 +1294,7 @@
 -StreamsPrivateApiTest.FileURL
 -StreamsPrivateApiTest.Headers
 -StreamsPrivateApiTest.Navigate
+-SubresourceFilterBrowserTest.FailedProvisionalLoadInMainframe
 -SymantecMessageSSLUITest.ManySubresources
 -SymantecMessageSSLUITest.PostJune2016
 -SymantecMessageSSLUITest.PreJune2016
@@ -1325,208 +1366,411 @@
 -WebViewScrollBubbling/WebViewGuestScrollTouchTest.TestGuestGestureScrollsBubble/1
 -WebViewScrollGuestContent/WebViewScrollGuestContentTest.OverscrollControllerSeesConsumedScrollsInGuest/0
 -WebViewTests/IsolatedOriginWebViewTest.IsolatedOriginInWebview/0
+-WebViewTests/IsolatedOriginWebViewTest.IsolatedOriginInWebview/1
 -WebViewTests/IsolatedOriginWebViewTest.LoadIsolatedOriginInWebviewAfterLoadingInRegularTab/0
+-WebViewTests/IsolatedOriginWebViewTest.LoadIsolatedOriginInWebviewAfterLoadingInRegularTab/1
 -WebViewTests/WebViewAccessibilityTest.FocusAccessibility/0
+-WebViewTests/WebViewAccessibilityTest.FocusAccessibility/1
 -WebViewTests/WebViewAccessibilityTest.LoadWebViewAccessibility/0
+-WebViewTests/WebViewAccessibilityTest.LoadWebViewAccessibility/1
 -WebViewTests/WebViewDPITest.Shim_TestAutosizeBeforeNavigation/0
+-WebViewTests/WebViewDPITest.Shim_TestAutosizeBeforeNavigation/1
 -WebViewTests/WebViewDPITest.Shim_TestAutosizeHeight/0
+-WebViewTests/WebViewDPITest.Shim_TestAutosizeHeight/1
 -WebViewTests/WebViewDPITest.Shim_TestAutosizeRemoveAttributes/0
+-WebViewTests/WebViewDPITest.Shim_TestAutosizeRemoveAttributes/1
 -WebViewTests/WebViewFocusTest.TouchFocusesEmbedder/0
+-WebViewTests/WebViewFocusTest.TouchFocusesEmbedder/1
 -WebViewTests/WebViewNewWindowTest.OpenURLFromTab_NewWindow_Abort/0
+-WebViewTests/WebViewNewWindowTest.OpenURLFromTab_NewWindow_Abort/1
 -WebViewTests/WebViewNewWindowTest.Shim_TestAddContentScriptsWithNewWindowAPI/0
+-WebViewTests/WebViewNewWindowTest.Shim_TestAddContentScriptsWithNewWindowAPI/1
 -WebViewTests/WebViewNewWindowTest.Shim_TestNewWindow/0
+-WebViewTests/WebViewNewWindowTest.Shim_TestNewWindow/1
 -WebViewTests/WebViewNewWindowTest.Shim_TestNewWindowNoPreventDefault/0
+-WebViewTests/WebViewNewWindowTest.Shim_TestNewWindowNoPreventDefault/1
 -WebViewTests/WebViewNewWindowTest.Shim_TestNewWindowNoReferrerLink/0
+-WebViewTests/WebViewNewWindowTest.Shim_TestNewWindowNoReferrerLink/1
 -WebViewTests/WebViewNewWindowTest.Shim_TestNewWindowTwoListeners/0
+-WebViewTests/WebViewNewWindowTest.Shim_TestNewWindowTwoListeners/1
 -WebViewTests/WebViewNewWindowTest.UserAgent_NewWindow/0
+-WebViewTests/WebViewNewWindowTest.UserAgent_NewWindow/1
 -WebViewTests/WebViewPluginTest.TestLoadPluginEvent/0
+-WebViewTests/WebViewPluginTest.TestLoadPluginEvent/1
 -WebViewTests/WebViewPluginTest.TestLoadPluginInternalResource/0
+-WebViewTests/WebViewPluginTest.TestLoadPluginInternalResource/1
 -WebViewTests/WebViewSizeTest.AutoSize/0
+-WebViewTests/WebViewSizeTest.AutoSize/1
 -WebViewTests/WebViewSizeTest.Shim_TestAutosizeBeforeNavigation/0
+-WebViewTests/WebViewSizeTest.Shim_TestAutosizeBeforeNavigation/1
 -WebViewTests/WebViewSizeTest.Shim_TestAutosizeHeight/0
+-WebViewTests/WebViewSizeTest.Shim_TestAutosizeHeight/1
 -WebViewTests/WebViewSizeTest.Shim_TestAutosizeRemoveAttributes/0
+-WebViewTests/WebViewSizeTest.Shim_TestAutosizeRemoveAttributes/1
 -WebViewTests/WebViewSizeTest.Shim_TestResizeEvents/0
+-WebViewTests/WebViewSizeTest.Shim_TestResizeEvents/1
 -WebViewTests/WebViewSizeTest.Shim_TestResizeWebviewResizesContent/0
+-WebViewTests/WebViewSizeTest.Shim_TestResizeWebviewResizesContent/1
 -WebViewTests/WebViewSizeTest.Shim_TestResizeWebviewWithDisplayNoneResizesContent/0
+-WebViewTests/WebViewSizeTest.Shim_TestResizeWebviewWithDisplayNoneResizesContent/1
 -WebViewTests/WebViewSpeechAPITest.SpeechRecognitionAPI_HasPermissionAllow/0
+-WebViewTests/WebViewSpeechAPITest.SpeechRecognitionAPI_HasPermissionAllow/1
 -WebViewTests/WebViewSpeechAPITest.SpeechRecognitionAPI_HasPermissionDeny/0
+-WebViewTests/WebViewSpeechAPITest.SpeechRecognitionAPI_HasPermissionDeny/1
 -WebViewTests/WebViewSpeechAPITest.SpeechRecognitionAPI_NoPermission/0
+-WebViewTests/WebViewSpeechAPITest.SpeechRecognitionAPI_NoPermission/1
 -WebViewTests/WebViewTest.AcceptTouchEvents/0
+-WebViewTests/WebViewTest.AcceptTouchEvents/1
 -WebViewTests/WebViewTest.AddRemoveWebView_AddRemoveWebView/0
+-WebViewTests/WebViewTest.AddRemoveWebView_AddRemoveWebView/1
 -WebViewTests/WebViewTest.AllowTransparencyAndAllowScalingPropagate/0
+-WebViewTests/WebViewTest.AllowTransparencyAndAllowScalingPropagate/1
 -WebViewTests/WebViewTest.AudibilityStatePropagates/0
+-WebViewTests/WebViewTest.AudibilityStatePropagates/1
 -WebViewTests/WebViewTest.AudioMutesOnAttach/0
+-WebViewTests/WebViewTest.AudioMutesOnAttach/1
 -WebViewTests/WebViewTest.AudioMutesWhileAttached/0
+-WebViewTests/WebViewTest.AudioMutesWhileAttached/1
 -WebViewTests/WebViewTest.AudioStateJavascriptAPI/0
+-WebViewTests/WebViewTest.AudioStateJavascriptAPI/1
 -WebViewTests/WebViewTest.BasicPostMessage/0
+-WebViewTests/WebViewTest.BasicPostMessage/1
 -WebViewTests/WebViewTest.BlobInWebviewAccessibleResource/0
+-WebViewTests/WebViewTest.BlobInWebviewAccessibleResource/1
 -WebViewTests/WebViewTest.ClearData/0
+-WebViewTests/WebViewTest.ClearData/1
 -WebViewTests/WebViewTest.ClearDataCache/0
+-WebViewTests/WebViewTest.ClearDataCache/1
 -WebViewTests/WebViewTest.ClearDataTwice/0
+-WebViewTests/WebViewTest.ClearDataTwice/1
 -WebViewTests/WebViewTest.ClearPersistentCookies/0
+-WebViewTests/WebViewTest.ClearPersistentCookies/1
 -WebViewTests/WebViewTest.ClearSessionCookies/0
+-WebViewTests/WebViewTest.ClearSessionCookies/1
 -WebViewTests/WebViewTest.CloseOnLoadcommit/0
+-WebViewTests/WebViewTest.CloseOnLoadcommit/1
 -WebViewTests/WebViewTest.ConsoleMessage/0
+-WebViewTests/WebViewTest.ConsoleMessage/1
 -WebViewTests/WebViewTest.ContentScriptFetch/0
+-WebViewTests/WebViewTest.ContentScriptFetch/1
 -WebViewTests/WebViewTest.ContextMenuInspectElement/0
+-WebViewTests/WebViewTest.ContextMenuInspectElement/1
 -WebViewTests/WebViewTest.ContextMenuLanguageSettings/0
+-WebViewTests/WebViewTest.ContextMenuLanguageSettings/1
 -WebViewTests/WebViewTest.ContextMenuNavigationInMimeHandlerView/0
+-WebViewTests/WebViewTest.ContextMenuNavigationInMimeHandlerView/1
 -WebViewTests/WebViewTest.ContextMenusAPI_Basic/0
+-WebViewTests/WebViewTest.ContextMenusAPI_Basic/1
 -WebViewTests/WebViewTest.ContextMenusAPI_PreventDefault/0
+-WebViewTests/WebViewTest.ContextMenusAPI_PreventDefault/1
 -WebViewTests/WebViewTest.CookieIsolation/0
+-WebViewTests/WebViewTest.CookieIsolation/1
 -WebViewTests/WebViewTest.DOMStorageIsolation/0
+-WebViewTests/WebViewTest.DOMStorageIsolation/1
 -WebViewTests/WebViewTest.Dialog_TestAlertDialog/0
+-WebViewTests/WebViewTest.Dialog_TestAlertDialog/1
 -WebViewTests/WebViewTest.Dialog_TestConfirmDialogCancel/0
+-WebViewTests/WebViewTest.Dialog_TestConfirmDialogCancel/1
 -WebViewTests/WebViewTest.Dialog_TestConfirmDialogDefaultCancel/0
+-WebViewTests/WebViewTest.Dialog_TestConfirmDialogDefaultCancel/1
 -WebViewTests/WebViewTest.Dialog_TestConfirmDialogDefaultGCCancel/0
+-WebViewTests/WebViewTest.Dialog_TestConfirmDialogDefaultGCCancel/1
 -WebViewTests/WebViewTest.Dialog_TestPromptDialog/0
+-WebViewTests/WebViewTest.Dialog_TestPromptDialog/1
 -WebViewTests/WebViewTest.DisplayNoneSetSrc/0
+-WebViewTests/WebViewTest.DisplayNoneSetSrc/1
 -WebViewTests/WebViewTest.DownloadCookieIsolation/0
+-WebViewTests/WebViewTest.DownloadCookieIsolation/1
 -WebViewTests/WebViewTest.DownloadCookieIsolation_CrossSession/0
+-WebViewTests/WebViewTest.DownloadCookieIsolation_CrossSession/1
 -WebViewTests/WebViewTest.DownloadPermission/0
+-WebViewTests/WebViewTest.DownloadPermission/1
 -WebViewTests/WebViewTest.ExecuteScript/0
+-WebViewTests/WebViewTest.ExecuteScript/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromMainThreadAllow/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromMainThreadAllow/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromMainThreadDefaultAllow/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromMainThreadDefaultAllow/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromMainThreadDeny/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromMainThreadDeny/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfMultiWebViewGuestsAllow/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfMultiWebViewGuestsAllow/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfMultiWebViewGuestsDefaultAllow/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfMultiWebViewGuestsDefaultAllow/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfMultiWebViewGuestsDeny/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfMultiWebViewGuestsDeny/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfSingleWebViewGuestAllow/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfSingleWebViewGuestAllow/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfSingleWebViewGuestDefaultAllow/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfSingleWebViewGuestDefaultAllow/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfSingleWebViewGuestDeny/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromSharedWorkerOfSingleWebViewGuestDeny/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromWorkerAllow/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromWorkerAllow/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromWorkerDefaultAllow/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromWorkerDefaultAllow/1
 -WebViewTests/WebViewTest.FileSystemAPIRequestFromWorkerDeny/0
+-WebViewTests/WebViewTest.FileSystemAPIRequestFromWorkerDeny/1
 -WebViewTests/WebViewTest.GeolocationAPICancelGeolocation/0
+-WebViewTests/WebViewTest.GeolocationAPICancelGeolocation/1
 -WebViewTests/WebViewTest.GeolocationAPIEmbedderHasAccessDeny/0
+-WebViewTests/WebViewTest.GeolocationAPIEmbedderHasAccessDeny/1
 -WebViewTests/WebViewTest.GeolocationAPIEmbedderHasNoAccessAllow/0
+-WebViewTests/WebViewTest.GeolocationAPIEmbedderHasNoAccessAllow/1
 -WebViewTests/WebViewTest.GeolocationAPIEmbedderHasNoAccessDeny/0
+-WebViewTests/WebViewTest.GeolocationAPIEmbedderHasNoAccessDeny/1
 -WebViewTests/WebViewTest.IndexedDBIsolation/0
+-WebViewTests/WebViewTest.IndexedDBIsolation/1
 -WebViewTests/WebViewTest.InterstitialPageDetach/0
+-WebViewTests/WebViewTest.InterstitialPageDetach/1
 -WebViewTests/WebViewTest.InterstitialTeardown/0
+-WebViewTests/WebViewTest.InterstitialTeardown/1
 -WebViewTests/WebViewTest.LoadWebviewAccessibleResource/0
+-WebViewTests/WebViewTest.LoadWebviewAccessibleResource/1
 -WebViewTests/WebViewTest.LoadWebviewInaccessibleResource/0
+-WebViewTests/WebViewTest.LoadWebviewInaccessibleResource/1
 -WebViewTests/WebViewTest.LoadWebviewInsideIframe/0
+-WebViewTests/WebViewTest.LoadWebviewInsideIframe/1
 -WebViewTests/WebViewTest.MediaAccessAPIAllow_TestAllow/0
+-WebViewTests/WebViewTest.MediaAccessAPIAllow_TestAllow/1
 -WebViewTests/WebViewTest.MediaAccessAPIAllow_TestAllowAndThenDeny/0
+-WebViewTests/WebViewTest.MediaAccessAPIAllow_TestAllowAndThenDeny/1
 -WebViewTests/WebViewTest.MediaAccessAPIAllow_TestAllowAsync/0
+-WebViewTests/WebViewTest.MediaAccessAPIAllow_TestAllowAsync/1
 -WebViewTests/WebViewTest.MediaAccessAPIAllow_TestAllowTwice/0
+-WebViewTests/WebViewTest.MediaAccessAPIAllow_TestAllowTwice/1
 -WebViewTests/WebViewTest.MediaAccessAPIAllow_TestCheck/0
+-WebViewTests/WebViewTest.MediaAccessAPIAllow_TestCheck/1
 -WebViewTests/WebViewTest.MediaAccessAPIDeny_TestDeny/0
+-WebViewTests/WebViewTest.MediaAccessAPIDeny_TestDeny/1
 -WebViewTests/WebViewTest.MediaAccessAPIDeny_TestDenyThenAllowThrows/0
+-WebViewTests/WebViewTest.MediaAccessAPIDeny_TestDenyThenAllowThrows/1
 -WebViewTests/WebViewTest.MediaAccessAPIDeny_TestDenyWithPreventDefault/0
+-WebViewTests/WebViewTest.MediaAccessAPIDeny_TestDenyWithPreventDefault/1
 -WebViewTests/WebViewTest.MediaAccessAPIDeny_TestNoListenersImplyDeny/0
+-WebViewTests/WebViewTest.MediaAccessAPIDeny_TestNoListenersImplyDeny/1
 -WebViewTests/WebViewTest.MediaAccessAPIDeny_TestNoPreventDefaultImpliesDeny/0
+-WebViewTests/WebViewTest.MediaAccessAPIDeny_TestNoPreventDefaultImpliesDeny/1
 -WebViewTests/WebViewTest.NestedGuestContainerBounds/0
+-WebViewTests/WebViewTest.NestedGuestContainerBounds/1
 -WebViewTests/WebViewTest.NoContentSettingsAPI/0
+-WebViewTests/WebViewTest.NoContentSettingsAPI/1
 -WebViewTests/WebViewTest.NoPermission/0
+-WebViewTests/WebViewTest.NoPermission/1
 -WebViewTests/WebViewTest.NoPrerenderer/0
+-WebViewTests/WebViewTest.NoPrerenderer/1
 -WebViewTests/WebViewTest.OpenURLFromTab_CurrentTab_Abort/0
+-WebViewTests/WebViewTest.OpenURLFromTab_CurrentTab_Abort/1
 -WebViewTests/WebViewTest.OpenURLFromTab_CurrentTab_Succeed/0
+-WebViewTests/WebViewTest.OpenURLFromTab_CurrentTab_Succeed/1
 -WebViewTests/WebViewTest.ReloadEmbedder/0
+-WebViewTests/WebViewTest.ReloadEmbedder/1
 -WebViewTests/WebViewTest.ReloadWebviewAccessibleResource/0
+-WebViewTests/WebViewTest.ReloadWebviewAccessibleResource/1
 -WebViewTests/WebViewTest.ScreenCoordinates/0
+-WebViewTests/WebViewTest.ScreenCoordinates/1
 -WebViewTests/WebViewTest.SelectShowHide/0
+-WebViewTests/WebViewTest.SelectShowHide/1
 -WebViewTests/WebViewTest.SendMessageToComponentExtensionFromGuest/0
+-WebViewTests/WebViewTest.SendMessageToComponentExtensionFromGuest/1
 -WebViewTests/WebViewTest.SendMessageToExtensionFromGuest/0
+-WebViewTests/WebViewTest.SendMessageToExtensionFromGuest/1
 -WebViewTests/WebViewTest.SetPropertyOnDocumentInteractive/0
+-WebViewTests/WebViewTest.SetPropertyOnDocumentInteractive/1
 -WebViewTests/WebViewTest.SetPropertyOnDocumentReady/0
+-WebViewTests/WebViewTest.SetPropertyOnDocumentReady/1
 -WebViewTests/WebViewTest.ShimSrcAttribute/0
+-WebViewTests/WebViewTest.ShimSrcAttribute/1
 -WebViewTests/WebViewTest.Shim_TestAPIMethodExistence/0
+-WebViewTests/WebViewTest.Shim_TestAPIMethodExistence/1
 -WebViewTests/WebViewTest.Shim_TestAddAndRemoveContentScripts/0
+-WebViewTests/WebViewTest.Shim_TestAddAndRemoveContentScripts/1
 -WebViewTests/WebViewTest.Shim_TestAddContentScript/0
+-WebViewTests/WebViewTest.Shim_TestAddContentScript/1
 -WebViewTests/WebViewTest.Shim_TestAddContentScriptToOneWebViewShouldNotInjectToTheOtherWebView/0
+-WebViewTests/WebViewTest.Shim_TestAddContentScriptToOneWebViewShouldNotInjectToTheOtherWebView/1
 -WebViewTests/WebViewTest.Shim_TestAddContentScriptWithCode/0
+-WebViewTests/WebViewTest.Shim_TestAddContentScriptWithCode/1
 -WebViewTests/WebViewTest.Shim_TestAddContentScriptWithSameNameShouldOverwriteTheExistingOne/0
+-WebViewTests/WebViewTest.Shim_TestAddContentScriptWithSameNameShouldOverwriteTheExistingOne/1
 -WebViewTests/WebViewTest.Shim_TestAddMultipleContentScripts/0
+-WebViewTests/WebViewTest.Shim_TestAddMultipleContentScripts/1
 -WebViewTests/WebViewTest.Shim_TestAddMultipleContentScriptsWithCodeAndCheckGeneratedScriptUrl/0
+-WebViewTests/WebViewTest.Shim_TestAddMultipleContentScriptsWithCodeAndCheckGeneratedScriptUrl/1
 -WebViewTests/WebViewTest.Shim_TestAllowTransparencyAttribute/0
+-WebViewTests/WebViewTest.Shim_TestAllowTransparencyAttribute/1
 -WebViewTests/WebViewTest.Shim_TestAssignSrcAfterCrash/0
+-WebViewTests/WebViewTest.Shim_TestAssignSrcAfterCrash/1
 -WebViewTests/WebViewTest.Shim_TestBlobURL/0
+-WebViewTests/WebViewTest.Shim_TestBlobURL/1
 -WebViewTests/WebViewTest.Shim_TestCannotMutateEventName/0
+-WebViewTests/WebViewTest.Shim_TestCannotMutateEventName/1
 -WebViewTests/WebViewTest.Shim_TestChromeExtensionRelativePath/0
+-WebViewTests/WebViewTest.Shim_TestChromeExtensionRelativePath/1
 -WebViewTests/WebViewTest.Shim_TestChromeExtensionURL/0
+-WebViewTests/WebViewTest.Shim_TestChromeExtensionURL/1
 -WebViewTests/WebViewTest.Shim_TestCloseNewWindowCleanup/0
+-WebViewTests/WebViewTest.Shim_TestCloseNewWindowCleanup/1
 -WebViewTests/WebViewTest.Shim_TestContentInitiatedNavigationToDataUrlBlocked/0
+-WebViewTests/WebViewTest.Shim_TestContentInitiatedNavigationToDataUrlBlocked/1
 -WebViewTests/WebViewTest.Shim_TestContentLoadEvent/0
+-WebViewTests/WebViewTest.Shim_TestContentLoadEvent/1
 -WebViewTests/WebViewTest.Shim_TestContentLoadEventWithDisplayNone/0
+-WebViewTests/WebViewTest.Shim_TestContentLoadEventWithDisplayNone/1
 -WebViewTests/WebViewTest.Shim_TestContentScriptExistsAsLongAsWebViewTagExists/0
+-WebViewTests/WebViewTest.Shim_TestContentScriptExistsAsLongAsWebViewTagExists/1
 -WebViewTests/WebViewTest.Shim_TestContentScriptIsInjectedAfterTerminateAndReloadWebView/0
+-WebViewTests/WebViewTest.Shim_TestContentScriptIsInjectedAfterTerminateAndReloadWebView/1
 -WebViewTests/WebViewTest.Shim_TestDeclarativeWebRequestAPI/0
+-WebViewTests/WebViewTest.Shim_TestDeclarativeWebRequestAPI/1
 -WebViewTests/WebViewTest.Shim_TestDeclarativeWebRequestAPISendMessage/0
+-WebViewTests/WebViewTest.Shim_TestDeclarativeWebRequestAPISendMessage/1
 -WebViewTests/WebViewTest.Shim_TestDeclarativeWebRequestAPISendMessageSecondWebView/0
+-WebViewTests/WebViewTest.Shim_TestDeclarativeWebRequestAPISendMessageSecondWebView/1
 -WebViewTests/WebViewTest.Shim_TestDestroyOnEventListener/0
+-WebViewTests/WebViewTest.Shim_TestDestroyOnEventListener/1
 -WebViewTests/WebViewTest.Shim_TestDisabledZoomMode/0
+-WebViewTests/WebViewTest.Shim_TestDisabledZoomMode/1
 -WebViewTests/WebViewTest.Shim_TestDisplayBlock/0
+-WebViewTests/WebViewTest.Shim_TestDisplayBlock/1
 -WebViewTests/WebViewTest.Shim_TestDisplayNoneWebviewLoad/0
+-WebViewTests/WebViewTest.Shim_TestDisplayNoneWebviewLoad/1
 -WebViewTests/WebViewTest.Shim_TestDisplayNoneWebviewRemoveChild/0
+-WebViewTests/WebViewTest.Shim_TestDisplayNoneWebviewRemoveChild/1
 -WebViewTests/WebViewTest.Shim_TestEventName/0
+-WebViewTests/WebViewTest.Shim_TestEventName/1
 -WebViewTests/WebViewTest.Shim_TestExecuteScript/0
+-WebViewTests/WebViewTest.Shim_TestExecuteScript/1
 -WebViewTests/WebViewTest.Shim_TestExecuteScriptFail/0
+-WebViewTests/WebViewTest.Shim_TestExecuteScriptFail/1
 -WebViewTests/WebViewTest.Shim_TestExecuteScriptIsAbortedWhenWebViewSourceIsInvalid/0
+-WebViewTests/WebViewTest.Shim_TestExecuteScriptIsAbortedWhenWebViewSourceIsInvalid/1
 -WebViewTests/WebViewTest.Shim_TestFindAPI/0
+-WebViewTests/WebViewTest.Shim_TestFindAPI/1
 -WebViewTests/WebViewTest.Shim_TestFindAPI_findupdate/0
+-WebViewTests/WebViewTest.Shim_TestFindAPI_findupdate/1
 -WebViewTests/WebViewTest.Shim_TestFocusWhileFocused/0
+-WebViewTests/WebViewTest.Shim_TestFocusWhileFocused/1
 -WebViewTests/WebViewTest.Shim_TestGarbageCollect/0
+-WebViewTests/WebViewTest.Shim_TestGarbageCollect/1
 -WebViewTests/WebViewTest.Shim_TestGetProcessId/0
+-WebViewTests/WebViewTest.Shim_TestGetProcessId/1
 -WebViewTests/WebViewTest.Shim_TestInlineScriptFromAccessibleResources/0
+-WebViewTests/WebViewTest.Shim_TestInlineScriptFromAccessibleResources/1
 -WebViewTests/WebViewTest.Shim_TestInvalidChromeExtensionURL/0
+-WebViewTests/WebViewTest.Shim_TestInvalidChromeExtensionURL/1
 -WebViewTests/WebViewTest.Shim_TestLoadAbortChromeExtensionURLWrongPartition/0
+-WebViewTests/WebViewTest.Shim_TestLoadAbortChromeExtensionURLWrongPartition/1
 -WebViewTests/WebViewTest.Shim_TestLoadAbortEmptyResponse/0
+-WebViewTests/WebViewTest.Shim_TestLoadAbortEmptyResponse/1
 -WebViewTests/WebViewTest.Shim_TestLoadAbortIllegalChromeURL/0
+-WebViewTests/WebViewTest.Shim_TestLoadAbortIllegalChromeURL/1
 -WebViewTests/WebViewTest.Shim_TestLoadAbortIllegalFileURL/0
+-WebViewTests/WebViewTest.Shim_TestLoadAbortIllegalFileURL/1
 -WebViewTests/WebViewTest.Shim_TestLoadAbortIllegalJavaScriptURL/0
+-WebViewTests/WebViewTest.Shim_TestLoadAbortIllegalJavaScriptURL/1
 -WebViewTests/WebViewTest.Shim_TestLoadAbortInvalidNavigation/0
+-WebViewTests/WebViewTest.Shim_TestLoadAbortInvalidNavigation/1
 -WebViewTests/WebViewTest.Shim_TestLoadAbortNonWebSafeScheme/0
+-WebViewTests/WebViewTest.Shim_TestLoadAbortNonWebSafeScheme/1
 -WebViewTests/WebViewTest.Shim_TestLoadDataAPI/0
+-WebViewTests/WebViewTest.Shim_TestLoadDataAPI/1
 -WebViewTests/WebViewTest.Shim_TestLoadProgressEvent/0
+-WebViewTests/WebViewTest.Shim_TestLoadProgressEvent/1
 -WebViewTests/WebViewTest.Shim_TestLoadStartLoadRedirect/0
+-WebViewTests/WebViewTest.Shim_TestLoadStartLoadRedirect/1
 -WebViewTests/WebViewTest.Shim_TestMailtoLink/0
+-WebViewTests/WebViewTest.Shim_TestMailtoLink/1
 -WebViewTests/WebViewTest.Shim_TestNavOnConsecutiveSrcAttributeChanges/0
+-WebViewTests/WebViewTest.Shim_TestNavOnConsecutiveSrcAttributeChanges/1
 -WebViewTests/WebViewTest.Shim_TestNavOnSrcAttributeChange/0
+-WebViewTests/WebViewTest.Shim_TestNavOnSrcAttributeChange/1
 -WebViewTests/WebViewTest.Shim_TestNavigateAfterResize/0
+-WebViewTests/WebViewTest.Shim_TestNavigateAfterResize/1
 -WebViewTests/WebViewTest.Shim_TestNavigationToExternalProtocol/0
+-WebViewTests/WebViewTest.Shim_TestNavigationToExternalProtocol/1
 -WebViewTests/WebViewTest.Shim_TestNestedCrossOriginSubframes/0
+-WebViewTests/WebViewTest.Shim_TestNestedCrossOriginSubframes/1
 -WebViewTests/WebViewTest.Shim_TestNestedSubframes/0
+-WebViewTests/WebViewTest.Shim_TestNestedSubframes/1
 -WebViewTests/WebViewTest.Shim_TestOnEventProperty/0
+-WebViewTests/WebViewTest.Shim_TestOnEventProperty/1
 -WebViewTests/WebViewTest.Shim_TestPartitionChangeAfterNavigation/0
+-WebViewTests/WebViewTest.Shim_TestPartitionChangeAfterNavigation/1
 -WebViewTests/WebViewTest.Shim_TestPartitionRemovalAfterNavigationFails/0
+-WebViewTests/WebViewTest.Shim_TestPartitionRemovalAfterNavigationFails/1
 -WebViewTests/WebViewTest.Shim_TestPerOriginZoomMode/0
+-WebViewTests/WebViewTest.Shim_TestPerOriginZoomMode/1
 -WebViewTests/WebViewTest.Shim_TestPerViewZoomMode/0
+-WebViewTests/WebViewTest.Shim_TestPerViewZoomMode/1
 -WebViewTests/WebViewTest.Shim_TestReassignSrcAttribute/0
+-WebViewTests/WebViewTest.Shim_TestReassignSrcAttribute/1
 -WebViewTests/WebViewTest.Shim_TestReload/0
+-WebViewTests/WebViewTest.Shim_TestReload/1
 -WebViewTests/WebViewTest.Shim_TestReloadAfterTerminate/0
+-WebViewTests/WebViewTest.Shim_TestReloadAfterTerminate/1
 -WebViewTests/WebViewTest.Shim_TestRemoveSrcAttribute/0
+-WebViewTests/WebViewTest.Shim_TestRemoveSrcAttribute/1
 -WebViewTests/WebViewTest.Shim_TestRemoveWebviewAfterNavigation/0
+-WebViewTests/WebViewTest.Shim_TestRemoveWebviewAfterNavigation/1
 -WebViewTests/WebViewTest.Shim_TestRemoveWebviewOnExit/0
+-WebViewTests/WebViewTest.Shim_TestRemoveWebviewOnExit/1
 -WebViewTests/WebViewTest.Shim_TestRendererNavigationRedirectWhileUnattached/0
+-WebViewTests/WebViewTest.Shim_TestRendererNavigationRedirectWhileUnattached/1
 -WebViewTests/WebViewTest.Shim_TestTerminateAfterExit/0
+-WebViewTests/WebViewTest.Shim_TestTerminateAfterExit/1
 -WebViewTests/WebViewTest.Shim_TestWebRequestAPI/0
+-WebViewTests/WebViewTest.Shim_TestWebRequestAPI/1
 -WebViewTests/WebViewTest.Shim_TestWebRequestAPIAddListener/0
+-WebViewTests/WebViewTest.Shim_TestWebRequestAPIAddListener/1
 -WebViewTests/WebViewTest.Shim_TestWebRequestAPIErrorOccurred/0
+-WebViewTests/WebViewTest.Shim_TestWebRequestAPIErrorOccurred/1
 -WebViewTests/WebViewTest.Shim_TestWebRequestAPIExistence/0
+-WebViewTests/WebViewTest.Shim_TestWebRequestAPIExistence/1
 -WebViewTests/WebViewTest.Shim_TestWebRequestAPIGoogleProperty/0
+-WebViewTests/WebViewTest.Shim_TestWebRequestAPIGoogleProperty/1
 -WebViewTests/WebViewTest.Shim_TestWebRequestAPIOnlyForInstance/0
+-WebViewTests/WebViewTest.Shim_TestWebRequestAPIOnlyForInstance/1
 -WebViewTests/WebViewTest.Shim_TestWebRequestAPIWithHeaders/0
+-WebViewTests/WebViewTest.Shim_TestWebRequestAPIWithHeaders/1
 -WebViewTests/WebViewTest.Shim_TestWebRequestListenerSurvivesReparenting/0
+-WebViewTests/WebViewTest.Shim_TestWebRequestListenerSurvivesReparenting/1
 -WebViewTests/WebViewTest.Shim_TestWebViewInsideFrame/0
+-WebViewTests/WebViewTest.Shim_TestWebViewInsideFrame/1
 -WebViewTests/WebViewTest.Shim_TestZoomAPI/0
+-WebViewTests/WebViewTest.Shim_TestZoomAPI/1
 -WebViewTests/WebViewTest.Shim_TestZoomBeforeNavigation/0
+-WebViewTests/WebViewTest.Shim_TestZoomBeforeNavigation/1
 -WebViewTests/WebViewTest.Shim_WebViewWebRequestRegistryHasNoCache/0
+-WebViewTests/WebViewTest.Shim_WebViewWebRequestRegistryHasNoCache/1
 -WebViewTests/WebViewTest.Shim_testFindInMultipleWebViews/0
+-WebViewTests/WebViewTest.Shim_testFindInMultipleWebViews/1
 -WebViewTests/WebViewTest.StoragePersistence/0
+-WebViewTests/WebViewTest.StoragePersistence/1
 -WebViewTests/WebViewTest.TaskManagerExistingWebView/0
+-WebViewTests/WebViewTest.TaskManagerExistingWebView/1
 -WebViewTests/WebViewTest.TaskManagerNewWebView/0
+-WebViewTests/WebViewTest.TaskManagerNewWebView/1
 -WebViewTests/WebViewTest.TearDownTest/0
+-WebViewTests/WebViewTest.TearDownTest/1
 -WebViewTests/WebViewTest.TestConfirmDialog/0
+-WebViewTests/WebViewTest.TestConfirmDialog/1
 -WebViewTests/WebViewTest.TestContextMenu/0
+-WebViewTests/WebViewTest.TestContextMenu/1
 -WebViewTests/WebViewTest.TestPlugin/0
+-WebViewTests/WebViewTest.TestPlugin/1
 -WebViewTests/WebViewTest.UserAgent/0
+-WebViewTests/WebViewTest.UserAgent/1
 -WebViewTests/WebViewTest.WebViewInBackgroundPage/0
+-WebViewTests/WebViewTest.WebViewInBackgroundPage/1
 -WebViewTests/WebViewTest.WhitelistedContentScript/0
+-WebViewTests/WebViewTest.WhitelistedContentScript/1
 -WebViewTests/WebViewVisibilityTest.EmbedderVisibilityChanged/0
+-WebViewTests/WebViewVisibilityTest.EmbedderVisibilityChanged/1
 -WebViewTests/WebViewVisibilityTest.GuestVisibilityChanged/0
+-WebViewTests/WebViewVisibilityTest.GuestVisibilityChanged/1
 -WebViewTests/WebViewVisibilityTest.Shim_TestHiddenBeforeNavigation/0
+-WebViewTests/WebViewVisibilityTest.Shim_TestHiddenBeforeNavigation/1
 -WebrtcAudioPrivateTest.TriggerEvent
 -WebstoreInlineInstallerTest.CloseTabBeforeInstallConfirmation
 -WebstoreInlineInstallerTest.NavigateBeforeInstallConfirmation
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl
index 8972d0c..d0f310eb 100644
--- a/testing/buildbot/gn_isolate_map.pyl
+++ b/testing/buildbot/gn_isolate_map.pyl
@@ -397,6 +397,10 @@
     "label": "//courgette:courgette_unittests",
     "type": "console_test_launcher",
   },
+  "crashpad_util_test": {
+    "label": "//third_party/crashpad/crashpad/util:crashpad_util_test",
+    "type": "console_test_launcher",
+  },
   "cronet_package": {
     "label": "//components/cronet/android:cronet_package",
     "type": "additional_compile_target",
diff --git a/testing/libfuzzer/fuzzers/libxml_xml_read_memory_fuzzer.cc b/testing/libfuzzer/fuzzers/libxml_xml_read_memory_fuzzer.cc
index 7afe758..3c2589c 100644
--- a/testing/libfuzzer/fuzzers/libxml_xml_read_memory_fuzzer.cc
+++ b/testing/libfuzzer/fuzzers/libxml_xml_read_memory_fuzzer.cc
@@ -25,7 +25,11 @@
   const std::size_t data_hash = std::hash<std::string>()(data_string);
   const int max_option_value = std::numeric_limits<int>::max();
   // Disable XML_PARSE_HUGE to avoid stack overflow.  http://crbug.com/738947.
-  const int random_option = data_hash & max_option_value & ~XML_PARSE_HUGE;
+  // Disable XML_PARSE_NOENT, XML_PARSE_DTD[LOAD|ATTR|VALID] to avoid timeout
+  // loading external entity from stdin. http://crbug.com/755142.
+  const int random_option = data_hash & max_option_value & ~XML_PARSE_NOENT &
+                            ~XML_PARSE_DTDLOAD & ~XML_PARSE_DTDATTR &
+                            ~XML_PARSE_DTDVALID & ~XML_PARSE_HUGE;
   const int options[] = {0, random_option};
 
   for (const auto option_value : options) {
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index bb831c7..f2e1553 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -3160,7 +3160,7 @@
             ]
         }
     ],
-    "SerializeCoreAudioPauseResume": [
+    "SerializeCoreAudioPauseAndResumeDuringSystemSleep": [
         {
             "platforms": [
                 "mac"
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 b/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
index ef33e2a8..375749b 100644
--- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
+++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
@@ -1450,8 +1450,8 @@
 crbug.com/702353 virtual/threaded/transitions/transition-end-event-destroy-iframe.html [ Timeout ]
 crbug.com/702365 virtual/threaded/animations/composited-filter-webkit-filter.html [ Failure ]
 crbug.com/702370 virtual/threaded/animations/compositor-independent-transform-cancel.html [ Failure ]
-crbug.com/778875 virtual/threaded/fast/compositorworker/animation-worklet-visual-update.html [ Failure Crash ]
-crbug.com/778875 virtual/threaded/fast/compositorworker/animation-worklet-animator-animate.html [ Failure ]
+crbug.com/778875 virtual/threaded/fast/animationworklet/animation-worklet-visual-update.html [ Failure Crash ]
+crbug.com/778875 virtual/threaded/fast/animationworklet/animation-worklet-animator-animate.html [ Failure ]
 
 # Eight of the frames in the test below paint no content. In SPv2 we will never
 # composite animations that paint nothing. For now we mark this test as failing,
diff --git a/third_party/WebKit/LayoutTests/VirtualTestSuites b/third_party/WebKit/LayoutTests/VirtualTestSuites
index af5e8d8..81895618 100644
--- a/third_party/WebKit/LayoutTests/VirtualTestSuites
+++ b/third_party/WebKit/LayoutTests/VirtualTestSuites
@@ -28,7 +28,7 @@
   },
   {
     "prefix": "threaded",
-    "base": "fast/compositorworker",
+    "base": "fast/animationworklet",
     "args": ["--enable-threaded-compositing"]
   },
   {
diff --git a/third_party/WebKit/LayoutTests/accessibility/spelling-markers.html b/third_party/WebKit/LayoutTests/accessibility/spelling-markers.html
index 39bc6b2..d5a7c4b 100644
--- a/third_party/WebKit/LayoutTests/accessibility/spelling-markers.html
+++ b/third_party/WebKit/LayoutTests/accessibility/spelling-markers.html
@@ -66,7 +66,7 @@
 
   var input = document.getElementById('input');
   input.focus();
-  var innerEditor = internals.shadowRoot(input).getElementById('inner-editor');
+  var innerEditor = internals.innerEditorElement(input);
   assert_equals(innerEditor.childNodes.length, 1);
   var text = innerEditor.firstChild;
   var range = document.createRange();
@@ -90,7 +90,7 @@
     return;
 
   var textarea = document.getElementById('textarea');
-  var innerEditor = internals.shadowRoot(textarea).getElementById('inner-editor');
+  var innerEditor = internals.innerEditorElement(textarea);
   assert_equals(innerEditor.childNodes.length, 1);
   var text = innerEditor.firstChild;
   var range = document.createRange();
diff --git a/third_party/WebKit/LayoutTests/editing/input/paste-text-ending-with-interchange-newline-expected.txt b/third_party/WebKit/LayoutTests/editing/input/paste-text-ending-with-interchange-newline-expected.txt
index 8771e581..e7898f78 100644
--- a/third_party/WebKit/LayoutTests/editing/input/paste-text-ending-with-interchange-newline-expected.txt
+++ b/third_party/WebKit/LayoutTests/editing/input/paste-text-ending-with-interchange-newline-expected.txt
@@ -1,5 +1,4 @@
 This tests pasting a text with an interchange new line at the end. WebKit shouldn't insert a new line.
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
 |       "abc def"
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/5607069-2-expected.txt b/third_party/WebKit/LayoutTests/editing/inserting/5607069-2-expected.txt
index 8b27537..dac9355c 100644
--- a/third_party/WebKit/LayoutTests/editing/inserting/5607069-2-expected.txt
+++ b/third_party/WebKit/LayoutTests/editing/inserting/5607069-2-expected.txt
@@ -4,11 +4,9 @@
 |   this.value=""
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
 | <br>
 | <input>
 |   type="text"
 |   this.value=""
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/5607069-3-expected.txt b/third_party/WebKit/LayoutTests/editing/inserting/5607069-3-expected.txt
index 67e3d43..5ccb76c 100644
--- a/third_party/WebKit/LayoutTests/editing/inserting/5607069-3-expected.txt
+++ b/third_party/WebKit/LayoutTests/editing/inserting/5607069-3-expected.txt
@@ -6,7 +6,6 @@
 |     this.value=""
 |     <shadow:root>
 |       <div>
-|         id="inner-editor"
 |   "x"
 |   <br>
 |   "<#selection-caret>x"
@@ -15,4 +14,3 @@
 |     this.value=""
 |     <shadow:root>
 |       <div>
-|         id="inner-editor"
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/copy-image-with-alt-text-expected.txt b/third_party/WebKit/LayoutTests/editing/pasteboard/copy-image-with-alt-text-expected.txt
index 88ce907..4f65b7ad 100644
--- a/third_party/WebKit/LayoutTests/editing/pasteboard/copy-image-with-alt-text-expected.txt
+++ b/third_party/WebKit/LayoutTests/editing/pasteboard/copy-image-with-alt-text-expected.txt
@@ -3,7 +3,6 @@
 Dump of markup 1:
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
 |       "Here is an emoticon [], some more text [], an empty alt tag [], no alt tag [] and two consecutive images [].
 "
 |       <br>
@@ -18,7 +17,6 @@
 Dump of markup 3:
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
 |       "Here is an emoticon [:)], some more text [sample text], an empty alt tag [], no alt tag [] and two consecutive images [firstsecond].
 "
 |       <br>
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/copy-null-characters-expected.txt b/third_party/WebKit/LayoutTests/editing/pasteboard/copy-null-characters-expected.txt
index 624f75f..04b3208 100644
--- a/third_party/WebKit/LayoutTests/editing/pasteboard/copy-null-characters-expected.txt
+++ b/third_party/WebKit/LayoutTests/editing/pasteboard/copy-null-characters-expected.txt
@@ -40,7 +40,6 @@
 green"
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
 |       "Copy paste mebold
 
 Copy paste me
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/paste-when-over-link-expected.txt b/third_party/WebKit/LayoutTests/editing/pasteboard/paste-when-over-link-expected.txt
index 5e9a57c..47b1072 100644
--- a/third_party/WebKit/LayoutTests/editing/pasteboard/paste-when-over-link-expected.txt
+++ b/third_party/WebKit/LayoutTests/editing/pasteboard/paste-when-over-link-expected.txt
@@ -6,5 +6,4 @@
 After middle click on link:
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
 |       "Content"
diff --git a/third_party/WebKit/LayoutTests/editing/selection/dump-as-markup-expected.txt b/third_party/WebKit/LayoutTests/editing/selection/dump-as-markup-expected.txt
index d4d52cc..a1964d1 100644
--- a/third_party/WebKit/LayoutTests/editing/selection/dump-as-markup-expected.txt
+++ b/third_party/WebKit/LayoutTests/editing/selection/dump-as-markup-expected.txt
@@ -21,7 +21,6 @@
 |       this.value=""
 |       <shadow:root>
 |         <div>
-|           id="inner-editor"
 |     "
 "
 |     <div>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/dump-as-markup-form-text-expected.txt b/third_party/WebKit/LayoutTests/editing/selection/dump-as-markup-form-text-expected.txt
index 78aa402..3360a18 100644
--- a/third_party/WebKit/LayoutTests/editing/selection/dump-as-markup-form-text-expected.txt
+++ b/third_party/WebKit/LayoutTests/editing/selection/dump-as-markup-form-text-expected.txt
@@ -13,7 +13,6 @@
 |       this.value="replaced"
 |       <shadow:root>
 |         <div>
-|           id="inner-editor"
 |           "replaced"
 |     "
 "
@@ -22,7 +21,6 @@
 |       "original"
 |       <shadow:root>
 |         <div>
-|           id="inner-editor"
 |           "replaced"
 |     "
 "
diff --git a/third_party/WebKit/LayoutTests/editing/spelling/context_click_select_misspelling.html b/third_party/WebKit/LayoutTests/editing/spelling/context_click_select_misspelling.html
index 44924a92..0f9bbdd2 100644
--- a/third_party/WebKit/LayoutTests/editing/spelling/context_click_select_misspelling.html
+++ b/third_party/WebKit/LayoutTests/editing/spelling/context_click_select_misspelling.html
@@ -28,7 +28,7 @@
 function findTextNode(node) {
   if (node.nodeName !== 'INPUT' && node.nodeName !== 'TEXTAREA')
     return node.firstChild;
-  return internals.shadowRoot(node).getElementById('inner-editor').firstChild;
+  return internals.innerEditorElement(node).firstChild;
 }
 
 function assertContextClickSelection(
diff --git a/third_party/WebKit/LayoutTests/editing/spelling/spellcheck_test.js b/third_party/WebKit/LayoutTests/editing/spelling/spellcheck_test.js
index aaa2442..3a8e79c 100644
--- a/third_party/WebKit/LayoutTests/editing/spelling/spellcheck_test.js
+++ b/third_party/WebKit/LayoutTests/editing/spelling/spellcheck_test.js
@@ -176,16 +176,10 @@
    * @param {!HTMLElement} element
    */
   handleInnerEditorOf(element) {
-    /** @type {!ShadowRoot} */
-    const shadowRoot = window.internals.shadowRoot(element);
-    assert_not_equals(
-        shadowRoot, undefined,
-        'Internal error: text form control element not having shadow tree as ' +
-        'internal implementation.');
     /** @type {!HTMLDivElement} */
-    const innerEditor = shadowRoot.getElementById('inner-editor');
+    const innerEditor = internals.innerEditorElement(element);
     assert_equals(innerEditor.tagName, 'DIV',
-                  'Internal error: DIV#inner-editor not found in shadow tree.');
+                  'Internal error: inner editor DIV not found.');
     innerEditor.childNodes.forEach(child => {
       assert_true(isCharacterData(child),
                   'Internal error: inner editor having child node that is ' +
diff --git a/third_party/WebKit/LayoutTests/fast/dom/nodesFromRect/nodesFromRect-child-frame-scrolled-content.html b/third_party/WebKit/LayoutTests/fast/dom/nodesFromRect/nodesFromRect-child-frame-scrolled-content.html
index 489ea34..5d6179a 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/nodesFromRect/nodesFromRect-child-frame-scrolled-content.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/nodesFromRect/nodesFromRect-child-frame-scrolled-content.html
@@ -51,11 +51,11 @@
     var iframeCenterX = iframeBoundingRect.left + iframeBoundingRect.width / 2;
     var iframeCenterY = iframeBoundingRect.top + iframeBoundingRect.height / 2;
 
-   // Rect is totally within input box.
-   checkRect(inputCenterX, inputCenterY, 1, 1, "DIV#inner-editor");
+   // Rect is totally within input box. Inner editor div is found.
+   checkRect(inputCenterX, inputCenterY, 1, 1, "DIV");
    // Rect covers both input box and iframe.
    checkRect(inputCenterX, inputCenterY, inputHeight, inputHeight,
-             "DIV#content, IFRAME#iframe, DIV#inner-editor, INPUT#text-input, BODY#body");
+             "DIV#content, IFRAME#iframe, DIV, INPUT#text-input, BODY#body");
    // Rect is totally within iframe.
    checkRect(iframeCenterX, iframeCenterY, 1, 1, "DIV#content");
 
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/input-date-display-contents-crash-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/shadow/input-date-display-contents-crash-expected.txt
new file mode 100644
index 0000000..654ddf7f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/input-date-display-contents-crash-expected.txt
@@ -0,0 +1 @@
+This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/input-date-display-contents-crash.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/input-date-display-contents-crash.html
new file mode 100644
index 0000000..f0e3e675
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/input-date-display-contents-crash.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML>
+<p>This test passes if it does not crash.</p>
+<input id="date" type="date" value="1986-07-31">
+<script>
+  document.getElementById('date').focus();
+  document.getElementById('date').style.display = "contents";
+  if (window.testRunner)
+    testRunner.dumpAsText();
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-empty-suggested-value-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-empty-suggested-value-expected.txt
index ec0f189e..2f2b607 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-empty-suggested-value-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-empty-suggested-value-expected.txt
@@ -8,7 +8,6 @@
 |   this.value="initial value"
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
 |       "initial value"
 | <br>
 | "
@@ -26,7 +25,6 @@
 |       shadow:pseudoId="-webkit-input-placeholder"
 |       "initial placeholder"
 |     <div>
-|       id="inner-editor"
 | <br>
 | "
 "
@@ -36,7 +34,6 @@
 |   "initial value"
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
 |       "initial value"
 | <br>
 | "
@@ -53,7 +50,6 @@
 |       shadow:pseudoId="-webkit-input-placeholder"
 |       "initial placeholder"
 |     <div>
-|       id="inner-editor"
 | <br>
 | "
 "
@@ -95,7 +91,6 @@
 |       shadow:pseudoId="-webkit-input-suggested"
 |       "suggested value"
 |     <div>
-|       id="inner-editor"
 | <br>
 | "
 "
@@ -112,7 +107,6 @@
 |       shadow:pseudoId="-webkit-input-suggested"
 |       "suggested value"
 |     <div>
-|       id="inner-editor"
 | <br>
 | "
 "
@@ -128,7 +122,6 @@
 |       shadow:pseudoId="-webkit-input-suggested"
 |       "suggested value"
 |     <div>
-|       id="inner-editor"
 | <br>
 | "
 "
@@ -144,7 +137,6 @@
 |       shadow:pseudoId="-webkit-input-suggested"
 |       "suggested value"
 |     <div>
-|       id="inner-editor"
 | <br>
 | "
 "
@@ -190,7 +182,6 @@
 |   this.value="initial value"
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
 |       "initial value"
 | <br>
 | "
@@ -208,7 +199,6 @@
 |       shadow:pseudoId="-webkit-input-placeholder"
 |       "initial placeholder"
 |     <div>
-|       id="inner-editor"
 | <br>
 | "
 "
@@ -218,7 +208,6 @@
 |   "initial value"
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
 |       "initial value"
 | <br>
 | "
@@ -235,7 +224,6 @@
 |       shadow:pseudoId="-webkit-input-placeholder"
 |       "initial placeholder"
 |     <div>
-|       id="inner-editor"
 | <br>
 | "
 "
diff --git a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt
index 0040e2420..c1d8668 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt
@@ -14,7 +14,6 @@
 |       shadow:pseudoId="-webkit-input-suggested"
 |       "suggested value"
 |     <div>
-|       id="inner-editor"
 | "input.value: initial value"
 | "internals.suggestedValue(input): suggested value"
 | "input.selectionStart: 0"
@@ -32,7 +31,6 @@
 |   this.value="new value"
 |   <shadow:root>
 |     <div>
-|       id="inner-editor"
 |       "new value"
 | "input.value: new value"
 | "internals.suggestedValue(input): "
diff --git a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-expected.txt
index 013b480..cd3f7c81 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-expected.txt
@@ -14,7 +14,6 @@
 |       shadow:pseudoId="-webkit-input-suggested"
 |       "suggested value"
 |     <div>
-|       id="inner-editor"
 | <input>
 |   id="month"
 |   type="month"
@@ -76,7 +75,6 @@
 |       shadow:pseudoId="-webkit-input-suggested"
 |       "suggested value"
 |     <div>
-|       id="inner-editor"
 | <select>
 |   id="select"
 |   <option>
diff --git a/third_party/WebKit/LayoutTests/fast/loader/goto-anchor-infinite-layout-expected.txt b/third_party/WebKit/LayoutTests/fast/loader/goto-anchor-infinite-layout-expected.txt
index e976daa7..7fe055b 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/goto-anchor-infinite-layout-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/loader/goto-anchor-infinite-layout-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE WARNING: Failed to decode downloaded font: data:text/plain,
+CONSOLE WARNING: line 21: Failed to decode downloaded font: data:text/plain,
 Test for https://bugs.webkit.org/show_bug.cgi?id=27137 REGRESSION (r44311): Reproducible crash due to infinite recursion into FrameLoader::gotoAnchor() -> FrameView::layout().
 
 The test passes if it does not hang or crash.
diff --git a/third_party/WebKit/LayoutTests/fast/loader/goto-anchor-infinite-layout.html b/third_party/WebKit/LayoutTests/fast/loader/goto-anchor-infinite-layout.html
index 02a2be5..b48baf0 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/goto-anchor-infinite-layout.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/goto-anchor-infinite-layout.html
@@ -15,15 +15,8 @@
     This is the anchor.
 </div>
 <script>
-    if (window.testRunner) {
+    if (window.testRunner)
         testRunner.dumpAsText();
-        testRunner.waitUntilDone();
-    }
 
     document.write(location.href="#anchor");
-
-    window.onload = setTimeout(function() {
-        if (window.testRunner)
-            testRunner.notifyDone();
-    }, 0);
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/parser/object-with-textarea-fallback-expected.txt b/third_party/WebKit/LayoutTests/fast/parser/object-with-textarea-fallback-expected.txt
index 01b6b58b0..d04bc11 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/object-with-textarea-fallback-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/parser/object-with-textarea-fallback-expected.txt
@@ -15,7 +15,6 @@
 |         this.value=""
 |         <shadow:root>
 |           <div>
-|             id="inner-editor"
 |       "
 "
 |       <shadow:root>
diff --git a/third_party/WebKit/LayoutTests/fast/text/custom-font-data-crash2-expected.txt b/third_party/WebKit/LayoutTests/fast/text/custom-font-data-crash2-expected.txt
index 07c1cbc0..1c9ef025 100644
--- a/third_party/WebKit/LayoutTests/fast/text/custom-font-data-crash2-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/text/custom-font-data-crash2-expected.txt
@@ -1,5 +1,5 @@
 CONSOLE WARNING: Failed to decode downloaded font: custom-font-data-crash2.html
 CONSOLE WARNING: OTS parsing error: invalid version tag
-CONSOLE WARNING: Failed to decode downloaded font: custom-font-data-crash2.html
-CONSOLE WARNING: OTS parsing error: invalid version tag
+CONSOLE WARNING: line 15: Failed to decode downloaded font: custom-font-data-crash2.html
+CONSOLE WARNING: line 15: OTS parsing error: invalid version tag
 PASS
diff --git a/third_party/WebKit/LayoutTests/fast/text/custom-font-data-crash2.html b/third_party/WebKit/LayoutTests/fast/text/custom-font-data-crash2.html
index 1103bdd1..15122969 100644
--- a/third_party/WebKit/LayoutTests/fast/text/custom-font-data-crash2.html
+++ b/third_party/WebKit/LayoutTests/fast/text/custom-font-data-crash2.html
@@ -9,12 +9,10 @@
 <div id="y">EFGH</div>
 </body>
 <script>
-window.onload = function() {
+function finish() {
     document.body.innerHTML = "PASS";
-    setTimeout(function() {
-        if (window.testRunner)
-            testRunner.notifyDone();
-    }, 0);
+	if (window.testRunner)
+	    testRunner.notifyDone();
 }
 
 if (window.testRunner) {
@@ -24,9 +22,12 @@
 
 document.designMode = 'on';
 document.execCommand('selectall');
+
+// Let the font load to finish.
+setTimeout("finish()", 50);
 </script>
 <style>
 #y:before { content: "ABCD"; }
 </style>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/fragmentation/column-fill-auto-child-expected.png b/third_party/WebKit/LayoutTests/fragmentation/column-fill-auto-child-expected.png
new file mode 100644
index 0000000..6cda17ad
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/column-fill-auto-child-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fragmentation/column-fill-auto-child-expected.txt b/third_party/WebKit/LayoutTests/fragmentation/column-fill-auto-child-expected.txt
new file mode 100644
index 0000000..597c9aa
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/column-fill-auto-child-expected.txt
@@ -0,0 +1,12 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x316
+  LayoutBlockFlow {HTML} at (0,0) size 800x316
+    LayoutBlockFlow {BODY} at (8,8) size 784x300
+      LayoutBlockFlow {DIV} at (0,0) size 100x100 [bgcolor=#FF0000]
+layer at (8,108) size 784x200
+  LayoutBlockFlow {DIV} at (0,100) size 784x200
+    LayoutMultiColumnSet (anonymous) at (0,0) size 784x200
+layer at (8,108) size 384x0
+  LayoutMultiColumnFlowThread (anonymous) at (0,0) size 384x0
+    LayoutBlockFlow {DIV} at (0,-100) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/fragmentation/column-fill-auto-child.html b/third_party/WebKit/LayoutTests/fragmentation/column-fill-auto-child.html
new file mode 100644
index 0000000..0750b438
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/column-fill-auto-child.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<style>
+    .test { margin-top:-100px; }
+    .test:hover { margin-top:-95px; }
+</style>
+<!-- Passes if there is a green square below, and no red. -->
+<div id=red style="width:100px; height:100px; background:red;"></div>
+<div id=multicol style="columns:2; column-fill:auto; height:200px;">
+    <div class="test" style="width:100px; height:100px; background:green;"></div>
+</div>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/edit/shadow-dom-modify-chardata-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/edit/shadow-dom-modify-chardata-expected.txt
index b88324f..18c4570 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/edit/shadow-dom-modify-chardata-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/edit/shadow-dom-modify-chardata-expected.txt
@@ -7,7 +7,7 @@
 - <div id="container">
     - <input type="text" id="input1">
         - #shadow-root (user-agent)
-              <div id="inner-editor"></div>
+              <div></div>
       </input>
   </div>
 
@@ -16,7 +16,7 @@
 - <div id="container">
     - <input type="text" id="input1">
         - #shadow-root (user-agent)
-              <div id="inner-editor">Bar</div>
+              <div>Bar</div>
       </input>
   </div>
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-search-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-search-expected.txt
index beb329d..75585c0 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-search-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-search-expected.txt
@@ -68,8 +68,7 @@
 Searching UA shadow DOM with setting disabled:
 Nothing found
 Searching UA shadow DOM with setting enabled:
-< d i v   i d = " i n n e r - e d i t o r " > I n p u t V a l < / d i v >
-< d i v   i d = " i n n e r - e d i t o r " > < / d i v >
+< d i v   i d = " u a - s h a d o w - c o n t e n t " > < / d i v >
 
 Running: testSearchShadowHostChildren
 < d i v   i d = " s h a d o w - h o s t - c o n t e n t " > < / d i v >
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-search.html b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-search.html
index 76b7b360..f127afec 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-search.html
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/elements-panel-search.html
@@ -10,6 +10,12 @@
 
     // Avoid matching this function
     shadow.appendChild(template.content.cloneNode(true));
+
+    var uaShadow = internals.createUserAgentShadowRoot(
+        document.querySelector('#ua-shadow-host'));
+    var uaShadowContent = document.createElement('div');
+    uaShadowContent.id = 'ua-shadow-' + 'content';
+    uaShadow.appendChild(uaShadowContent);
 }
 
 function test() {
@@ -228,8 +234,8 @@
       TestRunner.addResult('Searching UA shadow DOM with setting disabled:');
       TestRunner.domModel
           .performSearch(
-              'inne' +
-                  'r-editor',
+              'ua-shadow-' +
+                  'content',
               false)
           .then(searchCallback.bind(this, step2));
 
@@ -237,8 +243,8 @@
         TestRunner.addResult('Searching UA shadow DOM with setting enabled:');
         TestRunner.domModel
             .performSearch(
-                'inne' +
-                    'r-editor',
+                'ua-shadow-' +
+                    'content',
                 true)
             .then(searchCallback.bind(this, next));
       }
@@ -280,6 +286,7 @@
 </div>
 </template>
 <textarea></textarea>
+<div id="ua-shadow-host"></div>
 
 </body>
 </html>
diff --git a/third_party/WebKit/LayoutTests/images/style-access-during-imageChanged-crash-expected.txt b/third_party/WebKit/LayoutTests/images/style-access-during-imageChanged-crash-expected.txt
index e9d9f0b..65cdd87 100644
--- a/third_party/WebKit/LayoutTests/images/style-access-during-imageChanged-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/images/style-access-during-imageChanged-crash-expected.txt
@@ -1,5 +1,5 @@
-CONSOLE WARNING: Failed to decode downloaded font: data:text/plain,1
-CONSOLE WARNING: OTS parsing error: file less than 4 bytes
+CONSOLE WARNING: line 14: Failed to decode downloaded font: data:text/plain,1
+CONSOLE WARNING: line 14: OTS parsing error: file less than 4 bytes
 This test passes if it does not cause an assertion failure or a crash.
 
 A 
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/dom-snapshot/dom-snapshot-getSnapshot-input-value-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/dom-snapshot/dom-snapshot-getSnapshot-input-value-expected.txt
index 643928e2..bf09d5b 100644
--- a/third_party/WebKit/LayoutTests/inspector-protocol/dom-snapshot/dom-snapshot-getSnapshot-input-value-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/dom-snapshot/dom-snapshot-getSnapshot-input-value-expected.txt
@@ -187,12 +187,6 @@
       "childNodeIndexes": [
         15
       ],
-      "attributes": [
-        {
-          "name": "id",
-          "value": "inner-editor"
-        }
-      ],
       "layoutNodeIndex": 7,
       "isClickable": true
     },
@@ -404,12 +398,6 @@
       "childNodeIndexes": [
         30
       ],
-      "attributes": [
-        {
-          "name": "id",
-          "value": "inner-editor"
-        }
-      ],
       "layoutNodeIndex": 22,
       "isClickable": true
     },
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/textarea-set-disabled-expected.txt b/third_party/WebKit/LayoutTests/paint/invalidation/textarea-set-disabled-expected.txt
index 6c80c1c..f4e3e1d 100644
--- a/third_party/WebKit/LayoutTests/paint/invalidation/textarea-set-disabled-expected.txt
+++ b/third_party/WebKit/LayoutTests/paint/invalidation/textarea-set-disabled-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 100, 10],
           "reason": "subtree"
         }
@@ -25,7 +25,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     }
   ]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt
index 535cc5a..44d65dc 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt
@@ -7,12 +7,12 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [399, 11, 1, 16],
           "reason": "caret"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [396, 11, 1, 16],
           "reason": "caret"
         }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/change-text-content-and-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/change-text-content-and-background-color-expected.txt
index fe2c2dc..e80a133 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/change-text-content-and-background-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/change-text-content-and-background-color-expected.txt
@@ -12,7 +12,7 @@
           "reason": "style change"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [30, 30, 200, 24],
           "reason": "geometry"
         },
@@ -30,7 +30,7 @@
       "reason": "style change"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/details-open-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/details-open-repaint-expected.txt
index 7e9166c..cdccc289 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/details-open-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/details-open-repaint-expected.txt
@@ -17,7 +17,7 @@
           "reason": "appeared"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [10, 75, 150, 16],
           "reason": "appeared"
         },
@@ -47,11 +47,11 @@
       "reason": "appeared"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "appeared"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt
index 4877c9a..df44df1 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt
@@ -23,7 +23,7 @@
           "reason": "full"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [3, 4, 60, 16],
           "reason": "subtree"
         },
@@ -41,7 +41,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt
index 4877c9a..df44df1 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt
@@ -23,7 +23,7 @@
           "reason": "full"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [3, 4, 60, 16],
           "reason": "subtree"
         },
@@ -41,7 +41,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/multi-layout-one-frame-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/multi-layout-one-frame-expected.txt
index b6eb602..fbc684b 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/multi-layout-one-frame-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/multi-layout-one-frame-expected.txt
@@ -7,12 +7,12 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [168, 11, 150, 16],
           "reason": "geometry"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [10, 11, 150, 16],
           "reason": "geometry"
         },
@@ -31,7 +31,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
@@ -47,7 +47,7 @@
       "reason": "full"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/search-field-cancel-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/search-field-cancel-expected.txt
index 72fba60..79107f293 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/search-field-cancel-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/search-field-cancel-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 47, 137, 16],
           "reason": "geometry"
         },
@@ -21,7 +21,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
index 89e53b0a..61d000c 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [10, 11, 60, 16],
           "reason": "subtree"
         },
@@ -30,7 +30,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
index 89e53b0a..61d000c 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [10, 11, 60, 16],
           "reason": "subtree"
         },
@@ -30,7 +30,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/subtree-root-skipped-expected.txt
index 5dfa3a2..13986d9 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/subtree-root-skipped-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/subtree-root-skipped-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [10, 11, 150, 16],
           "reason": "geometry"
         },
@@ -26,7 +26,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/textarea-caret-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/textarea-caret-expected.txt
index 854f227..914e5d9 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/textarea-caret-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/textarea-caret-expected.txt
@@ -17,7 +17,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 175, 16],
           "reason": "subtree"
         },
@@ -48,7 +48,7 @@
       "reason": "scroll control"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/change-text-content-and-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/change-text-content-and-background-color-expected.txt
index b6d1bc02..11a08082 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/change-text-content-and-background-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/change-text-content-and-background-color-expected.txt
@@ -12,7 +12,7 @@
           "reason": "style change"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [30, 30, 200, 23],
           "reason": "geometry"
         },
@@ -30,7 +30,7 @@
       "reason": "style change"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/search-field-cancel-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/search-field-cancel-expected.txt
index 9c4a754f..4917a8e5 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/search-field-cancel-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/search-field-cancel-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [12, 45, 113, 13],
           "reason": "geometry"
         },
@@ -21,7 +21,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/subtree-root-skipped-expected.txt
index adc04a4..3932305e8 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/subtree-root-skipped-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/paint/invalidation/subtree-root-skipped-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 125, 13],
           "reason": "geometry"
         },
@@ -26,7 +26,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/paint/invalidation/search-field-cancel-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/paint/invalidation/search-field-cancel-expected.txt
index 1fe2d4c..45b8107 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/paint/invalidation/search-field-cancel-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/paint/invalidation/search-field-cancel-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [12, 45, 113, 13],
           "reason": "geometry"
         },
@@ -21,7 +21,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/paint/invalidation/subtree-root-skipped-expected.txt
index 27ed42a..3266d95c 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/paint/invalidation/subtree-root-skipped-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/paint/invalidation/subtree-root-skipped-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 125, 13],
           "reason": "geometry"
         },
@@ -26,7 +26,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
index 6b66c79..7aad026 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 42, 13],
           "reason": "subtree"
         },
@@ -30,7 +30,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
index 6b66c79..7aad026 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 42, 13],
           "reason": "subtree"
         },
@@ -30,7 +30,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/paint/invalidation/search-field-cancel-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/paint/invalidation/search-field-cancel-expected.txt
index 1fe2d4c..45b8107 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-retina/paint/invalidation/search-field-cancel-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/paint/invalidation/search-field-cancel-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [12, 45, 113, 13],
           "reason": "geometry"
         },
@@ -21,7 +21,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/paint/invalidation/subtree-root-skipped-expected.txt
index 27ed42a..3266d95c 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-retina/paint/invalidation/subtree-root-skipped-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/paint/invalidation/subtree-root-skipped-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 125, 13],
           "reason": "geometry"
         },
@@ -26,7 +26,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt
index 8ad563ef..1ea85e0 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt
@@ -7,12 +7,12 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [407, 11, 2, 13],
           "reason": "caret"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [405, 11, 2, 13],
           "reason": "caret"
         }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-subpixel-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-subpixel-expected.txt
index d62b5c8..24ed7ad 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-subpixel-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-subpixel-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 201, 13],
           "reason": "subtree"
         }
@@ -25,7 +25,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-with-composited-scroll-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-with-composited-scroll-expected.txt
index e55063f0..2f1c958 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-with-composited-scroll-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/caret-with-composited-scroll-expected.txt
@@ -28,7 +28,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [3, 1003, 200, 13],
           "reason": "subtree"
         }
@@ -70,7 +70,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/change-text-content-and-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/change-text-content-and-background-color-expected.txt
index 9d706ca..cf50cab 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/change-text-content-and-background-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/change-text-content-and-background-color-expected.txt
@@ -12,7 +12,7 @@
           "reason": "style change"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [30, 30, 200, 23],
           "reason": "geometry"
         },
@@ -30,7 +30,7 @@
       "reason": "style change"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/details-open-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/details-open-repaint-expected.txt
index 20a8026..ad131fa 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/details-open-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/details-open-repaint-expected.txt
@@ -17,7 +17,7 @@
           "reason": "appeared"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 71, 125, 13],
           "reason": "appeared"
         },
@@ -47,11 +47,11 @@
       "reason": "appeared"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "appeared"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt
index 522d15c..5f8b918 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt
@@ -23,7 +23,7 @@
           "reason": "full"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [6, 6, 35, 13],
           "reason": "subtree"
         },
@@ -41,7 +41,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt
index 522d15c..5f8b918 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt
@@ -23,7 +23,7 @@
           "reason": "full"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [6, 6, 35, 13],
           "reason": "subtree"
         },
@@ -41,7 +41,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/multi-layout-one-frame-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/multi-layout-one-frame-expected.txt
index 92228ac..64a05cd0 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/multi-layout-one-frame-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/multi-layout-one-frame-expected.txt
@@ -7,12 +7,12 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [146, 11, 125, 13],
           "reason": "geometry"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 125, 13],
           "reason": "geometry"
         },
@@ -31,7 +31,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
@@ -47,7 +47,7 @@
       "reason": "full"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/search-field-cancel-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/search-field-cancel-expected.txt
index 6182212..ef42a9d6 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/search-field-cancel-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/search-field-cancel-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [12, 45, 113, 13],
           "reason": "geometry"
         },
@@ -21,7 +21,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
index effa5b5f..1d0e964 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 35, 13],
           "reason": "subtree"
         },
@@ -30,7 +30,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
index effa5b5f..1d0e964 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 35, 13],
           "reason": "subtree"
         },
@@ -30,7 +30,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/subtree-root-skipped-expected.txt
index adc04a4..3932305e8 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/subtree-root-skipped-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/subtree-root-skipped-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 125, 13],
           "reason": "geometry"
         },
@@ -26,7 +26,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/textarea-caret-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/textarea-caret-expected.txt
index ca499bd6..886d059 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/textarea-caret-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/textarea-caret-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 135, 13],
           "reason": "subtree"
         },
@@ -61,7 +61,7 @@
       "reason": "scroll control"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt
index eeb9925..a3f374b 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-invalidation-in-overflow-scroll-expected.txt
@@ -7,12 +7,12 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [381, 11, 1, 16],
           "reason": "caret"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [378, 11, 1, 16],
           "reason": "caret"
         }
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-subpixel-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-subpixel-expected.txt
index 483d75b..b25129b 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-subpixel-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-subpixel-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [10, 11, 201, 16],
           "reason": "subtree"
         }
@@ -25,7 +25,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-with-composited-scroll-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-with-composited-scroll-expected.txt
index a5a1d71e..c54ed73ae 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-with-composited-scroll-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/caret-with-composited-scroll-expected.txt
@@ -28,7 +28,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [3, 1003, 200, 16],
           "reason": "subtree"
         }
@@ -70,7 +70,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/change-text-content-and-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/change-text-content-and-background-color-expected.txt
index 9e3b33e..c51aa722 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/change-text-content-and-background-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/change-text-content-and-background-color-expected.txt
@@ -12,7 +12,7 @@
           "reason": "style change"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [30, 30, 200, 24],
           "reason": "geometry"
         },
@@ -30,7 +30,7 @@
       "reason": "style change"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/details-open-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/details-open-repaint-expected.txt
index e396dd7..adeadf8e 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/details-open-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/details-open-repaint-expected.txt
@@ -17,7 +17,7 @@
           "reason": "appeared"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [10, 75, 169, 16],
           "reason": "appeared"
         },
@@ -47,11 +47,11 @@
       "reason": "appeared"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "appeared"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt
index c77aa72..5a698ee 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/invalidate-caret-in-composited-scrolling-container-expected.txt
@@ -23,7 +23,7 @@
           "reason": "full"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [3, 4, 64, 16],
           "reason": "subtree"
         },
@@ -41,7 +41,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt
index c77aa72..5a698ee 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container-expected.txt
@@ -23,7 +23,7 @@
           "reason": "full"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [3, 4, 64, 16],
           "reason": "subtree"
         },
@@ -41,7 +41,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/multi-layout-one-frame-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/multi-layout-one-frame-expected.txt
index 7e2fa38..3b6c78c2 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/multi-layout-one-frame-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/multi-layout-one-frame-expected.txt
@@ -7,12 +7,12 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [187, 11, 169, 16],
           "reason": "geometry"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [10, 11, 169, 16],
           "reason": "geometry"
         },
@@ -31,7 +31,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
@@ -47,7 +47,7 @@
       "reason": "full"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/search-field-cancel-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/search-field-cancel-expected.txt
index 7670db5..6a6adf7 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/search-field-cancel-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/search-field-cancel-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 47, 156, 16],
           "reason": "geometry"
         },
@@ -21,7 +21,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
index d3d5553..a3d16f8 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [10, 11, 64, 16],
           "reason": "subtree"
         },
@@ -30,7 +30,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
index d3d5553..a3d16f8 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
@@ -12,7 +12,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [10, 11, 64, 16],
           "reason": "subtree"
         },
@@ -30,7 +30,7 @@
       "reason": "subtree"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/subtree-root-skipped-expected.txt
index d6febf2..cea9c1e 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/subtree-root-skipped-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/subtree-root-skipped-expected.txt
@@ -7,7 +7,7 @@
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [10, 11, 169, 16],
           "reason": "geometry"
         },
@@ -26,7 +26,7 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "geometry"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/textarea-caret-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/textarea-caret-expected.txt
index 273996d..db5bbde1 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/textarea-caret-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/textarea-caret-expected.txt
@@ -17,7 +17,7 @@
           "reason": "subtree"
         },
         {
-          "object": "LayoutBlockFlow DIV id='inner-editor'",
+          "object": "LayoutBlockFlow DIV",
           "rect": [11, 11, 175, 16],
           "reason": "subtree"
         },
@@ -48,7 +48,7 @@
       "reason": "scroll control"
     },
     {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "object": "LayoutBlockFlow DIV",
       "reason": "subtree"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/suggested-value-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/suggested-value-expected.txt
index c27e12f..9f1eb3c 100644
--- a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/suggested-value-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/suggested-value-expected.txt
@@ -14,7 +14,6 @@
 |       shadow:pseudoId="-webkit-input-suggested"
 |       "suggested value"
 |     <div>
-|       id="inner-editor"
 |       "suggested value"
 | <input>
 |   id="month"
@@ -75,7 +74,6 @@
 |       style="display: none !important;"
 |       shadow:pseudoId="-webkit-input-suggested"
 |     <div>
-|       id="inner-editor"
 | <select>
 |   id="select"
 |   <option>
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/OWNERS b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/OWNERS
similarity index 100%
rename from third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/OWNERS
rename to third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/OWNERS
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/README.txt b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/README.txt
similarity index 100%
rename from third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/README.txt
rename to third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/README.txt
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-animator-animate-expected.txt b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-animator-animate-expected.txt
similarity index 100%
rename from third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-animator-animate-expected.txt
rename to third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-animator-animate-expected.txt
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-animator-animate.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-animator-animate.html
similarity index 100%
rename from third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-animator-animate.html
rename to third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-animator-animate.html
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-animator-registration-expected.txt b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-animator-registration-expected.txt
similarity index 100%
rename from third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-animator-registration-expected.txt
rename to third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-animator-registration-expected.txt
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-animator-registration.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-animator-registration.html
similarity index 100%
rename from third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-animator-registration.html
rename to third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-animator-registration.html
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-visual-update-expected.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-visual-update-expected.html
similarity index 100%
rename from third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-visual-update-expected.html
rename to third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-visual-update-expected.html
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-visual-update.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-visual-update.html
similarity index 100%
rename from third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/animation-worklet-visual-update.html
rename to third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/animation-worklet-visual-update.html
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/resources/animation-worklet-tests.js b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/resources/animation-worklet-tests.js
similarity index 100%
rename from third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/resources/animation-worklet-tests.js
rename to third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/resources/animation-worklet-tests.js
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/resources/visual-update.js b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/resources/visual-update.js
similarity index 100%
rename from third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/resources/visual-update.js
rename to third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/resources/visual-update.js
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/visual-update-expected.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/visual-update-expected.html
new file mode 100644
index 0000000..50c1a0c7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/visual-update-expected.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<!--
+Tests that a change from the worker produces a visual update.
+-->
+<style>
+#box {
+  width: 100px;
+  height: 100px;
+  /* A composited DIV background is clipped differently from a non-composited
+     one. This causes the box to be composited in both cases
+     TODO(majidvp): fix this mismatch between CC and blink rendering
+  */
+  backface-visibility: hidden;
+}
+
+#covered, #green {
+  width: 85px;
+  height: 85px;
+}
+
+#box, #covered {
+  background-color: #ff8080;
+  overflow: auto;
+}
+
+#green {
+  position: relative;
+  left: 100px;
+  top: 100px;
+  background-color: #00ff00;
+}
+
+</style>
+
+<div id="box">
+    <div id="green"></div>
+</div>
+<div id="covered"></div>
+
+<script>
+var box = document.getElementById('box');
+box.style.transform = 'translate(0, 100px)';
+box.style.opacity = 0.5;
+box.scrollLeft = 100;
+box.scrollTop = 100;
+</script>
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/worklet-animation-creation.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/worklet-animation-creation.html
similarity index 100%
rename from third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/worklet-animation-creation.html
rename to third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/worklet-animation-creation.html
diff --git a/third_party/WebKit/LayoutTests/vr/latest/getDevicePose_oneframeupdate.html b/third_party/WebKit/LayoutTests/vr/latest/getDevicePose_oneframeupdate.html
new file mode 100644
index 0000000..997b77f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/vr/latest/getDevicePose_oneframeupdate.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<script src="../resources/fake-vr-displays.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/device/vr/vr_service.mojom.js"></script>
+<script src="../resources/mock-vr-service.js"></script>
+<script src="../resources/test-constants.js"></script>
+<script>
+let fakeDisplays = fakeVRDisplays();
+
+vr_session_test( (t, session, mockService) => {
+  session.requestFrameOfReference("eyeLevel").then((frameOfRef) => {
+    let expected_pose = VALID_POSE;
+    let counter = 0;
+
+    function onFrame(vrFrame) {
+      session.requestFrame(onFrame);
+      if (counter == 0) {
+        t.step( () => {
+          assert_equals(vrFrame.getDevicePose(frameOfRef), null);
+        }, "Expecting to not get a pose since none has been supplied");
+        mockService.mockVRDisplays_[0].setPose(expected_pose);
+        t.step( () => {
+          assert_equals(vrFrame.getDevicePose(frameOfRef), null);
+        }, "Does not update pose within the same frame");
+      } else {
+        t.step( () => {
+          let pose = vrFrame.getDevicePose(frameOfRef);
+          assert_not_equals(pose, null);
+
+          let poseMatrix = pose.poseModelMatrix;
+          assert_not_equals(poseMatrix, null);
+
+          let expectedMatrix = matrixFrom11Pose(expected_pose);
+          assert_matrices_approx_equal(poseMatrix, expectedMatrix);
+        }, "Pose was updated in the next frame");
+        t.done();
+      }
+      counter++;
+    }
+
+    session.requestFrame(onFrame);
+  });
+}, fakeDisplays["Pixel"], { exclusive: true },
+"VRPresentationFrame getDevicePose updates on the next frame");
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/vr/resources/mock-vr-service.js b/third_party/WebKit/LayoutTests/vr/resources/mock-vr-service.js
index 3743f928..64473ae 100644
--- a/third_party/WebKit/LayoutTests/vr/resources/mock-vr-service.js
+++ b/third_party/WebKit/LayoutTests/vr/resources/mock-vr-service.js
@@ -201,3 +201,58 @@
     t.done();
   });
 }
+
+// Gets the corresponding transform matrix for a WebVR 1.1 pose
+function matrixFrom11Pose(pose) {
+  let x = pose.orientation[0];
+  let y = pose.orientation[1];
+  let z = pose.orientation[2];
+  let w = pose.orientation[3];
+  let x2 = x + x;
+  let y2 = y + y;
+  let z2 = z + z;
+  let xx = x * x2;
+  let xy = x * y2;
+  let xz = x * z2;
+  let yy = y * y2;
+  let yz = y * z2;
+  let zz = z * z2;
+  let wx = w * x2;
+  let wy = w * y2;
+  let wz = w * z2;
+
+  let out = new Float32Array(16);
+  out[0] = 1 - (yy + zz);
+  out[1] = xy + wz;
+  out[2] = xz - wy;
+  out[3] = 0;
+  out[4] = xy - wz;
+  out[5] = 1 - (xx + zz);
+  out[6] = yz + wx;
+  out[7] = 0;
+  out[8] = xz + wy;
+  out[9] = yz - wx;
+  out[10] = 1 - (xx + yy);
+  out[11] = 0;
+  out[12] = pose.position[0];
+  out[13] = pose.position[1];
+  out[14] = pose.position[2];
+  out[15] = 1;
+
+  return out;
+}
+
+function assert_matrices_approx_equal(matA, matB, epsilon = FLOAT_EPSILON) {
+  if (matA == null && matB == null) {
+    return;
+  }
+
+  assert_not_equals(matA, null);
+  assert_not_equals(matB, null);
+
+  assert_equals(matA.length, 16);
+  assert_equals(matB.length, 16);
+  for (let i = 0; i < 16; ++i) {
+    assert_approx_equals(matA[i], matB[i], epsilon);
+  }
+}
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 5736ca6..143bfa0 100644
--- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
@@ -7163,6 +7163,10 @@
     attribute @@toStringTag
     getter device
     method constructor
+interface VRDevicePose
+    attribute @@toStringTag
+    getter poseModelMatrix
+    method constructor
 interface VRDisplay : EventTarget
     attribute @@toStringTag
     getter capabilities
@@ -7223,6 +7227,11 @@
     getter orientation
     getter position
     method constructor
+interface VRPresentationFrame
+    attribute @@toStringTag
+    getter session
+    method constructor
+    method getDevicePose
 interface VRSession : EventTarget
     attribute @@toStringTag
     getter depthFar
diff --git a/third_party/WebKit/Source/bindings/core/v8/NativeValueTraits.h b/third_party/WebKit/Source/bindings/core/v8/NativeValueTraits.h
index f7b29954..f8bc5a34 100644
--- a/third_party/WebKit/Source/bindings/core/v8/NativeValueTraits.h
+++ b/third_party/WebKit/Source/bindings/core/v8/NativeValueTraits.h
@@ -57,7 +57,7 @@
 // which T actually represents the final C++ type that a JavaScript value
 // should be converted to. Introducing new specializations of this kind is
 // discouraged.
-template <typename T>
+template <typename T, typename SFINAEHelper = void>
 struct NativeValueTraits : public NativeValueTraitsBase<T> {
   // This declaration serves only as a blueprint for specializations: the
   // return type can change, but all specializations are expected to provide a
diff --git a/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImpl.h b/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImpl.h
index c0f27809e..7aa121c 100644
--- a/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImpl.h
+++ b/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImpl.h
@@ -13,6 +13,8 @@
 
 namespace blink {
 
+class CallbackFunctionBase;
+
 // Boolean
 template <>
 struct CORE_EXPORT NativeValueTraits<IDLBoolean>
@@ -528,6 +530,27 @@
   }
 };
 
+// Callback functions
+template <typename T>
+struct NativeValueTraits<
+    T,
+    typename std::enable_if<
+        std::is_base_of<CallbackFunctionBase, T>::value>::type>
+    : public NativeValueTraitsBase<T> {
+  static T* NativeValue(v8::Isolate* isolate,
+                        v8::Local<v8::Value> value,
+                        ExceptionState& exception_state) {
+    // Not implemented because of no use case so far.
+    CHECK(false)
+        // Emit a message so that NativeValueTraitsImplTest.IDLCallbackFunction
+        // test can confirm that it's hitting this specific failure. i.e.
+        // the template resolution is working as expected.
+        << "NativeValueTraits<CallbackFunctionBase>::NativeValue "
+        << "is not yet implemented.";
+    return nullptr;
+  }
+};
+
 }  // namespace blink
 
 #endif  // NativeValueTraitsImpl_h
diff --git a/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImplTest.cpp b/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImplTest.cpp
index 994654d..0bf153f 100644
--- a/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImplTest.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImplTest.cpp
@@ -5,6 +5,7 @@
 #include "bindings/core/v8/NativeValueTraitsImpl.h"
 
 #include <utility>
+
 #include "bindings/core/v8/ExceptionState.h"
 #include "bindings/core/v8/IDLTypes.h"
 #include "bindings/core/v8/ToV8ForCore.h"
@@ -12,6 +13,7 @@
 #include "bindings/core/v8/V8Internals.h"
 #include "bindings/core/v8/v8_test_sequence_callback.h"
 #include "platform/wtf/Vector.h"
+#include "testing/gtest/include/gtest/gtest-death-test.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace blink {
@@ -20,27 +22,24 @@
 
 TEST(NativeValueTraitsImplTest, IDLInterface) {
   V8TestingScope scope;
-  {
-    DummyExceptionStateForTesting exception_state;
-    Internals* internals = NativeValueTraits<Internals>::NativeValue(
-        scope.GetIsolate(), v8::Number::New(scope.GetIsolate(), 42),
-        exception_state);
-    EXPECT_TRUE(exception_state.HadException());
-    EXPECT_EQ("Failed to convert value to 'Internals'.",
-              exception_state.Message());
-    EXPECT_EQ(nullptr, internals);
-  }
-  {
-    DummyExceptionStateForTesting exception_state;
-    V8TestSequenceCallback* callback_function =
-        NativeValueTraits<V8TestSequenceCallback>::NativeValue(
-            scope.GetIsolate(), v8::Undefined(scope.GetIsolate()),
-            exception_state);
-    EXPECT_TRUE(exception_state.HadException());
-    EXPECT_EQ("Failed to convert value to 'TestSequenceCallback'.",
-              exception_state.Message());
-    EXPECT_EQ(nullptr, callback_function);
-  }
+  DummyExceptionStateForTesting exception_state;
+  Internals* internals = NativeValueTraits<Internals>::NativeValue(
+      scope.GetIsolate(), v8::Number::New(scope.GetIsolate(), 42),
+      exception_state);
+  EXPECT_TRUE(exception_state.HadException());
+  EXPECT_EQ("Failed to convert value to 'Internals'.",
+            exception_state.Message());
+  EXPECT_EQ(nullptr, internals);
+}
+
+TEST(NativeValueTraitsImplTest, IDLCallbackFunction) {
+  V8TestingScope scope;
+  DummyExceptionStateForTesting exception_state;
+  v8::Local<v8::Function> function =
+      v8::Function::New(scope.GetContext(), nullptr).ToLocalChecked();
+  ASSERT_DEATH(NativeValueTraits<V8TestSequenceCallback>::NativeValue(
+                   scope.GetIsolate(), function, exception_state),
+               "NativeValueTraits<CallbackFunctionBase>::NativeValue");
 }
 
 void ThrowException(v8::Local<v8::Name>,
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp b/third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp
index 2e02df96..baf6ea0 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp
@@ -566,11 +566,11 @@
                                        cacheability_if_no_handler);
 
   if (!*TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(kTraceEventCategoryGroup))
-    return compile_fn(isolate, code, origin, nullptr);
+    return std::move(compile_fn).Run(isolate, code, origin, nullptr);
 
   InspectorCompileScriptEvent::V8CacheResult cache_result;
   v8::MaybeLocal<v8::Script> script =
-      compile_fn(isolate, code, origin, &cache_result);
+      std::move(compile_fn).Run(isolate, code, origin, &cache_result);
   TRACE_EVENT_END1(
       kTraceEventCategoryGroup, "v8.compile", "data",
       InspectorCompileScriptEvent::Data(file_name, script_start_position,
diff --git a/third_party/WebKit/Source/bindings/modules/v8/serialization/V8ScriptValueSerializerForModulesTest.cpp b/third_party/WebKit/Source/bindings/modules/v8/serialization/V8ScriptValueSerializerForModulesTest.cpp
index 571af85..176ef28 100644
--- a/third_party/WebKit/Source/bindings/modules/v8/serialization/V8ScriptValueSerializerForModulesTest.cpp
+++ b/third_party/WebKit/Source/bindings/modules/v8/serialization/V8ScriptValueSerializerForModulesTest.cpp
@@ -253,15 +253,15 @@
 class WebCryptoResultAdapter : public ScriptFunction {
  private:
   WebCryptoResultAdapter(ScriptState* script_state,
-                         WTF::Function<void(T)> function)
+                         WTF::RepeatingFunction<void(T)> function)
       : ScriptFunction(script_state), function_(std::move(function)) {}
 
   ScriptValue Call(ScriptValue value) final {
-    function_(ConvertCryptoResult<T>(value));
+    function_.Run(ConvertCryptoResult<T>(value));
     return ScriptValue::From(GetScriptState(), ToV8UndefinedGenerator());
   }
 
-  WTF::Function<void(T)> function_;
+  WTF::RepeatingFunction<void(T)> function_;
   template <typename U>
   friend WebCryptoResult ToWebCryptoResult(ScriptState*,
                                            WTF::Function<void(U)>);
diff --git a/third_party/WebKit/Source/bindings/templates/callback_function.cpp.tmpl b/third_party/WebKit/Source/bindings/templates/callback_function.cpp.tmpl
index 359d8f1..99d2f278 100644
--- a/third_party/WebKit/Source/bindings/templates/callback_function.cpp.tmpl
+++ b/third_party/WebKit/Source/bindings/templates/callback_function.cpp.tmpl
@@ -83,15 +83,6 @@
   return true;
 }
 
-{{cpp_class}}* NativeValueTraits<{{cpp_class}}>::NativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState) {
-  {{cpp_class}}* nativeValue = {{cpp_class}}::Create(ScriptState::Current(isolate), value);
-  if (!nativeValue) {
-    exceptionState.ThrowTypeError(ExceptionMessages::FailedToConvertJSValue(
-        "{{callback_function_name}}"));
-  }
-  return nativeValue;
-}
-
 }  // namespace blink
 
 {% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/templates/callback_function.h.tmpl b/third_party/WebKit/Source/bindings/templates/callback_function.h.tmpl
index a5b0259..d5be9fc 100644
--- a/third_party/WebKit/Source/bindings/templates/callback_function.h.tmpl
+++ b/third_party/WebKit/Source/bindings/templates/callback_function.h.tmpl
@@ -27,11 +27,6 @@
   {{cpp_class}}(ScriptState*, v8::Local<v8::Function>);
 };
 
-template <>
-struct NativeValueTraits<{{cpp_class}}> : public NativeValueTraitsBase<{{cpp_class}}> {
-  {{exported}}static {{cpp_class}}* NativeValue(v8::Isolate*, v8::Local<v8::Value>, ExceptionState&);
-};
-
 }  // namespace blink
 
 #endif  // {{cpp_class}}_h
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.cc b/third_party/WebKit/Source/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.cc
index f7791dc..aff03e1 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.cc
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.cc
@@ -76,13 +76,4 @@
   return true;
 }
 
-V8AnyCallbackFunctionOptionalAnyArg* NativeValueTraits<V8AnyCallbackFunctionOptionalAnyArg>::NativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState) {
-  V8AnyCallbackFunctionOptionalAnyArg* nativeValue = V8AnyCallbackFunctionOptionalAnyArg::Create(ScriptState::Current(isolate), value);
-  if (!nativeValue) {
-    exceptionState.ThrowTypeError(ExceptionMessages::FailedToConvertJSValue(
-        "AnyCallbackFunctionOptionalAnyArg"));
-  }
-  return nativeValue;
-}
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.h b/third_party/WebKit/Source/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.h
index c1c1c081..290f642 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.h
@@ -34,11 +34,6 @@
   V8AnyCallbackFunctionOptionalAnyArg(ScriptState*, v8::Local<v8::Function>);
 };
 
-template <>
-struct NativeValueTraits<V8AnyCallbackFunctionOptionalAnyArg> : public NativeValueTraitsBase<V8AnyCallbackFunctionOptionalAnyArg> {
-  CORE_EXPORT static V8AnyCallbackFunctionOptionalAnyArg* NativeValue(v8::Isolate*, v8::Local<v8::Value>, ExceptionState&);
-};
-
 }  // namespace blink
 
 #endif  // V8AnyCallbackFunctionOptionalAnyArg_h
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_long_callback_function.cc b/third_party/WebKit/Source/bindings/tests/results/core/v8_long_callback_function.cc
index 0192299..de61e80 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_long_callback_function.cc
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_long_callback_function.cc
@@ -79,13 +79,4 @@
   return true;
 }
 
-V8LongCallbackFunction* NativeValueTraits<V8LongCallbackFunction>::NativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState) {
-  V8LongCallbackFunction* nativeValue = V8LongCallbackFunction::Create(ScriptState::Current(isolate), value);
-  if (!nativeValue) {
-    exceptionState.ThrowTypeError(ExceptionMessages::FailedToConvertJSValue(
-        "LongCallbackFunction"));
-  }
-  return nativeValue;
-}
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_long_callback_function.h b/third_party/WebKit/Source/bindings/tests/results/core/v8_long_callback_function.h
index 79159ca..1841633 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_long_callback_function.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_long_callback_function.h
@@ -34,11 +34,6 @@
   V8LongCallbackFunction(ScriptState*, v8::Local<v8::Function>);
 };
 
-template <>
-struct NativeValueTraits<V8LongCallbackFunction> : public NativeValueTraitsBase<V8LongCallbackFunction> {
-  CORE_EXPORT static V8LongCallbackFunction* NativeValue(v8::Isolate*, v8::Local<v8::Value>, ExceptionState&);
-};
-
 }  // namespace blink
 
 #endif  // V8LongCallbackFunction_h
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.cc b/third_party/WebKit/Source/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.cc
index f893c26a..72e51ed 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.cc
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.cc
@@ -78,13 +78,4 @@
   return true;
 }
 
-V8StringSequenceCallbackFunctionLongSequenceArg* NativeValueTraits<V8StringSequenceCallbackFunctionLongSequenceArg>::NativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState) {
-  V8StringSequenceCallbackFunctionLongSequenceArg* nativeValue = V8StringSequenceCallbackFunctionLongSequenceArg::Create(ScriptState::Current(isolate), value);
-  if (!nativeValue) {
-    exceptionState.ThrowTypeError(ExceptionMessages::FailedToConvertJSValue(
-        "StringSequenceCallbackFunctionLongSequenceArg"));
-  }
-  return nativeValue;
-}
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.h b/third_party/WebKit/Source/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.h
index 34f6d1dc..58f21492 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.h
@@ -34,11 +34,6 @@
   V8StringSequenceCallbackFunctionLongSequenceArg(ScriptState*, v8::Local<v8::Function>);
 };
 
-template <>
-struct NativeValueTraits<V8StringSequenceCallbackFunctionLongSequenceArg> : public NativeValueTraitsBase<V8StringSequenceCallbackFunctionLongSequenceArg> {
-  CORE_EXPORT static V8StringSequenceCallbackFunctionLongSequenceArg* NativeValue(v8::Isolate*, v8::Local<v8::Value>, ExceptionState&);
-};
-
 }  // namespace blink
 
 #endif  // V8StringSequenceCallbackFunctionLongSequenceArg_h
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function.cc b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function.cc
index 79ba0072..8183553 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function.cc
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function.cc
@@ -72,13 +72,4 @@
   return true;
 }
 
-V8VoidCallbackFunction* NativeValueTraits<V8VoidCallbackFunction>::NativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState) {
-  V8VoidCallbackFunction* nativeValue = V8VoidCallbackFunction::Create(ScriptState::Current(isolate), value);
-  if (!nativeValue) {
-    exceptionState.ThrowTypeError(ExceptionMessages::FailedToConvertJSValue(
-        "VoidCallbackFunction"));
-  }
-  return nativeValue;
-}
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function.h b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function.h
index 08ad5fc..7c16372 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function.h
@@ -34,11 +34,6 @@
   V8VoidCallbackFunction(ScriptState*, v8::Local<v8::Function>);
 };
 
-template <>
-struct NativeValueTraits<V8VoidCallbackFunction> : public NativeValueTraitsBase<V8VoidCallbackFunction> {
-  CORE_EXPORT static V8VoidCallbackFunction* NativeValue(v8::Isolate*, v8::Local<v8::Value>, ExceptionState&);
-};
-
 }  // namespace blink
 
 #endif  // V8VoidCallbackFunction_h
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.cc b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.cc
index b692756..9a1e9752 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.cc
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.cc
@@ -74,13 +74,4 @@
   return true;
 }
 
-V8VoidCallbackFunctionDictionaryArg* NativeValueTraits<V8VoidCallbackFunctionDictionaryArg>::NativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState) {
-  V8VoidCallbackFunctionDictionaryArg* nativeValue = V8VoidCallbackFunctionDictionaryArg::Create(ScriptState::Current(isolate), value);
-  if (!nativeValue) {
-    exceptionState.ThrowTypeError(ExceptionMessages::FailedToConvertJSValue(
-        "VoidCallbackFunctionDictionaryArg"));
-  }
-  return nativeValue;
-}
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.h b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.h
index d8097505..671e119 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.h
@@ -36,11 +36,6 @@
   V8VoidCallbackFunctionDictionaryArg(ScriptState*, v8::Local<v8::Function>);
 };
 
-template <>
-struct NativeValueTraits<V8VoidCallbackFunctionDictionaryArg> : public NativeValueTraitsBase<V8VoidCallbackFunctionDictionaryArg> {
-  CORE_EXPORT static V8VoidCallbackFunctionDictionaryArg* NativeValue(v8::Isolate*, v8::Local<v8::Value>, ExceptionState&);
-};
-
 }  // namespace blink
 
 #endif  // V8VoidCallbackFunctionDictionaryArg_h
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_enum_arg.cc b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_enum_arg.cc
index 4121a1cd..ec28670e 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_enum_arg.cc
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_enum_arg.cc
@@ -85,13 +85,4 @@
   return true;
 }
 
-V8VoidCallbackFunctionEnumArg* NativeValueTraits<V8VoidCallbackFunctionEnumArg>::NativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState) {
-  V8VoidCallbackFunctionEnumArg* nativeValue = V8VoidCallbackFunctionEnumArg::Create(ScriptState::Current(isolate), value);
-  if (!nativeValue) {
-    exceptionState.ThrowTypeError(ExceptionMessages::FailedToConvertJSValue(
-        "VoidCallbackFunctionEnumArg"));
-  }
-  return nativeValue;
-}
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_enum_arg.h b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_enum_arg.h
index a495dc5..7e78258 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_enum_arg.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_enum_arg.h
@@ -34,11 +34,6 @@
   V8VoidCallbackFunctionEnumArg(ScriptState*, v8::Local<v8::Function>);
 };
 
-template <>
-struct NativeValueTraits<V8VoidCallbackFunctionEnumArg> : public NativeValueTraitsBase<V8VoidCallbackFunctionEnumArg> {
-  CORE_EXPORT static V8VoidCallbackFunctionEnumArg* NativeValue(v8::Isolate*, v8::Local<v8::Value>, ExceptionState&);
-};
-
 }  // namespace blink
 
 #endif  // V8VoidCallbackFunctionEnumArg_h
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_interface_arg.cc b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_interface_arg.cc
index 10e9a16..682391f 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_interface_arg.cc
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_interface_arg.cc
@@ -74,13 +74,4 @@
   return true;
 }
 
-V8VoidCallbackFunctionInterfaceArg* NativeValueTraits<V8VoidCallbackFunctionInterfaceArg>::NativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState) {
-  V8VoidCallbackFunctionInterfaceArg* nativeValue = V8VoidCallbackFunctionInterfaceArg::Create(ScriptState::Current(isolate), value);
-  if (!nativeValue) {
-    exceptionState.ThrowTypeError(ExceptionMessages::FailedToConvertJSValue(
-        "VoidCallbackFunctionInterfaceArg"));
-  }
-  return nativeValue;
-}
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_interface_arg.h b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_interface_arg.h
index 3c91da09..5bff44c 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_interface_arg.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_interface_arg.h
@@ -36,11 +36,6 @@
   V8VoidCallbackFunctionInterfaceArg(ScriptState*, v8::Local<v8::Function>);
 };
 
-template <>
-struct NativeValueTraits<V8VoidCallbackFunctionInterfaceArg> : public NativeValueTraitsBase<V8VoidCallbackFunctionInterfaceArg> {
-  CORE_EXPORT static V8VoidCallbackFunctionInterfaceArg* NativeValue(v8::Isolate*, v8::Local<v8::Value>, ExceptionState&);
-};
-
 }  // namespace blink
 
 #endif  // V8VoidCallbackFunctionInterfaceArg_h
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.cc b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.cc
index a2af471..9015c1fc 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.cc
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.cc
@@ -75,13 +75,4 @@
   return true;
 }
 
-V8VoidCallbackFunctionTestInterfaceSequenceArg* NativeValueTraits<V8VoidCallbackFunctionTestInterfaceSequenceArg>::NativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState) {
-  V8VoidCallbackFunctionTestInterfaceSequenceArg* nativeValue = V8VoidCallbackFunctionTestInterfaceSequenceArg::Create(ScriptState::Current(isolate), value);
-  if (!nativeValue) {
-    exceptionState.ThrowTypeError(ExceptionMessages::FailedToConvertJSValue(
-        "VoidCallbackFunctionTestInterfaceSequenceArg"));
-  }
-  return nativeValue;
-}
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.h b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.h
index 922cbd9..bb8b5b9e 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.h
@@ -36,11 +36,6 @@
   V8VoidCallbackFunctionTestInterfaceSequenceArg(ScriptState*, v8::Local<v8::Function>);
 };
 
-template <>
-struct NativeValueTraits<V8VoidCallbackFunctionTestInterfaceSequenceArg> : public NativeValueTraitsBase<V8VoidCallbackFunctionTestInterfaceSequenceArg> {
-  CORE_EXPORT static V8VoidCallbackFunctionTestInterfaceSequenceArg* NativeValue(v8::Isolate*, v8::Local<v8::Value>, ExceptionState&);
-};
-
 }  // namespace blink
 
 #endif  // V8VoidCallbackFunctionTestInterfaceSequenceArg_h
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_typedef.cc b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_typedef.cc
index 9096a47..4e50170a 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_typedef.cc
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_typedef.cc
@@ -74,13 +74,4 @@
   return true;
 }
 
-V8VoidCallbackFunctionTypedef* NativeValueTraits<V8VoidCallbackFunctionTypedef>::NativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState) {
-  V8VoidCallbackFunctionTypedef* nativeValue = V8VoidCallbackFunctionTypedef::Create(ScriptState::Current(isolate), value);
-  if (!nativeValue) {
-    exceptionState.ThrowTypeError(ExceptionMessages::FailedToConvertJSValue(
-        "VoidCallbackFunctionTypedef"));
-  }
-  return nativeValue;
-}
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_typedef.h b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_typedef.h
index c19a728..3e77915 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_typedef.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/v8_void_callback_function_typedef.h
@@ -34,11 +34,6 @@
   V8VoidCallbackFunctionTypedef(ScriptState*, v8::Local<v8::Function>);
 };
 
-template <>
-struct NativeValueTraits<V8VoidCallbackFunctionTypedef> : public NativeValueTraitsBase<V8VoidCallbackFunctionTypedef> {
-  CORE_EXPORT static V8VoidCallbackFunctionTypedef* NativeValue(v8::Isolate*, v8::Local<v8::Value>, ExceptionState&);
-};
-
 }  // namespace blink
 
 #endif  // V8VoidCallbackFunctionTypedef_h
diff --git a/third_party/WebKit/Source/bindings/tests/results/modules/v8_void_callback_function_modules.cc b/third_party/WebKit/Source/bindings/tests/results/modules/v8_void_callback_function_modules.cc
index 7133877..f8197dc 100644
--- a/third_party/WebKit/Source/bindings/tests/results/modules/v8_void_callback_function_modules.cc
+++ b/third_party/WebKit/Source/bindings/tests/results/modules/v8_void_callback_function_modules.cc
@@ -72,13 +72,4 @@
   return true;
 }
 
-V8VoidCallbackFunctionModules* NativeValueTraits<V8VoidCallbackFunctionModules>::NativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState) {
-  V8VoidCallbackFunctionModules* nativeValue = V8VoidCallbackFunctionModules::Create(ScriptState::Current(isolate), value);
-  if (!nativeValue) {
-    exceptionState.ThrowTypeError(ExceptionMessages::FailedToConvertJSValue(
-        "VoidCallbackFunctionModules"));
-  }
-  return nativeValue;
-}
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/modules/v8_void_callback_function_modules.h b/third_party/WebKit/Source/bindings/tests/results/modules/v8_void_callback_function_modules.h
index 1b6de8b..0bc0abca 100644
--- a/third_party/WebKit/Source/bindings/tests/results/modules/v8_void_callback_function_modules.h
+++ b/third_party/WebKit/Source/bindings/tests/results/modules/v8_void_callback_function_modules.h
@@ -34,11 +34,6 @@
   V8VoidCallbackFunctionModules(ScriptState*, v8::Local<v8::Function>);
 };
 
-template <>
-struct NativeValueTraits<V8VoidCallbackFunctionModules> : public NativeValueTraitsBase<V8VoidCallbackFunctionModules> {
-  MODULES_EXPORT static V8VoidCallbackFunctionModules* NativeValue(v8::Isolate*, v8::Local<v8::Value>, ExceptionState&);
-};
-
 }  // namespace blink
 
 #endif  // V8VoidCallbackFunctionModules_h
diff --git a/third_party/WebKit/Source/core/BUILD.gn b/third_party/WebKit/Source/core/BUILD.gn
index 2fa961e..fd72688 100644
--- a/third_party/WebKit/Source/core/BUILD.gn
+++ b/third_party/WebKit/Source/core/BUILD.gn
@@ -1603,7 +1603,6 @@
     "layout/TextAutosizerTest.cpp",
     "layout/VisualRectMappingTest.cpp",
     "layout/api/SelectionStateTest.cpp",
-    "layout/line/InlineBoxTest.cpp",
     "layout/line/InlineTextBoxTest.cpp",
     "layout/ng/NGInlineLayoutTest.cpp",
     "layout/ng/geometry/ng_box_strut_test.cc",
diff --git a/third_party/WebKit/Source/core/dom/ClassicPendingScript.cpp b/third_party/WebKit/Source/core/dom/ClassicPendingScript.cpp
index 3ca5b76..bae029c 100644
--- a/third_party/WebKit/Source/core/dom/ClassicPendingScript.cpp
+++ b/third_party/WebKit/Source/core/dom/ClassicPendingScript.cpp
@@ -294,7 +294,7 @@
       // start streaming by work done within the callback. (crbug.com/754360)
       WTF::Closure done = std::move(streamer_done_);
       if (done)
-        done();
+        std::move(done).Run();
       is_currently_streaming_ = false;
     }
   }
diff --git a/third_party/WebKit/Source/core/dom/ElementVisibilityObserver.cpp b/third_party/WebKit/Source/core/dom/ElementVisibilityObserver.cpp
index b440e78..cd466cf7 100644
--- a/third_party/WebKit/Source/core/dom/ElementVisibilityObserver.cpp
+++ b/third_party/WebKit/Source/core/dom/ElementVisibilityObserver.cpp
@@ -54,7 +54,7 @@
     const HeapVector<Member<IntersectionObserverEntry>>& entries) {
   bool is_visible = entries.back()->intersectionRatio() >=
                     intersection_observer_->thresholds()[0];
-  callback_(is_visible);
+  callback_.Run(is_visible);
 }
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/core/dom/ElementVisibilityObserver.h b/third_party/WebKit/Source/core/dom/ElementVisibilityObserver.h
index 776f14b..99863ac 100644
--- a/third_party/WebKit/Source/core/dom/ElementVisibilityObserver.h
+++ b/third_party/WebKit/Source/core/dom/ElementVisibilityObserver.h
@@ -30,7 +30,7 @@
   WTF_MAKE_NONCOPYABLE(ElementVisibilityObserver);
 
  public:
-  using VisibilityCallback = Function<void(bool), WTF::kSameThreadAffinity>;
+  using VisibilityCallback = WTF::RepeatingFunction<void(bool)>;
 
   ElementVisibilityObserver(Element*, VisibilityCallback);
   virtual ~ElementVisibilityObserver();
diff --git a/third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp b/third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp
index 96a66454..81c15d7 100644
--- a/third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp
+++ b/third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp
@@ -538,11 +538,8 @@
   // so the mock will fail if it's called anyway.
   platform_->RunUntilIdle();
 
-  // Finish streaming. Note that 'callback' must be empty when the callback
-  // is called, since out mock uses it to determine whether we're still
-  // streaming.
-  WTF::Closure tmp_callback = std::move(callback);
-  tmp_callback();
+  // Finish streaming.
+  std::move(callback).Run();
 
   // Now that streaming is finished, expect Execute() to be called.
   EXPECT_CALL(*script_loader1, Execute()).Times(1);
diff --git a/third_party/WebKit/Source/core/dom/ScriptedAnimationController.cpp b/third_party/WebKit/Source/core/dom/ScriptedAnimationController.cpp
index f5679f5a..85a4d6fe 100644
--- a/third_party/WebKit/Source/core/dom/ScriptedAnimationController.cpp
+++ b/third_party/WebKit/Source/core/dom/ScriptedAnimationController.cpp
@@ -90,7 +90,7 @@
   Vector<WTF::Closure> tasks;
   tasks.swap(task_queue_);
   for (auto& task : tasks)
-    task();
+    std::move(task).Run();
 }
 
 void ScriptedAnimationController::DispatchEvents(
diff --git a/third_party/WebKit/Source/core/dom/ScriptedAnimationControllerTest.cpp b/third_party/WebKit/Source/core/dom/ScriptedAnimationControllerTest.cpp
index c5b02eb..2655cba8d 100644
--- a/third_party/WebKit/Source/core/dom/ScriptedAnimationControllerTest.cpp
+++ b/third_party/WebKit/Source/core/dom/ScriptedAnimationControllerTest.cpp
@@ -118,15 +118,15 @@
 
 class RunTaskEventListener final : public EventListener {
  public:
-  RunTaskEventListener(WTF::Closure task)
+  RunTaskEventListener(WTF::RepeatingClosure task)
       : EventListener(kCPPEventListenerType), task_(std::move(task)) {}
-  void handleEvent(ExecutionContext*, Event*) override { task_(); }
+  void handleEvent(ExecutionContext*, Event*) override { task_.Run(); }
   bool operator==(const EventListener& other) const override {
     return this == &other;
   }
 
  private:
-  WTF::Closure task_;
+  WTF::RepeatingClosure task_;
 };
 
 }  // anonymous namespace
@@ -155,11 +155,11 @@
 class RunTaskCallback final
     : public FrameRequestCallbackCollection::FrameCallback {
  public:
-  RunTaskCallback(WTF::Closure task) : task_(std::move(task)) {}
-  void Invoke(double) override { task_(); }
+  RunTaskCallback(WTF::RepeatingClosure task) : task_(std::move(task)) {}
+  void Invoke(double) override { task_.Run(); }
 
  private:
-  WTF::Closure task_;
+  WTF::RepeatingClosure task_;
 };
 
 }  // anonymous namespace
diff --git a/third_party/WebKit/Source/core/editing/LayoutSelectionTest.cpp b/third_party/WebKit/Source/core/editing/LayoutSelectionTest.cpp
index bc6db7e7..0074e14 100644
--- a/third_party/WebKit/Source/core/editing/LayoutSelectionTest.cpp
+++ b/third_party/WebKit/Source/core/editing/LayoutSelectionTest.cpp
@@ -62,7 +62,8 @@
   return true;
 }
 
-using IsTypeOf = Function<bool(const LayoutObject& layout_object)>;
+using IsTypeOf =
+    WTF::RepeatingFunction<bool(const LayoutObject& layout_object)>;
 using IsTypeOfSimple = bool(const LayoutObject& layout_object);
 #define USING_LAYOUTOBJECT_FUNC(member_func)            \
   bool member_func(const LayoutObject& layout_object) { \
@@ -111,7 +112,7 @@
   if (!TestLayoutObjectState(object, state, invalidate))
     return false;
 
-  if (!predicate(*object))
+  if (!predicate.Run(*object))
     return false;
   return true;
 }
diff --git a/third_party/WebKit/Source/core/editing/commands/EditorCommand.cpp b/third_party/WebKit/Source/core/editing/commands/EditorCommand.cpp
index 52ad715..d790a872 100644
--- a/third_party/WebKit/Source/core/editing/commands/EditorCommand.cpp
+++ b/third_party/WebKit/Source/core/editing/commands/EditorCommand.cpp
@@ -37,7 +37,6 @@
 #include "core/css/StylePropertySet.h"
 #include "core/dom/DocumentFragment.h"
 #include "core/dom/TagCollection.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/dom/events/Event.h"
 #include "core/editing/EditingStyleUtilities.h"
 #include "core/editing/EditingTriState.h"
@@ -653,7 +652,7 @@
   Settings* settings = frame.GetSettings();
   bool default_value =
       (settings && settings->GetJavaScriptCanAccessClipboard()) ||
-      UserGestureIndicator::ProcessingUserGesture();
+      Frame::HasTransientUserActivation(&frame);
   return frame.GetEditor().Client().CanCopyCut(&frame, default_value);
 }
 
diff --git a/third_party/WebKit/Source/core/frame/DOMTimer.cpp b/third_party/WebKit/Source/core/frame/DOMTimer.cpp
index 9293c39..0008471 100644
--- a/third_party/WebKit/Source/core/frame/DOMTimer.cpp
+++ b/third_party/WebKit/Source/core/frame/DOMTimer.cpp
@@ -26,8 +26,10 @@
 
 #include "core/frame/DOMTimer.h"
 
+#include "core/dom/Document.h"
 #include "core/dom/ExecutionContext.h"
 #include "core/dom/TaskRunnerHelper.h"
+#include "core/frame/Frame.h"
 #include "core/inspector/InspectorTraceEvents.h"
 #include "core/probe/CoreProbes.h"
 #include "platform/instrumentation/tracing/TraceEvent.h"
@@ -46,8 +48,12 @@
 // the smallest possible interval timer.
 static const double kMinimumInterval = 0.004;
 
-static inline bool ShouldForwardUserGesture(int interval, int nesting_level) {
-  return UserGestureIndicator::ProcessingUserGestureThreadSafe() &&
+static inline bool ShouldForwardUserGesture(int interval,
+                                            int nesting_level,
+                                            Document* doc) {
+  Frame* frame = doc ? doc->GetFrame() : nullptr;
+  return Frame::HasTransientUserActivation(frame,
+                                           true /* checkIfMainThread */) &&
          interval <= kMaxIntervalForUserGestureForwarding &&
          nesting_level ==
              1;  // Gestures should not be forwarded to nested timers.
@@ -82,7 +88,8 @@
       nesting_level_(context->Timers()->TimerNestingLevel() + 1),
       action_(action) {
   DCHECK_GT(timeout_id, 0);
-  if (ShouldForwardUserGesture(interval, nesting_level_)) {
+  if (ShouldForwardUserGesture(interval, nesting_level_,
+                               ToDocumentOrNull(context))) {
     // Thread safe because shouldForwardUserGesture will only return true if
     // execution is on the the main thread.
     user_gesture_token_ = UserGestureIndicator::CurrentToken();
diff --git a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
index d2de485..dea263a 100644
--- a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
+++ b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
@@ -1553,7 +1553,7 @@
     UseCounter::Count(*active_document, WebFeature::kDOMWindowOpenFeatures);
   probe::windowOpen(first_frame->GetDocument(), url_string, frame_name,
                     window_features_string,
-                    UserGestureIndicator::ProcessingUserGesture());
+                    Frame::HasTransientUserActivation(first_frame));
 
   // Get the target frame for the special cases of _top and _parent.
   // In those cases, we schedule a location change right now and return early.
diff --git a/third_party/WebKit/Source/core/frame/LocalFrame.cpp b/third_party/WebKit/Source/core/frame/LocalFrame.cpp
index 30f87208..c24bc7b 100644
--- a/third_party/WebKit/Source/core/frame/LocalFrame.cpp
+++ b/third_party/WebKit/Source/core/frame/LocalFrame.cpp
@@ -952,7 +952,7 @@
       if (GetSecurityContext()->IsSandboxed(kSandboxTopNavigation) &&
           !GetSecurityContext()->IsSandboxed(
               kSandboxTopNavigationByUserActivation) &&
-          !UserGestureIndicator::ProcessingUserGesture()) {
+          !Frame::HasTransientUserActivation(this)) {
         // With only 'allow-top-navigation-by-user-activation' (but not
         // 'allow-top-navigation'), top navigation requires a user gesture.
         reason =
diff --git a/third_party/WebKit/Source/core/frame/RemoteFrame.cpp b/third_party/WebKit/Source/core/frame/RemoteFrame.cpp
index 1c1babfd8..c63e2c2 100644
--- a/third_party/WebKit/Source/core/frame/RemoteFrame.cpp
+++ b/third_party/WebKit/Source/core/frame/RemoteFrame.cpp
@@ -7,7 +7,6 @@
 #include "bindings/core/v8/WindowProxy.h"
 #include "bindings/core/v8/WindowProxyManager.h"
 #include "core/dom/RemoteSecurityContext.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/frame/LocalFrame.h"
 #include "core/frame/RemoteDOMWindow.h"
 #include "core/frame/RemoteFrameClient.h"
@@ -70,7 +69,7 @@
   FrameLoader::SetReferrerForFrameRequest(frame_request);
 
   frame_request.GetResourceRequest().SetHasUserGesture(
-      UserGestureIndicator::ProcessingUserGesture());
+      Frame::HasTransientUserActivation(this));
   Client()->Navigate(frame_request.GetResourceRequest(),
                      frame_request.ReplacesCurrentItem());
 }
diff --git a/third_party/WebKit/Source/core/fullscreen/Fullscreen.cpp b/third_party/WebKit/Source/core/fullscreen/Fullscreen.cpp
index abae6b7..41534d5 100644
--- a/third_party/WebKit/Source/core/fullscreen/Fullscreen.cpp
+++ b/third_party/WebKit/Source/core/fullscreen/Fullscreen.cpp
@@ -33,7 +33,6 @@
 #include "core/dom/Document.h"
 #include "core/dom/ElementTraversal.h"
 #include "core/dom/TaskRunnerHelper.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/dom/events/Event.h"
 #include "core/frame/HostsUsingFeatures.h"
 #include "core/frame/LocalFrame.h"
@@ -93,7 +92,7 @@
   // true:
 
   //  The algorithm is triggered by a user activation.
-  if (UserGestureIndicator::ProcessingUserGesture())
+  if (Frame::HasTransientUserActivation(document.GetFrame()))
     return true;
 
   //  The algorithm is triggered by a user generated orientation change.
diff --git a/third_party/WebKit/Source/core/html/custom/CustomElementReactionTestHelpers.h b/third_party/WebKit/Source/core/html/custom/CustomElementReactionTestHelpers.h
index 2c5a97a..1457c8d 100644
--- a/third_party/WebKit/Source/core/html/custom/CustomElementReactionTestHelpers.h
+++ b/third_party/WebKit/Source/core/html/custom/CustomElementReactionTestHelpers.h
@@ -38,7 +38,7 @@
   using Callback = WTF::Function<void(Element*)>;
   Call(Callback callback) : callback_(std::move(callback)) {}
   ~Call() override = default;
-  void Run(Element* element) override { callback_(element); }
+  void Run(Element* element) override { std::move(callback_).Run(element); }
 
  private:
   Callback callback_;
diff --git a/third_party/WebKit/Source/core/html/forms/ChooserOnlyTemporalInputTypeView.cpp b/third_party/WebKit/Source/core/html/forms/ChooserOnlyTemporalInputTypeView.cpp
index c8b5ba7..8dad1cb 100644
--- a/third_party/WebKit/Source/core/html/forms/ChooserOnlyTemporalInputTypeView.cpp
+++ b/third_party/WebKit/Source/core/html/forms/ChooserOnlyTemporalInputTypeView.cpp
@@ -28,7 +28,6 @@
 #include "bindings/core/v8/ExceptionState.h"
 #include "core/dom/Document.h"
 #include "core/dom/ShadowRoot.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/html/HTMLDivElement.h"
 #include "core/html/forms/HTMLInputElement.h"
 #include "core/page/ChromeClient.h"
@@ -60,7 +59,8 @@
 
 void ChooserOnlyTemporalInputTypeView::HandleDOMActivateEvent(Event*) {
   if (GetElement().IsDisabledOrReadOnly() || !GetElement().GetLayoutObject() ||
-      !UserGestureIndicator::ProcessingUserGesture() ||
+      !Frame::HasTransientUserActivation(
+          GetElement().GetDocument().GetFrame()) ||
       GetElement().OpenShadowRoot())
     return;
 
diff --git a/third_party/WebKit/Source/core/html/forms/ColorInputType.cpp b/third_party/WebKit/Source/core/html/forms/ColorInputType.cpp
index 230771f..78e54ca 100644
--- a/third_party/WebKit/Source/core/html/forms/ColorInputType.cpp
+++ b/third_party/WebKit/Source/core/html/forms/ColorInputType.cpp
@@ -34,7 +34,6 @@
 #include "bindings/core/v8/ScriptController.h"
 #include "core/CSSPropertyNames.h"
 #include "core/dom/ShadowRoot.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/dom/events/ScopedEventQueue.h"
 #include "core/events/MouseEvent.h"
 #include "core/frame/LocalFrameView.h"
@@ -149,7 +148,7 @@
   if (GetElement().IsDisabledFormControl())
     return;
 
-  if (!UserGestureIndicator::ProcessingUserGesture())
+  if (!Frame::HasTransientUserActivation(GetElement().GetDocument().GetFrame()))
     return;
 
   ChromeClient* chrome_client = this->GetChromeClient();
diff --git a/third_party/WebKit/Source/core/html/forms/FileInputType.cpp b/third_party/WebKit/Source/core/html/forms/FileInputType.cpp
index 0f346b0..0846461 100644
--- a/third_party/WebKit/Source/core/html/forms/FileInputType.cpp
+++ b/third_party/WebKit/Source/core/html/forms/FileInputType.cpp
@@ -25,7 +25,6 @@
 #include "bindings/core/v8/ExceptionState.h"
 #include "core/css/StyleChangeReason.h"
 #include "core/dom/ShadowRoot.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/dom/events/Event.h"
 #include "core/fileapi/File.h"
 #include "core/fileapi/FileList.h"
@@ -147,7 +146,7 @@
   if (GetElement().IsDisabledFormControl())
     return;
 
-  if (!UserGestureIndicator::ProcessingUserGesture())
+  if (!Frame::HasTransientUserActivation(GetElement().GetDocument().GetFrame()))
     return;
 
   if (ChromeClient* chrome_client = this->GetChromeClient()) {
diff --git a/third_party/WebKit/Source/core/html/forms/HTMLInputElement.cpp b/third_party/WebKit/Source/core/html/forms/HTMLInputElement.cpp
index 278f3d7..0896461 100644
--- a/third_party/WebKit/Source/core/html/forms/HTMLInputElement.cpp
+++ b/third_party/WebKit/Source/core/html/forms/HTMLInputElement.cpp
@@ -400,6 +400,7 @@
   bool could_be_successful_submit_button = CanBeSuccessfulSubmitButton();
 
   input_type_view_->DestroyShadowSubtree();
+  DropInnerEditorElement();
   LazyReattachIfAttached();
 
   if (input_type_->SupportsRequired() != new_type->SupportsRequired() &&
diff --git a/third_party/WebKit/Source/core/html/forms/HTMLTextAreaElement.cpp b/third_party/WebKit/Source/core/html/forms/HTMLTextAreaElement.cpp
index 3da329a..5d660e9 100644
--- a/third_party/WebKit/Source/core/html/forms/HTMLTextAreaElement.cpp
+++ b/third_party/WebKit/Source/core/html/forms/HTMLTextAreaElement.cpp
@@ -84,7 +84,7 @@
 }
 
 void HTMLTextAreaElement::DidAddUserAgentShadowRoot(ShadowRoot& root) {
-  root.AppendChild(TextControlInnerEditorElement::Create(GetDocument()));
+  root.AppendChild(CreateInnerEditorElement());
 }
 
 const AtomicString& HTMLTextAreaElement::FormControlType() const {
diff --git a/third_party/WebKit/Source/core/html/forms/TextControlElement.cpp b/third_party/WebKit/Source/core/html/forms/TextControlElement.cpp
index b1da3e5..a220592 100644
--- a/third_party/WebKit/Source/core/html/forms/TextControlElement.cpp
+++ b/third_party/WebKit/Source/core/html/forms/TextControlElement.cpp
@@ -46,6 +46,7 @@
 #include "core/frame/UseCounter.h"
 #include "core/html/HTMLBRElement.h"
 #include "core/html/HTMLDivElement.h"
+#include "core/html/forms/TextControlInnerElements.h"
 #include "core/html/parser/HTMLParserIdioms.h"
 #include "core/html/shadow/ShadowElementNames.h"
 #include "core/html_names.h"
@@ -1002,13 +1003,19 @@
                                                   : "-webkit-input-suggested"));
 }
 
+HTMLElement* TextControlElement::CreateInnerEditorElement() {
+  DCHECK(!inner_editor_);
+  inner_editor_ = TextControlInnerEditorElement::Create(GetDocument());
+  return inner_editor_;
+}
+
 const String& TextControlElement::SuggestedValue() const {
   return suggested_value_;
 }
 
-HTMLElement* TextControlElement::InnerEditorElement() const {
-  return ToHTMLElementOrDie(
-      UserAgentShadowRoot()->getElementById(ShadowElementNames::InnerEditor()));
+void TextControlElement::Trace(Visitor* visitor) {
+  visitor->Trace(inner_editor_);
+  HTMLFormControlElementWithState::Trace(visitor);
 }
 
 void TextControlElement::CopyNonAttributePropertiesFromElement(
diff --git a/third_party/WebKit/Source/core/html/forms/TextControlElement.h b/third_party/WebKit/Source/core/html/forms/TextControlElement.h
index 544579c8..df7f59f8 100644
--- a/third_party/WebKit/Source/core/html/forms/TextControlElement.h
+++ b/third_party/WebKit/Source/core/html/forms/TextControlElement.h
@@ -131,7 +131,9 @@
       TextControlSetValueSelection =
           TextControlSetValueSelection::kSetSelectionToEnd) = 0;
 
-  HTMLElement* InnerEditorElement() const;
+  HTMLElement* InnerEditorElement() const { return inner_editor_; }
+  HTMLElement* CreateInnerEditorElement();
+  void DropInnerEditorElement() { inner_editor_ = nullptr; }
 
   void SelectionChanged(bool user_triggered);
   bool LastChangeWasUserEdit() const;
@@ -144,6 +146,8 @@
   virtual void SetSuggestedValue(const String& value);
   const String& SuggestedValue() const;
 
+  void Trace(Visitor*) override;
+
  protected:
   TextControlElement(const QualifiedName&, Document&);
   bool IsPlaceholderEmpty() const;
@@ -196,6 +200,11 @@
 
   bool PlaceholderShouldBeVisible() const;
 
+  // Held directly instead of looked up by ID for speed.
+  // Not only is the lookup faster, but for simple text inputs it avoids
+  // creating a number of TreeScope data structures to track elements by ID.
+  Member<HTMLElement> inner_editor_;
+
   // In m_valueBeforeFirstUserEdit, we distinguish a null String and zero-length
   // String. Null String means the field doesn't have any data yet, and
   // zero-length String is a valid data.
diff --git a/third_party/WebKit/Source/core/html/forms/TextControlInnerElements.cpp b/third_party/WebKit/Source/core/html/forms/TextControlInnerElements.cpp
index b962c8f..3634e64 100644
--- a/third_party/WebKit/Source/core/html/forms/TextControlInnerElements.cpp
+++ b/third_party/WebKit/Source/core/html/forms/TextControlInnerElements.cpp
@@ -103,10 +103,7 @@
 
 TextControlInnerEditorElement* TextControlInnerEditorElement::Create(
     Document& document) {
-  TextControlInnerEditorElement* element =
-      new TextControlInnerEditorElement(document);
-  element->setAttribute(idAttr, ShadowElementNames::InnerEditor());
-  return element;
+  return new TextControlInnerEditorElement(document);
 }
 
 void TextControlInnerEditorElement::DefaultEventHandler(Event* event) {
diff --git a/third_party/WebKit/Source/core/html/forms/TextFieldInputType.cpp b/third_party/WebKit/Source/core/html/forms/TextFieldInputType.cpp
index f1dd02f..6e2b668 100644
--- a/third_party/WebKit/Source/core/html/forms/TextFieldInputType.cpp
+++ b/third_party/WebKit/Source/core/html/forms/TextFieldInputType.cpp
@@ -285,8 +285,7 @@
   bool creates_container = should_have_spin_button ||
                            should_have_data_list_indicator || NeedsContainer();
 
-  TextControlInnerEditorElement* inner_editor =
-      TextControlInnerEditorElement::Create(document);
+  HTMLElement* inner_editor = GetElement().CreateInnerEditorElement();
   if (!creates_container) {
     shadow_root->AppendChild(inner_editor);
     return;
diff --git a/third_party/WebKit/Source/core/html/media/AutoplayPolicy.cpp b/third_party/WebKit/Source/core/html/media/AutoplayPolicy.cpp
index 2ab5e184..da494da 100644
--- a/third_party/WebKit/Source/core/html/media/AutoplayPolicy.cpp
+++ b/third_party/WebKit/Source/core/html/media/AutoplayPolicy.cpp
@@ -6,7 +6,6 @@
 
 #include "core/dom/Document.h"
 #include "core/dom/ElementVisibilityObserver.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/frame/ContentSettingsClient.h"
 #include "core/frame/LocalFrame.h"
 #include "core/frame/Settings.h"
@@ -197,7 +196,7 @@
 }
 
 Nullable<ExceptionCode> AutoplayPolicy::RequestPlay() {
-  if (!UserGestureIndicator::ProcessingUserGesture()) {
+  if (!Frame::HasTransientUserActivation(element_->GetDocument().GetFrame())) {
     autoplay_uma_helper_->OnAutoplayInitiated(AutoplaySource::kMethod);
     if (IsGestureNeededForPlayback()) {
       autoplay_uma_helper_->RecordCrossOriginAutoplayResult(
@@ -253,7 +252,7 @@
 
 void AutoplayPolicy::TryUnlockingUserGesture() {
   if (IsLockedPendingUserGesture() &&
-      UserGestureIndicator::ProcessingUserGesture()) {
+      Frame::HasTransientUserActivation(element_->GetDocument().GetFrame())) {
     UnlockUserGesture();
   }
 }
diff --git a/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp b/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp
index c87df01..cc12bfae14 100644
--- a/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp
+++ b/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp
@@ -351,7 +351,7 @@
 void BackgroundHTMLParser::RunOnMainThread(FunctionType function,
                                            Ps&&... parameters) {
   if (IsMainThread()) {
-    WTF::Bind(std::move(function), std::forward<Ps>(parameters)...)();
+    WTF::Bind(std::move(function), std::forward<Ps>(parameters)...).Run();
   } else {
     loading_task_runner_->PostTask(
         BLINK_FROM_HERE,
diff --git a/third_party/WebKit/Source/core/html/shadow/ShadowElementNames.cpp b/third_party/WebKit/Source/core/html/shadow/ShadowElementNames.cpp
index ab704be..627c29d22 100644
--- a/third_party/WebKit/Source/core/html/shadow/ShadowElementNames.cpp
+++ b/third_party/WebKit/Source/core/html/shadow/ShadowElementNames.cpp
@@ -69,11 +69,6 @@
   return name;
 }
 
-const AtomicString& InnerEditor() {
-  DEFINE_STATIC_LOCAL(AtomicString, name, ("inner-editor"));
-  return name;
-}
-
 const AtomicString& PickerIndicator() {
   DEFINE_STATIC_LOCAL(AtomicString, name, ("picker"));
   return name;
diff --git a/third_party/WebKit/Source/core/html/shadow/ShadowElementNames.h b/third_party/WebKit/Source/core/html/shadow/ShadowElementNames.h
index c3291c8e..1db5b517 100644
--- a/third_party/WebKit/Source/core/html/shadow/ShadowElementNames.h
+++ b/third_party/WebKit/Source/core/html/shadow/ShadowElementNames.h
@@ -45,7 +45,6 @@
 CORE_EXPORT const AtomicString& SpinButton();
 const AtomicString& ClearButton();
 const AtomicString& EditingViewPort();
-const AtomicString& InnerEditor();
 const AtomicString& PickerIndicator();
 const AtomicString& Placeholder();
 const AtomicString& SearchClearButton();
diff --git a/third_party/WebKit/Source/core/input/EventHandlerTest.cpp b/third_party/WebKit/Source/core/input/EventHandlerTest.cpp
index 774fdb35..4a6e8b1 100644
--- a/third_party/WebKit/Source/core/input/EventHandlerTest.cpp
+++ b/third_party/WebKit/Source/core/input/EventHandlerTest.cpp
@@ -425,10 +425,8 @@
 
 TEST_F(EventHandlerTest, InputFieldsCanStartSelection) {
   SetHtmlInnerHTML("<input value='blabla'>");
-  Element* const field = ToElement(GetDocument().body()->firstChild());
-  ShadowRoot* const shadow_root = field->UserAgentShadowRoot();
-
-  Element* const text = shadow_root->getElementById("inner-editor");
+  auto* const field = ToHTMLInputElement(GetDocument().body()->firstChild());
+  Element* const text = field->InnerEditorElement();
   LayoutPoint location =
       text->GetLayoutObject()->FirstFragment().VisualRect().Center();
   HitTestResult hit =
diff --git a/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
index cbec6456..554fcc13 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
@@ -1736,12 +1736,13 @@
 }
 
 // static
-void InspectorDOMAgent::CollectNodes(Node* node,
-                                     int depth,
-                                     bool pierce,
-                                     const Function<bool(Node*)>& filter,
-                                     HeapVector<Member<Node>>* result) {
-  if (filter && filter(node))
+void InspectorDOMAgent::CollectNodes(
+    Node* node,
+    int depth,
+    bool pierce,
+    const WTF::RepeatingFunction<bool(Node*)>& filter,
+    HeapVector<Member<Node>>* result) {
+  if (filter && filter.Run(node))
     result->push_back(node);
   if (--depth <= 0)
     return;
diff --git a/third_party/WebKit/Source/core/inspector/InspectorResourceContentLoader.cpp b/third_party/WebKit/Source/core/inspector/InspectorResourceContentLoader.cpp
index 1e8916ed..70ac5b4 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorResourceContentLoader.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorResourceContentLoader.cpp
@@ -237,9 +237,9 @@
     return;
   HashMap<int, Callbacks> callbacks;
   callbacks.swap(callbacks_);
-  for (const auto& key_value : callbacks) {
-    for (const auto& callback : key_value.value)
-      callback();
+  for (auto& key_value : callbacks) {
+    for (auto& callback : key_value.value)
+      std::move(callback).Run();
   }
 }
 
diff --git a/third_party/WebKit/Source/core/inspector/InspectorTaskRunner.cpp b/third_party/WebKit/Source/core/inspector/InspectorTaskRunner.cpp
index fbcdc9fe..f108e792 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorTaskRunner.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorTaskRunner.cpp
@@ -66,7 +66,7 @@
     Task task = TakeNextTask(kDontWaitForTask);
     if (!task)
       return;
-    task();
+    std::move(task).Run();
   }
 }
 
diff --git a/third_party/WebKit/Source/core/intersection_observer/IntersectionObserver.cpp b/third_party/WebKit/Source/core/intersection_observer/IntersectionObserver.cpp
index 43b27f6..96a7a19 100644
--- a/third_party/WebKit/Source/core/intersection_observer/IntersectionObserver.cpp
+++ b/third_party/WebKit/Source/core/intersection_observer/IntersectionObserver.cpp
@@ -44,7 +44,7 @@
 
   void Deliver(const HeapVector<Member<IntersectionObserverEntry>>& entries,
                IntersectionObserver&) override {
-    callback_(entries);
+    callback_.Run(entries);
   }
 
   ExecutionContext* GetExecutionContext() const override { return context_; }
diff --git a/third_party/WebKit/Source/core/intersection_observer/IntersectionObserver.h b/third_party/WebKit/Source/core/intersection_observer/IntersectionObserver.h
index d977491..0757e34 100644
--- a/third_party/WebKit/Source/core/intersection_observer/IntersectionObserver.h
+++ b/third_party/WebKit/Source/core/intersection_observer/IntersectionObserver.h
@@ -29,9 +29,8 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  using EventCallback =
-      Function<void(const HeapVector<Member<IntersectionObserverEntry>>&),
-               WTF::kSameThreadAffinity>;
+  using EventCallback = WTF::RepeatingFunction<void(
+      const HeapVector<Member<IntersectionObserverEntry>>&)>;
 
   static IntersectionObserver* Create(const IntersectionObserverInit&,
                                       IntersectionObserverDelegate&,
diff --git a/third_party/WebKit/Source/core/layout/FloatingObjects.cpp b/third_party/WebKit/Source/core/layout/FloatingObjects.cpp
index f51a155..42ca348e3 100644
--- a/third_party/WebKit/Source/core/layout/FloatingObjects.cpp
+++ b/third_party/WebKit/Source/core/layout/FloatingObjects.cpp
@@ -626,6 +626,28 @@
   return std::min(fixed_offset, adapter.Offset());
 }
 
+LayoutUnit FloatingObjects::LogicalLeftOffsetForAvoidingFloats(
+    LayoutUnit fixed_offset,
+    LayoutUnit logical_top,
+    LayoutUnit logical_height) {
+  ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::kFloatLeft> adapter(
+      layout_object_, logical_top, logical_top + logical_height, fixed_offset);
+  PlacedFloatsTree().AllOverlapsWithAdapter(adapter);
+
+  return adapter.Offset();
+}
+
+LayoutUnit FloatingObjects::LogicalRightOffsetForAvoidingFloats(
+    LayoutUnit fixed_offset,
+    LayoutUnit logical_top,
+    LayoutUnit logical_height) {
+  ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::kFloatRight> adapter(
+      layout_object_, logical_top, logical_top + logical_height, fixed_offset);
+  PlacedFloatsTree().AllOverlapsWithAdapter(adapter);
+
+  return std::min(fixed_offset, adapter.Offset());
+}
+
 FloatingObjects::FloatBottomCachedValue::FloatBottomCachedValue()
     : floating_object(nullptr), dirty(true) {}
 
diff --git a/third_party/WebKit/Source/core/layout/FloatingObjects.h b/third_party/WebKit/Source/core/layout/FloatingObjects.h
index a2bac41..774dd92 100644
--- a/third_party/WebKit/Source/core/layout/FloatingObjects.h
+++ b/third_party/WebKit/Source/core/layout/FloatingObjects.h
@@ -228,6 +228,18 @@
       LayoutUnit fixed_offset,
       LayoutUnit logical_top,
       LayoutUnit* height_remaining);
+
+  // NOTE(ikilpatrick): These methods exist for determining how shape-outside
+  // affects positioning and sizing of block children avoiding floats.
+  // If usage is low enough these may be used instead of LogicalLeftOffset,
+  // LogicalLeftOffset for children avoiding floats.
+  LayoutUnit LogicalLeftOffsetForAvoidingFloats(LayoutUnit fixed_offset,
+                                                LayoutUnit logical_top,
+                                                LayoutUnit logical_height);
+  LayoutUnit LogicalRightOffsetForAvoidingFloats(LayoutUnit fixed_offset,
+                                                 LayoutUnit logical_top,
+                                                 LayoutUnit logical_height);
+
   LayoutUnit FindNextFloatLogicalBottomBelow(LayoutUnit logical_height);
   LayoutUnit FindNextFloatLogicalBottomBelowForBlock(LayoutUnit logical_height);
 
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
index ad8fae4..751668e 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
@@ -654,6 +654,18 @@
         StartOffsetForLine(LogicalTopForChild(child), kDoNotIndentText,
                            LogicalHeightForChild(child));
 
+    // This section of code is just for a use counter. It counts if something
+    // that avoids floats may have been affected by a float with shape-outside.
+    if (!ShapeOutsideInfo::IsEmpty()) {
+      LayoutUnit alternate_position_to_avoid_floats =
+          StartOffsetForAvoidingFloats(LogicalTopForChild(child),
+                                       LogicalHeightForChild(child));
+      if (alternate_position_to_avoid_floats != position_to_avoid_floats) {
+        UseCounter::Count(GetDocument(),
+                          WebFeature::kShapeOutsideMaybeAffectedInlinePosition);
+      }
+    }
+
     // If the child has an offset from the content edge to avoid floats then use
     // that, otherwise let any negative margin pull it back over the content
     // edge or any positive margin push it out.
@@ -4155,6 +4167,30 @@
   return fixed_offset;
 }
 
+LayoutUnit LayoutBlockFlow::LogicalLeftFloatOffsetForAvoidingFloats(
+    LayoutUnit logical_top,
+    LayoutUnit fixed_offset,
+    LayoutUnit logical_height) const {
+  if (floating_objects_ && floating_objects_->HasLeftObjects()) {
+    return floating_objects_->LogicalLeftOffsetForAvoidingFloats(
+        fixed_offset, logical_top, logical_height);
+  }
+
+  return fixed_offset;
+}
+
+LayoutUnit LayoutBlockFlow::LogicalRightFloatOffsetForAvoidingFloats(
+    LayoutUnit logical_top,
+    LayoutUnit fixed_offset,
+    LayoutUnit logical_height) const {
+  if (floating_objects_ && floating_objects_->HasRightObjects()) {
+    return floating_objects_->LogicalRightOffsetForAvoidingFloats(
+        fixed_offset, logical_top, logical_height);
+  }
+
+  return fixed_offset;
+}
+
 void LayoutBlockFlow::UpdateAncestorShouldPaintFloatingObject(
     const LayoutBox& float_box) {
   // Normally, the ShouldPaint flags of FloatingObjects should have been set
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.h b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.h
index ec07d64..9cab842 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.h
+++ b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.h
@@ -150,6 +150,42 @@
                                       position, indent_text, logical_height);
   }
 
+  LayoutUnit AvailableLogicalWidthForAvoidingFloats(
+      LayoutUnit position,
+      LayoutUnit logical_height = LayoutUnit()) const {
+    return (LogicalRightOffsetForAvoidingFloats(position, logical_height) -
+            LogicalLeftOffsetForAvoidingFloats(position, logical_height))
+        .ClampNegativeToZero();
+  }
+  LayoutUnit LogicalLeftOffsetForAvoidingFloats(
+      LayoutUnit position,
+      LayoutUnit logical_height = LayoutUnit()) const {
+    return LogicalLeftFloatOffsetForAvoidingFloats(
+        position, LogicalLeftOffsetForContent(), logical_height);
+  }
+  LayoutUnit LogicalRightOffsetForAvoidingFloats(
+      LayoutUnit position,
+      LayoutUnit logical_height = LayoutUnit()) const {
+    return LogicalRightFloatOffsetForAvoidingFloats(
+        position, LogicalRightOffsetForContent(), logical_height);
+  }
+  LayoutUnit StartOffsetForAvoidingFloats(
+      LayoutUnit position,
+      LayoutUnit logical_height = LayoutUnit()) const {
+    return Style()->IsLeftToRightDirection()
+               ? LogicalLeftOffsetForAvoidingFloats(position, logical_height)
+               : LogicalWidth() - LogicalRightOffsetForAvoidingFloats(
+                                      position, logical_height);
+  }
+  LayoutUnit EndOffsetForAvoidingFloats(
+      LayoutUnit position,
+      LayoutUnit logical_height = LayoutUnit()) const {
+    return !Style()->IsLeftToRightDirection()
+               ? LogicalLeftOffsetForAvoidingFloats(position, logical_height)
+               : LogicalWidth() - LogicalRightOffsetForAvoidingFloats(
+                                      position, logical_height);
+  }
+
   const LineBoxList& LineBoxes() const { return line_boxes_; }
   LineBoxList* LineBoxes() { return &line_boxes_; }
   InlineFlowBox* FirstLineBox() const { return line_boxes_.FirstLineBox(); }
@@ -571,6 +607,15 @@
                                            LayoutUnit fixed_offset,
                                            LayoutUnit logical_height) const;
 
+  LayoutUnit LogicalLeftFloatOffsetForAvoidingFloats(
+      LayoutUnit logical_top,
+      LayoutUnit fixed_offset,
+      LayoutUnit logical_height) const;
+  LayoutUnit LogicalRightFloatOffsetForAvoidingFloats(
+      LayoutUnit logical_top,
+      LayoutUnit fixed_offset,
+      LayoutUnit logical_height) const;
+
   LayoutUnit LogicalRightOffsetForPositioningFloat(
       LayoutUnit logical_top,
       LayoutUnit fixed_offset,
diff --git a/third_party/WebKit/Source/core/layout/LayoutBox.cpp b/third_party/WebKit/Source/core/layout/LayoutBox.cpp
index 8abbfbd..4c2d745 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBox.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBox.cpp
@@ -2028,11 +2028,27 @@
                                             kDoNotIndentText, logical_height) -
            child_margin_start - child_margin_end;
 
-  LayoutUnit width =
-      cb->AvailableLogicalWidthForLine(logical_top_position, kDoNotIndentText,
-                                       logical_height) -
-      std::max(LayoutUnit(), child_margin_start) -
-      std::max(LayoutUnit(), child_margin_end);
+  LayoutUnit width = cb->AvailableLogicalWidthForLine(
+      logical_top_position, kDoNotIndentText, logical_height);
+
+  // This section of code is just for a use counter. It counts if something
+  // that avoids floats may have been affected by a float with shape-outside.
+  // NOTE(ikilpatrick): This isn't the only code-path which uses
+  // AvailableLogicalWidthForLine, if we switch this over we need to inspect
+  // other usages.
+  if (!ShapeOutsideInfo::IsEmpty()) {
+    LayoutUnit alternate_width = cb->AvailableLogicalWidthForAvoidingFloats(
+        logical_top_position, logical_height);
+
+    if (alternate_width != width) {
+      UseCounter::Count(GetDocument(),
+                        WebFeature::kShapeOutsideMaybeAffectedInlineSize);
+    }
+  }
+
+  width -= std::max(LayoutUnit(), child_margin_start);
+  width -= std::max(LayoutUnit(), child_margin_end);
+
   // We need to see if margins on either the start side or the end side can
   // contain the floats in question. If they can, then just using the line width
   // is inaccurate. In the case where a float completely fits, we don't need to
diff --git a/third_party/WebKit/Source/core/layout/ScrollbarsTest.cpp b/third_party/WebKit/Source/core/layout/ScrollbarsTest.cpp
index 87594ed..e9903a20 100644
--- a/third_party/WebKit/Source/core/layout/ScrollbarsTest.cpp
+++ b/third_party/WebKit/Source/core/layout/ScrollbarsTest.cpp
@@ -94,7 +94,46 @@
   }
 };
 
+class ScrollbarsTestWithVirtualTimer : public ScrollbarsTest {
+ public:
+  void TearDown() override {
+    // The SimTest destructor calls runPendingTasks. This is a problem because
+    // if there are any repeating tasks, advancing virtual time will cause the
+    // runloop to busy loop. Disabling virtual time here fixes that.
+    WebView().Scheduler()->DisableVirtualTimeForTesting();
+  }
+
+  void TimeAdvance() {
+    WebView().Scheduler()->SetVirtualTimePolicy(
+        WebViewScheduler::VirtualTimePolicy::ADVANCE);
+  }
+
+  void StopVirtualTimeAndExitRunLoop() {
+    WebView().Scheduler()->SetVirtualTimePolicy(
+        WebViewScheduler::VirtualTimePolicy::PAUSE);
+    testing::ExitRunLoop();
+  }
+
+  // Some task queues may have repeating v8 tasks that run forever so we impose
+  // a hard (virtual) time limit.
+  void RunTasksForPeriod(double delay_ms) {
+    TimeAdvance();
+    Platform::Current()
+        ->CurrentThread()
+        ->Scheduler()
+        ->LoadingTaskRunner()
+        ->PostDelayedTask(
+            BLINK_FROM_HERE,
+            WTF::Bind(
+                &ScrollbarsTestWithVirtualTimer::StopVirtualTimeAndExitRunLoop,
+                WTF::Unretained(this)),
+            TimeDelta::FromMillisecondsD(delay_ms));
+    testing::EnterRunLoop();
+  }
+};
+
 INSTANTIATE_TEST_CASE_P(All, ScrollbarsTest, ::testing::Bool());
+INSTANTIATE_TEST_CASE_P(All, ScrollbarsTestWithVirtualTimer, ::testing::Bool());
 
 TEST_P(ScrollbarsTest, DocumentStyleRecalcPreservesScrollbars) {
   v8::HandleScope handle_scope(v8::Isolate::GetCurrent());
@@ -925,29 +964,25 @@
   Compositor().BeginFrame();
 }
 
-static void DisableCompositing(WebSettings* settings) {
-  settings->SetAcceleratedCompositingEnabled(false);
-  settings->SetPreferCompositingToLCDTextEnabled(false);
-}
-
-#if defined(THREAD_SANITIZER) || defined(ADDRESS_SANITIZER)
-#define DISABLE_ON_TSAN_AND_ASAN(test_name) DISABLED_##test_name
+// http://crbug.com/633321, Disable since VirtualTime not work for Android.
+#if defined(OS_ANDROID)
+#define DISABLE_ON_ANDROID(test_name) DISABLED_##test_name
 #else
-#define DISABLE_ON_TSAN_AND_ASAN(test_name) test_name
-#endif  // defined(THREAD_SANITIZER)
+#define DISABLE_ON_ANDROID(test_name) test_name
+#endif
 
 // Make sure overlay scrollbars on non-composited scrollers fade out and set
 // the hidden bit as needed.
-// TODO(crbug.com/776684): Fix and re-enable on TSAN and ASAN.
-TEST_P(ScrollbarsTest,
-       DISABLE_ON_TSAN_AND_ASAN(TestNonCompositedOverlayScrollbarsFade)) {
-  FrameTestHelpers::WebViewHelper web_view_helper;
-  WebViewImpl* web_view_impl = web_view_helper.Initialize(
-      nullptr, nullptr, nullptr, &DisableCompositing);
-
-  constexpr double kMockOverlayFadeOutDelayMs = 5.0;
-  constexpr TimeDelta kMockOverlayFadeOutDelay =
-      TimeDelta::FromMillisecondsD(kMockOverlayFadeOutDelayMs);
+// To avoid TSAN/ASAN race issue, this test use Virtual Time and give scrollbar
+// a huge fadeout delay.
+TEST_P(ScrollbarsTestWithVirtualTimer,
+       DISABLE_ON_ANDROID(TestNonCompositedOverlayScrollbarsFade)) {
+  // Will crash if move EnableVirtualTime before test body.
+  WebView().Scheduler()->EnableVirtualTime();
+  TimeAdvance();
+  constexpr double kMockOverlayFadeOutDelayInSeconds = 5.0;
+  constexpr double kMockOverlayFadeOutDelayMS =
+      kMockOverlayFadeOutDelayInSeconds * 1000;
 
   ScrollbarTheme& theme = GetScrollbarTheme();
   // This test relies on mock overlay scrollbars.
@@ -956,64 +991,67 @@
   ScrollbarThemeOverlayMock& mock_overlay_theme =
       (ScrollbarThemeOverlayMock&)theme;
   mock_overlay_theme.SetOverlayScrollbarFadeOutDelay(
-      kMockOverlayFadeOutDelayMs / 1000.0);
+      kMockOverlayFadeOutDelayInSeconds);
 
-  web_view_impl->ResizeWithBrowserControls(WebSize(640, 480), 0, 0, false);
-
-  WebURL base_url = URLTestHelpers::ToKURL("http://example.com/");
-  FrameTestHelpers::LoadHTMLString(web_view_impl->MainFrameImpl(),
-                                   "<!DOCTYPE html>"
-                                   "<style>"
-                                   "  #space {"
-                                   "    width: 1000px;"
-                                   "    height: 1000px;"
-                                   "  }"
-                                   "  #container {"
-                                   "    width: 200px;"
-                                   "    height: 200px;"
-                                   "    overflow: scroll;"
-                                   "  }"
-                                   "  div { height:1000px; width: 200px; }"
-                                   "</style>"
-                                   "<div id='container'>"
-                                   "  <div id='space'></div>"
-                                   "</div>",
-                                   base_url);
-  web_view_impl->UpdateAllLifecyclePhases();
-
+  WebView().Resize(WebSize(640, 480));
+  SimRequest request("https://example.com/test.html", "text/html");
+  LoadURL("https://example.com/test.html");
+  RunTasksForPeriod(kMockOverlayFadeOutDelayMS);
+  request.Complete(
+      "<!DOCTYPE html>"
+      "<style>"
+      "  #space {"
+      "    width: 1000px;"
+      "    height: 1000px;"
+      "  }"
+      "  #container {"
+      "    width: 200px;"
+      "    height: 200px;"
+      "    overflow: scroll;"
+      "    /* Ensure the scroller is non-composited. */"
+      "    border: border: 2px solid;"
+      "    border-radius: 25px;"
+      "  }"
+      "  div { height:1000px; width: 200px; }"
+      "</style>"
+      "<div id='container'>"
+      "  <div id='space'></div>"
+      "</div>");
+  Compositor().BeginFrame();
   // This test is specifically checking the behavior when overlay scrollbars
   // are enabled.
   DCHECK(GetScrollbarTheme().UsesOverlayScrollbars());
 
-  WebLocalFrameImpl* frame = web_view_helper.LocalMainFrame();
-  Document* document =
-      ToLocalFrame(web_view_impl->GetPage()->MainFrame())->GetDocument();
-  Element* container = document->getElementById("container");
+  Document& document = GetDocument();
+  Element* container = document.getElementById("container");
   ScrollableArea* scrollable_area =
       ToLayoutBox(container->GetLayoutObject())->GetScrollableArea();
 
+  DCHECK(!scrollable_area->UsesCompositedScrolling());
+
   EXPECT_FALSE(scrollable_area->ScrollbarsHidden());
-  testing::RunDelayedTasks(kMockOverlayFadeOutDelay);
+  RunTasksForPeriod(kMockOverlayFadeOutDelayMS);
   EXPECT_TRUE(scrollable_area->ScrollbarsHidden());
 
   scrollable_area->SetScrollOffset(ScrollOffset(10, 10), kProgrammaticScroll,
                                    kScrollBehaviorInstant);
 
   EXPECT_FALSE(scrollable_area->ScrollbarsHidden());
-  testing::RunDelayedTasks(kMockOverlayFadeOutDelay);
+  RunTasksForPeriod(kMockOverlayFadeOutDelayMS);
   EXPECT_TRUE(scrollable_area->ScrollbarsHidden());
 
-  frame->ExecuteScript(WebScriptSource(
+  MainFrame().ExecuteScript(WebScriptSource(
       "document.getElementById('space').style.height = '500px';"));
-  frame->View()->UpdateAllLifecyclePhases();
+  Compositor().BeginFrame();
+
   EXPECT_TRUE(scrollable_area->ScrollbarsHidden());
 
-  frame->ExecuteScript(WebScriptSource(
+  MainFrame().ExecuteScript(WebScriptSource(
       "document.getElementById('container').style.height = '300px';"));
-  frame->View()->UpdateAllLifecyclePhases();
+  Compositor().BeginFrame();
 
   EXPECT_FALSE(scrollable_area->ScrollbarsHidden());
-  testing::RunDelayedTasks(kMockOverlayFadeOutDelay);
+  RunTasksForPeriod(kMockOverlayFadeOutDelayMS);
   EXPECT_TRUE(scrollable_area->ScrollbarsHidden());
 
   // Non-composited scrollbars don't fade out while mouse is over.
@@ -1022,10 +1060,10 @@
                                    kScrollBehaviorInstant);
   EXPECT_FALSE(scrollable_area->ScrollbarsHidden());
   scrollable_area->MouseEnteredScrollbar(*scrollable_area->VerticalScrollbar());
-  testing::RunDelayedTasks(kMockOverlayFadeOutDelay);
+  RunTasksForPeriod(kMockOverlayFadeOutDelayMS);
   EXPECT_FALSE(scrollable_area->ScrollbarsHidden());
   scrollable_area->MouseExitedScrollbar(*scrollable_area->VerticalScrollbar());
-  testing::RunDelayedTasks(kMockOverlayFadeOutDelay);
+  RunTasksForPeriod(kMockOverlayFadeOutDelayMS);
   EXPECT_TRUE(scrollable_area->ScrollbarsHidden());
 
   mock_overlay_theme.SetOverlayScrollbarFadeOutDelay(0.0);
diff --git a/third_party/WebKit/Source/core/layout/line/InlineBox.cpp b/third_party/WebKit/Source/core/layout/line/InlineBox.cpp
index e0963ae2..0a96beb 100644
--- a/third_party/WebKit/Source/core/layout/line/InlineBox.cpp
+++ b/third_party/WebKit/Source/core/layout/line/InlineBox.cpp
@@ -332,12 +332,6 @@
   return rect.Location();
 }
 
-void InlineBox::LogicalRectToPhysicalRect(LayoutRect& rect) const {
-  if (!IsHorizontal())
-    rect = rect.TransposedRect();
-  FlipForWritingMode(rect);
-}
-
 void InlineBox::FlipForWritingMode(FloatRect& rect) const {
   if (!UNLIKELY(GetLineLayoutItem().HasFlippedBlocksWritingMode()))
     return;
diff --git a/third_party/WebKit/Source/core/layout/line/InlineBox.h b/third_party/WebKit/Source/core/layout/line/InlineBox.h
index f8c844a..50266aa 100644
--- a/third_party/WebKit/Source/core/layout/line/InlineBox.h
+++ b/third_party/WebKit/Source/core/layout/line/InlineBox.h
@@ -369,11 +369,6 @@
   // block.
   LayoutPoint PhysicalLocation() const;
 
-  // Converts from a rect in the logical space of the InlineBox to one in the
-  // physical space of the containing block. The logical space of an InlineBox
-  // may be transposed for vertical text and flipped for right-to-left text.
-  void LogicalRectToPhysicalRect(LayoutRect&) const;
-
   // TODO(szager): The Rect versions should return a rect, not modify the
   // argument.
   void FlipForWritingMode(FloatRect&) const;
diff --git a/third_party/WebKit/Source/core/layout/line/InlineBoxTest.cpp b/third_party/WebKit/Source/core/layout/line/InlineBoxTest.cpp
deleted file mode 100644
index 099bea9..0000000
--- a/third_party/WebKit/Source/core/layout/line/InlineBoxTest.cpp
+++ /dev/null
@@ -1,46 +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 "core/layout/line/InlineBox.h"
-
-#include "core/layout/LayoutBlockFlow.h"
-#include "core/layout/LayoutTestHelper.h"
-
-namespace blink {
-
-using InlineBoxTest = RenderingTest;
-
-TEST_F(InlineBoxTest, LogicalRectToPhysicalRectNormal) {
-  SetBodyInnerHTML(
-      "<div id='div' style='width: 80px; height: 50px'>Test</div>");
-  LayoutBlockFlow* div = ToLayoutBlockFlow(GetLayoutObjectByElementId("div"));
-  InlineBox* inline_box = div->FirstLineBox();
-  LayoutRect rect(11, 22, 33, 44);
-  inline_box->LogicalRectToPhysicalRect(rect);
-  EXPECT_EQ(LayoutRect(11, 22, 33, 44), rect);
-}
-
-TEST_F(InlineBoxTest, LogicalRectToPhysicalRectVerticalRL) {
-  SetBodyInnerHTML(
-      "<div id='div' "
-      "style='writing-mode:vertical-rl; width: 80px; height: 50px'>Test</div>");
-  LayoutBlockFlow* div = ToLayoutBlockFlow(GetLayoutObjectByElementId("div"));
-  InlineBox* inline_box = div->FirstLineBox();
-  LayoutRect rect(11, 22, 33, 44);
-  inline_box->LogicalRectToPhysicalRect(rect);
-  EXPECT_EQ(LayoutRect(14, 11, 44, 33), rect);
-}
-
-TEST_F(InlineBoxTest, LogicalRectToPhysicalRectVerticalLR) {
-  SetBodyInnerHTML(
-      "<div id='div' "
-      "style='writing-mode:vertical-lr; width: 80px; height: 50px'>Test</div>");
-  LayoutBlockFlow* div = ToLayoutBlockFlow(GetLayoutObjectByElementId("div"));
-  InlineBox* inline_box = div->FirstLineBox();
-  LayoutRect rect(11, 22, 33, 44);
-  inline_box->LogicalRectToPhysicalRect(rect);
-  EXPECT_EQ(LayoutRect(22, 11, 44, 33), rect);
-}
-
-}  // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/shapes/ShapeOutsideInfo.h b/third_party/WebKit/Source/core/layout/shapes/ShapeOutsideInfo.h
index 76e094c..cb12ff17 100644
--- a/third_party/WebKit/Source/core/layout/shapes/ShapeOutsideInfo.h
+++ b/third_party/WebKit/Source/core/layout/shapes/ShapeOutsideInfo.h
@@ -143,6 +143,8 @@
     return GetInfoMap().at(&key);
   }
 
+  static bool IsEmpty() { return GetInfoMap().IsEmpty(); }
+
   void MarkShapeAsDirty() { shape_.reset(); }
   bool IsShapeDirty() { return !shape_.get(); }
   LayoutSize ShapeSize() const { return reference_box_logical_size_; }
diff --git a/third_party/WebKit/Source/core/loader/FrameLoader.cpp b/third_party/WebKit/Source/core/loader/FrameLoader.cpp
index 2ec640e0..8e0182a 100644
--- a/third_party/WebKit/Source/core/loader/FrameLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/FrameLoader.cpp
@@ -42,7 +42,6 @@
 #include "core/dom/Document.h"
 #include "core/dom/Element.h"
 #include "core/dom/TaskRunnerHelper.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/dom/ViewportDescription.h"
 #include "core/events/GestureEvent.h"
 #include "core/events/KeyboardEvent.h"
@@ -831,7 +830,7 @@
 
   FrameLoadRequest request(passed_request);
   request.GetResourceRequest().SetHasUserGesture(
-      UserGestureIndicator::ProcessingUserGesture());
+      Frame::HasTransientUserActivation(frame_));
 
   if (!PrepareRequestForThisFrame(request))
     return;
diff --git a/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp b/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
index dc7fcb4..761ce62 100644
--- a/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
+++ b/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
@@ -88,7 +88,7 @@
                       ("Navigation.Scheduled.MaybeCausedAbort",
                        ScheduledNavigationType::kScheduledLastEntry * 2));
 
-  int value = UserGestureIndicator::ProcessingUserGesture()
+  int value = Frame::HasTransientUserActivation(frame)
                   ? type + kScheduledLastEntry
                   : type;
   scheduled_navigation_clobber_histogram.Count(value);
@@ -417,7 +417,7 @@
   // create a new back/forward item. See https://webkit.org/b/42861 for the
   // original motivation for this.
   if (!target_frame->GetDocument()->LoadEventFinished() &&
-      !UserGestureIndicator::ProcessingUserGesture())
+      !Frame::HasTransientUserActivation(target_frame))
     return true;
 
   // Navigation of a subframe during loading of an ancestor frame does not
diff --git a/third_party/WebKit/Source/core/loader/ScheduledNavigation.cpp b/third_party/WebKit/Source/core/loader/ScheduledNavigation.cpp
index 89ac00e..0018dd2 100644
--- a/third_party/WebKit/Source/core/loader/ScheduledNavigation.cpp
+++ b/third_party/WebKit/Source/core/loader/ScheduledNavigation.cpp
@@ -4,7 +4,8 @@
 
 #include "core/loader/ScheduledNavigation.h"
 
-#include "core/dom/UserGestureIndicator.h"
+#include "core/frame/Frame.h"
+#include "core/frame/LocalFrame.h"
 
 namespace blink {
 
@@ -18,7 +19,8 @@
       origin_document_(origin_document),
       replaces_current_item_(replaces_current_item),
       is_location_change_(is_location_change) {
-  if (UserGestureIndicator::ProcessingUserGesture())
+  if (Frame::HasTransientUserActivation(
+          origin_document ? origin_document->GetFrame() : nullptr))
     user_gesture_token_ = UserGestureIndicator::CurrentToken();
 }
 
diff --git a/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp b/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp
index 550e562c..7f43aca 100644
--- a/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp
@@ -263,13 +263,13 @@
     return;
   }
 
-  for (const auto& task : event_with_tasks->Take()) {
+  for (auto& task : event_with_tasks->Take()) {
     // Store the program counter where the task is posted from, and alias
     // it to ensure it is stored in the crash dump.
     const void* program_counter = task.location_.program_counter();
     WTF::debug::Alias(&program_counter);
 
-    task.task_();
+    std::move(task.task_).Run();
   }
 }
 
diff --git a/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.cpp b/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.cpp
index c75ed1bd..d1e76be 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.cpp
+++ b/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.cpp
@@ -13,11 +13,14 @@
 
 namespace {
 
-bool WasModuleLoadSuccessful(Resource* resource,
-                             ConsoleMessage** error_message) {
+bool WasModuleLoadSuccessful(
+    Resource* resource,
+    HeapVector<Member<ConsoleMessage>>* error_messages) {
   // Implements conditions in Step 7 of
   // https://html.spec.whatwg.org/#fetch-a-single-module-script
 
+  DCHECK(error_messages);
+
   // - response's type is "error"
   if (!resource || resource->ErrorOccurred()) {
     return false;
@@ -38,17 +41,15 @@
   // MimeType() may be rewritten by mime sniffer.
   if (!MIMETypeRegistry::IsSupportedJavaScriptMIMEType(
           response.HttpContentType())) {
-    if (error_message) {
-      String message =
-          "Failed to load module script: The server responded with a "
-          "non-JavaScript MIME type of \"" +
-          response.HttpContentType() +
-          "\". Strict MIME type checking is enforced for module scripts per "
-          "HTML spec.";
-      *error_message = ConsoleMessage::CreateForRequest(
-          kJSMessageSource, kErrorMessageLevel, message,
-          response.Url().GetString(), resource->Identifier());
-    }
+    String message =
+        "Failed to load module script: The server responded with a "
+        "non-JavaScript MIME type of \"" +
+        response.HttpContentType() +
+        "\". Strict MIME type checking is enforced for module scripts per "
+        "HTML spec.";
+    error_messages->push_back(ConsoleMessage::CreateForRequest(
+        kJSMessageSource, kErrorMessageLevel, message,
+        response.Url().GetString(), resource->Identifier()));
     return false;
   }
 
@@ -86,9 +87,10 @@
   ClearResource();
 
   ScriptResource* script_resource = ToScriptResource(resource);
-  ConsoleMessage* error_message = nullptr;
-  if (!WasModuleLoadSuccessful(script_resource, &error_message)) {
-    Finalize(WTF::nullopt, error_message);
+
+  HeapVector<Member<ConsoleMessage>> error_messages;
+  if (!WasModuleLoadSuccessful(script_resource, &error_messages)) {
+    Finalize(WTF::nullopt, error_messages);
     return;
   }
 
@@ -96,14 +98,14 @@
       script_resource->GetResponse().Url(), script_resource->SourceText(),
       script_resource->GetResourceRequest().GetFetchCredentialsMode(),
       script_resource->CalculateAccessControlStatus());
-  Finalize(params, nullptr /* error_message */);
+  Finalize(params, error_messages);
 }
 
 void DocumentModuleScriptFetcher::Finalize(
     const WTF::Optional<ModuleScriptCreationParams>& params,
-    ConsoleMessage* error_message) {
+    const HeapVector<Member<ConsoleMessage>>& error_messages) {
   was_fetched_ = true;
-  NotifyFetchFinished(params, error_message);
+  NotifyFetchFinished(params, error_messages);
 }
 
 void DocumentModuleScriptFetcher::Trace(blink::Visitor* visitor) {
diff --git a/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.h b/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.h
index 063675f2..55156ea 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.h
+++ b/third_party/WebKit/Source/core/loader/modulescript/DocumentModuleScriptFetcher.h
@@ -44,7 +44,7 @@
 
  private:
   void Finalize(const WTF::Optional<ModuleScriptCreationParams>&,
-                ConsoleMessage* error_message);
+                const HeapVector<Member<ConsoleMessage>>& error_messages);
 
   Member<ResourceFetcher> fetcher_;
   bool was_fetched_ = false;
diff --git a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptFetcher.cpp b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptFetcher.cpp
index 0a81d2b..b1dcd60 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptFetcher.cpp
+++ b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptFetcher.cpp
@@ -12,8 +12,8 @@
 
 void ModuleScriptFetcher::NotifyFetchFinished(
     const WTF::Optional<ModuleScriptCreationParams>& params,
-    ConsoleMessage* error_message) {
-  client_->NotifyFetchFinished(params, error_message);
+    const HeapVector<Member<ConsoleMessage>>& error_messages) {
+  client_->NotifyFetchFinished(params, error_messages);
 }
 
 void ModuleScriptFetcher::SetClient(Client* client) {
diff --git a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptFetcher.h b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptFetcher.h
index cadc14f9..ca04564 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptFetcher.h
+++ b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptFetcher.h
@@ -7,6 +7,7 @@
 
 #include "core/CoreExport.h"
 #include "core/loader/modulescript/ModuleScriptCreationParams.h"
+#include "platform/heap/HeapAllocator.h"
 #include "platform/loader/fetch/FetchParameters.h"
 #include "platform/wtf/Optional.h"
 
@@ -24,7 +25,7 @@
    public:
     virtual void NotifyFetchFinished(
         const WTF::Optional<ModuleScriptCreationParams>&,
-        ConsoleMessage* error_message) = 0;
+        const HeapVector<Member<ConsoleMessage>>& error_messages) = 0;
   };
 
   ModuleScriptFetcher() = default;
@@ -38,7 +39,7 @@
 
  protected:
   void NotifyFetchFinished(const WTF::Optional<ModuleScriptCreationParams>&,
-                           ConsoleMessage*);
+                           const HeapVector<Member<ConsoleMessage>>&);
 
   void SetClient(Client*);
 
diff --git a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.cpp b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.cpp
index fc067606..8ddb6655 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.cpp
@@ -171,7 +171,7 @@
 
 void ModuleScriptLoader::NotifyFetchFinished(
     const WTF::Optional<ModuleScriptCreationParams>& params,
-    ConsoleMessage* error_message) {
+    const HeapVector<Member<ConsoleMessage>>& error_messages) {
   // [nospec] Abort the steps if the browsing context is discarded.
   if (!modulator_->HasValidContext()) {
     AdvanceState(State::kFinished);
@@ -184,7 +184,7 @@
   // null, asynchronously complete this algorithm with null, and abort these
   // steps." [spec text]
   if (!params.has_value()) {
-    if (error_message) {
+    for (ConsoleMessage* error_message : error_messages) {
       ExecutionContext::From(modulator_->GetScriptState())
           ->AddConsoleMessage(error_message);
     }
diff --git a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.h b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.h
index 69fe818e..48e72ab 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.h
+++ b/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoader.h
@@ -56,8 +56,9 @@
              ModuleGraphLevel);
 
   // Implements ModuleScriptFetcher::Client.
-  void NotifyFetchFinished(const WTF::Optional<ModuleScriptCreationParams>&,
-                           ConsoleMessage* error_message) override;
+  void NotifyFetchFinished(
+      const WTF::Optional<ModuleScriptCreationParams>&,
+      const HeapVector<Member<ConsoleMessage>>& error_messages) override;
 
   bool IsInitialState() const { return state_ == State::kInitial; }
   bool HasFinished() const { return state_ == State::kFinished; }
diff --git a/third_party/WebKit/Source/core/loader/modulescript/WorkletModuleScriptFetcher.cpp b/third_party/WebKit/Source/core/loader/modulescript/WorkletModuleScriptFetcher.cpp
index e26357236..5cd5f209 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/WorkletModuleScriptFetcher.cpp
+++ b/third_party/WebKit/Source/core/loader/modulescript/WorkletModuleScriptFetcher.cpp
@@ -27,17 +27,19 @@
 
 void WorkletModuleScriptFetcher::OnRead(
     const ModuleScriptCreationParams& params) {
-  Finalize(params, nullptr /* error_message */);
+  HeapVector<Member<ConsoleMessage>> error_messages;
+  Finalize(params, error_messages);
 }
 
 void WorkletModuleScriptFetcher::OnFailed() {
-  Finalize(WTF::nullopt, nullptr /* error_message */);
+  HeapVector<Member<ConsoleMessage>> error_messages;
+  Finalize(WTF::nullopt, error_messages);
 }
 
 void WorkletModuleScriptFetcher::Finalize(
     const WTF::Optional<ModuleScriptCreationParams>& params,
-    ConsoleMessage* error_message) {
-  NotifyFetchFinished(params, error_message);
+    const HeapVector<Member<ConsoleMessage>>& error_messages) {
+  NotifyFetchFinished(params, error_messages);
 }
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/core/loader/modulescript/WorkletModuleScriptFetcher.h b/third_party/WebKit/Source/core/loader/modulescript/WorkletModuleScriptFetcher.h
index 93fc9c1..4405e1b 100644
--- a/third_party/WebKit/Source/core/loader/modulescript/WorkletModuleScriptFetcher.h
+++ b/third_party/WebKit/Source/core/loader/modulescript/WorkletModuleScriptFetcher.h
@@ -39,7 +39,7 @@
 
  private:
   void Finalize(const WTF::Optional<ModuleScriptCreationParams>&,
-                ConsoleMessage* error_message);
+                const HeapVector<Member<ConsoleMessage>>& error_messages);
 
   Member<WorkletModuleResponsesMapProxy> module_responses_map_proxy_;
 };
diff --git a/third_party/WebKit/Source/core/page/ChromeClient.h b/third_party/WebKit/Source/core/page/ChromeClient.h
index fcafa5a6..08f47db 100644
--- a/third_party/WebKit/Source/core/page/ChromeClient.h
+++ b/third_party/WebKit/Source/core/page/ChromeClient.h
@@ -354,7 +354,7 @@
   virtual void RequestDecode(LocalFrame*,
                              const PaintImage& image,
                              WTF::Function<void(bool)> callback) {
-    callback(false);
+    std::move(callback).Run(false);
   }
 
   void Trace(blink::Visitor*);
diff --git a/third_party/WebKit/Source/core/page/CreateWindow.cpp b/third_party/WebKit/Source/core/page/CreateWindow.cpp
index c4abfa0a..e2e74ea 100644
--- a/third_party/WebKit/Source/core/page/CreateWindow.cpp
+++ b/third_party/WebKit/Source/core/page/CreateWindow.cpp
@@ -28,7 +28,6 @@
 
 #include "bindings/core/v8/ExceptionState.h"
 #include "core/dom/Document.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/events/UIEventWithKeyState.h"
 #include "core/exported/WebViewImpl.h"
 #include "core/frame/FrameClient.h"
@@ -453,7 +452,7 @@
   // Records HasUserGesture before the value is invalidated inside
   // createWindow(LocalFrame& openerFrame, ...).
   // This value will be set in ResourceRequest loaded in a new LocalFrame.
-  bool has_user_gesture = UserGestureIndicator::ProcessingUserGesture();
+  bool has_user_gesture = Frame::HasTransientUserActivation(&opener_frame);
 
   // We pass the opener frame for the lookupFrame in case the active frame is
   // different from the opener frame, and the name references a frame relative
diff --git a/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.cpp b/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.cpp
index 99be17f..1f899c57 100644
--- a/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.cpp
@@ -279,6 +279,21 @@
   context.FillRect(abs_rect, Color::kWhite);
 }
 
+void ScrollableAreaPainter::PaintScrollbar(const Scrollbar& scrollbar,
+                                           GraphicsContext& context,
+                                           const IntRect& clip) {
+  // Frame scrollbars are painted in the space of the containing frame, not the
+  // local space of the scrollbar.
+  const IntRect& scrollbar_rect = scrollbar.FrameRect();
+  IntRect transformed_clip = clip;
+  transformed_clip.MoveBy(scrollbar_rect.Location());
+
+  AffineTransform translation =
+      AffineTransform::Translation(-scrollbar_rect.X(), -scrollbar_rect.Y());
+  TransformRecorder transform_recorder(context, scrollbar, translation);
+  scrollbar.Paint(context, CullRect(transformed_clip));
+}
+
 PaintLayerScrollableArea& ScrollableAreaPainter::GetScrollableArea() const {
   return *scrollable_area_;
 }
diff --git a/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.h b/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.h
index 3da17dc..936ad11 100644
--- a/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.h
+++ b/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.h
@@ -15,6 +15,7 @@
 class IntPoint;
 class IntRect;
 class PaintLayerScrollableArea;
+class Scrollbar;
 
 class ScrollableAreaPainter {
   STACK_ALLOCATED();
@@ -35,6 +36,9 @@
   void PaintScrollCorner(GraphicsContext&,
                          const IntPoint& paint_offset,
                          const CullRect&);
+  static void PaintScrollbar(const Scrollbar&,
+                             GraphicsContext&,
+                             const IntRect& clip);
 
  private:
   void DrawPlatformResizerImage(GraphicsContext&, IntRect resizer_corner_rect);
diff --git a/third_party/WebKit/Source/core/paint/ThemePainterDefault.cpp b/third_party/WebKit/Source/core/paint/ThemePainterDefault.cpp
index f1bcfc3..ec4d541cc 100644
--- a/third_party/WebKit/Source/core/paint/ThemePainterDefault.cpp
+++ b/third_party/WebKit/Source/core/paint/ThemePainterDefault.cpp
@@ -442,8 +442,9 @@
   if (!cancel_button_object.GetNode())
     return false;
   Node* input = cancel_button_object.GetNode()->OwnerShadowHost();
-  const LayoutObject& base_layout_object =
-      input ? *input->GetLayoutObject() : cancel_button_object;
+  const LayoutObject& base_layout_object = input && input->GetLayoutObject()
+                                               ? *input->GetLayoutObject()
+                                               : cancel_button_object;
   if (!base_layout_object.IsBox())
     return false;
   const LayoutBox& input_layout_box = ToLayoutBox(base_layout_object);
diff --git a/third_party/WebKit/Source/core/paint/ThemePainterMac.mm b/third_party/WebKit/Source/core/paint/ThemePainterMac.mm
index 050c70e..3783dc8 100644
--- a/third_party/WebKit/Source/core/paint/ThemePainterMac.mm
+++ b/third_party/WebKit/Source/core/paint/ThemePainterMac.mm
@@ -551,21 +551,16 @@
   return false;
 }
 
-bool ThemePainterMac::PaintSearchFieldCancelButton(const LayoutObject& o,
-                                                   const PaintInfo& paint_info,
-                                                   const IntRect& r) {
-  if (!o.GetNode())
-    return false;
-  Element* input = o.GetNode()->OwnerShadowHost();
-  if (!input)
-    input = ToElement(o.GetNode());
-
-  if (!input->GetLayoutObject()->IsBox())
+bool ThemePainterMac::PaintSearchFieldCancelButton(
+    const LayoutObject& cancel_button,
+    const PaintInfo& paint_info,
+    const IntRect& r) {
+  if (!cancel_button.GetNode())
     return false;
 
   GraphicsContextStateSaver state_saver(paint_info.context);
 
-  float zoom_level = o.StyleRef().EffectiveZoom();
+  float zoom_level = cancel_button.StyleRef().EffectiveZoom();
   FloatRect unzoomed_rect(r);
   if (zoom_level != 1.0f) {
     unzoomed_rect.SetWidth(unzoomed_rect.Width() / zoom_level);
@@ -577,7 +572,7 @@
 
   Color fill_color(200, 200, 200);
 
-  if (LayoutTheme::IsPressed(o.GetNode())) {
+  if (LayoutTheme::IsPressed(cancel_button.GetNode())) {
     Color tint_color(0, 0, 0, 32);
     fill_color = fill_color.Blend(tint_color);
   }
diff --git a/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMapping.cpp b/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMapping.cpp
index 1b54c4e2..68586a7b 100644
--- a/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMapping.cpp
+++ b/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMapping.cpp
@@ -3204,21 +3204,6 @@
   }
 }
 
-static void PaintScrollbar(const Scrollbar* scrollbar,
-                           GraphicsContext& context,
-                           const IntRect& clip) {
-  if (!scrollbar)
-    return;
-
-  const IntRect& scrollbar_rect = scrollbar->FrameRect();
-  TransformRecorder transform_recorder(
-      context, *scrollbar,
-      AffineTransform::Translation(-scrollbar_rect.X(), -scrollbar_rect.Y()));
-  IntRect transformed_clip = clip;
-  transformed_clip.MoveBy(scrollbar_rect.Location());
-  scrollbar->Paint(context, CullRect(transformed_clip));
-}
-
 // TODO(eseckler): Make recording distance configurable, e.g. for use in
 // headless, where we would like to record an exact area.
 // Note however that the minimum value for this constant is the size of a
@@ -3505,14 +3490,13 @@
   // frame. For painting frame ScrollableAreas, see
   // PaintLayerCompositor::paintContents.
 
-  FloatRect layer_bounds(FloatPoint(), graphics_layer->Size());
   PaintLayerScrollableArea* scrollable_area = owning_layer_.GetScrollableArea();
   if (graphics_layer == LayerForHorizontalScrollbar()) {
-    PaintScrollbar(scrollable_area->HorizontalScrollbar(), context,
-                   interest_rect);
+    if (const Scrollbar* scrollbar = scrollable_area->HorizontalScrollbar())
+      ScrollableAreaPainter::PaintScrollbar(*scrollbar, context, interest_rect);
   } else if (graphics_layer == LayerForVerticalScrollbar()) {
-    PaintScrollbar(scrollable_area->VerticalScrollbar(), context,
-                   interest_rect);
+    if (const Scrollbar* scrollbar = scrollable_area->VerticalScrollbar())
+      ScrollableAreaPainter::PaintScrollbar(*scrollbar, context, interest_rect);
   } else if (graphics_layer == LayerForScrollCorner()) {
     // Note that scroll corners always paint into local space, whereas
     // scrollbars paint in the space of their containing frame.
diff --git a/third_party/WebKit/Source/core/paint/compositing/PaintLayerCompositor.cpp b/third_party/WebKit/Source/core/paint/compositing/PaintLayerCompositor.cpp
index 38eea8d..29b0a3f 100644
--- a/third_party/WebKit/Source/core/paint/compositing/PaintLayerCompositor.cpp
+++ b/third_party/WebKit/Source/core/paint/compositing/PaintLayerCompositor.cpp
@@ -47,6 +47,7 @@
 #include "core/page/scrolling/TopDocumentRootScrollerController.h"
 #include "core/paint/FramePainter.h"
 #include "core/paint/ObjectPaintInvalidator.h"
+#include "core/paint/ScrollableAreaPainter.h"
 #include "core/paint/TransformRecorder.h"
 #include "core/paint/compositing/CompositedLayerMapping.h"
 #include "core/paint/compositing/CompositingInputsUpdater.h"
@@ -942,21 +943,6 @@
   return layer->StackingNode()->HasNegativeZOrderList();
 }
 
-static void PaintScrollbar(const Scrollbar* scrollbar,
-                           GraphicsContext& context,
-                           const IntRect& clip) {
-  // Frame scrollbars are painted in the space of the containing frame, not the
-  // local space of the scrollbar.
-  const IntPoint& paint_offset = scrollbar->FrameRect().Location();
-  IntRect transformed_clip = clip;
-  transformed_clip.MoveBy(paint_offset);
-
-  AffineTransform translation;
-  translation.Translate(-paint_offset.X(), -paint_offset.Y());
-  TransformRecorder transform_recorder(context, *scrollbar, translation);
-  scrollbar->Paint(context, CullRect(transformed_clip));
-}
-
 IntRect PaintLayerCompositor::ComputeInterestRect(
     const GraphicsLayer* graphics_layer,
     const IntRect&) const {
@@ -976,7 +962,7 @@
     return;
 
   if (scrollbar) {
-    PaintScrollbar(scrollbar, context, interest_rect);
+    ScrollableAreaPainter::PaintScrollbar(*scrollbar, context, interest_rect);
   } else {
     FramePainter(*layout_view_.GetFrameView())
         .PaintScrollCorner(context, interest_rect);
diff --git a/third_party/WebKit/Source/core/svg/SVGURIReference.cpp b/third_party/WebKit/Source/core/svg/SVGURIReference.cpp
index e135aca9..ecedcc1 100644
--- a/third_party/WebKit/Source/core/svg/SVGURIReference.cpp
+++ b/third_party/WebKit/Source/core/svg/SVGURIReference.cpp
@@ -40,8 +40,8 @@
         closure_(std::move(closure)) {}
 
  private:
-  void IdTargetChanged() override { closure_(); }
-  WTF::Closure closure_;
+  void IdTargetChanged() override { closure_.Run(); }
+  WTF::RepeatingClosure closure_;
 };
 }
 
diff --git a/third_party/WebKit/Source/core/testing/Internals.cpp b/third_party/WebKit/Source/core/testing/Internals.cpp
index 5ba096f..ddede8d 100644
--- a/third_party/WebKit/Source/core/testing/Internals.cpp
+++ b/third_party/WebKit/Source/core/testing/Internals.cpp
@@ -415,6 +415,16 @@
   doc->GetLayoutViewItem().ClearHitTestCache();
 }
 
+Element* Internals::innerEditorElement(Element* container,
+                                       ExceptionState& exception_state) const {
+  if (IsTextControlElement(container))
+    return ToTextControlElement(container)->InnerEditorElement();
+
+  exception_state.ThrowDOMException(kNotSupportedError,
+                                    "Not a text control element.");
+  return nullptr;
+}
+
 bool Internals::isPreloaded(const String& url) {
   return isPreloadedBy(url, document_);
 }
diff --git a/third_party/WebKit/Source/core/testing/Internals.h b/third_party/WebKit/Source/core/testing/Internals.h
index 21dc985..de9df837 100644
--- a/third_party/WebKit/Source/core/testing/Internals.h
+++ b/third_party/WebKit/Source/core/testing/Internals.h
@@ -164,6 +164,8 @@
                             ExceptionState&) const;
   void clearHitTestCache(Document*, ExceptionState&) const;
 
+  Element* innerEditorElement(Element* container, ExceptionState&) const;
+
   String visiblePlaceholder(Element*);
   bool isValidationMessageVisible(Element*);
   void selectColorInColorChooser(Element*, const String& color_value);
diff --git a/third_party/WebKit/Source/core/testing/Internals.idl b/third_party/WebKit/Source/core/testing/Internals.idl
index 26f7e5ce..9ed64ed7 100644
--- a/third_party/WebKit/Source/core/testing/Internals.idl
+++ b/third_party/WebKit/Source/core/testing/Internals.idl
@@ -72,6 +72,9 @@
     [RaisesException] Element? elementFromPoint(Document document, double x, double y, boolean ignoreClipping, boolean allowChildFrameContent);
     [RaisesException] void clearHitTestCache(Document document);
 
+    // Allows inspection of the inner editor node.
+    [RaisesException] Element? innerEditorElement(Element container);
+
     // Animation testing.
     [RaisesException] void pauseAnimations(double pauseTime);
     bool isCompositedAnimation(Animation animation);
diff --git a/third_party/WebKit/Source/core/workers/WorkerScriptLoader.cpp b/third_party/WebKit/Source/core/workers/WorkerScriptLoader.cpp
index 8586793..0cae84b 100644
--- a/third_party/WebKit/Source/core/workers/WorkerScriptLoader.cpp
+++ b/third_party/WebKit/Source/core/workers/WorkerScriptLoader.cpp
@@ -164,7 +164,7 @@
   }
 
   if (response_callback_)
-    response_callback_();
+    std::move(response_callback_).Run();
 }
 
 void WorkerScriptLoader::DidReceiveData(const char* data, unsigned len) {
@@ -239,8 +239,7 @@
   if (!finished_callback_)
     return;
 
-  WTF::Closure callback = std::move(finished_callback_);
-  callback();
+  std::move(finished_callback_).Run();
 }
 
 void WorkerScriptLoader::ProcessContentSecurityPolicy(
diff --git a/third_party/WebKit/Source/core/workers/WorkerThread.cpp b/third_party/WebKit/Source/core/workers/WorkerThread.cpp
index 3161f0d..a6f70fda 100644
--- a/third_party/WebKit/Source/core/workers/WorkerThread.cpp
+++ b/third_party/WebKit/Source/core/workers/WorkerThread.cpp
@@ -244,14 +244,14 @@
     worker_inspector_controller_->FlushProtocolNotifications();
   paused_in_debugger_ = true;
   ThreadDebugger::IdleStarted(GetIsolate());
-  CrossThreadClosure task;
   do {
-    task =
+    CrossThreadClosure task =
         inspector_task_runner_->TakeNextTask(InspectorTaskRunner::kWaitForTask);
-    if (task)
-      task();
+    if (!task)
+      break;
+    std::move(task).Run();
     // Keep waiting until execution is resumed.
-  } while (task && paused_in_debugger_);
+  } while (paused_in_debugger_);
   ThreadDebugger::IdleFinished(GetIsolate());
 }
 
@@ -521,7 +521,7 @@
         CustomCountHistogram, scoped_us_counter,
         ("WorkerThread.DebuggerTask.Time", 0, 10000000, 50));
     ScopedUsHistogramTimer timer(scoped_us_counter);
-    task();
+    std::move(task).Run();
   }
   ThreadDebugger::IdleStarted(GetIsolate());
   {
@@ -535,7 +535,7 @@
   CrossThreadClosure task = inspector_task_runner_->TakeNextTask(
       InspectorTaskRunner::kDontWaitForTask);
   if (task)
-    task();
+    std::move(task).Run();
 }
 
 void WorkerThread::SetThreadState(const MutexLocker& lock,
diff --git a/third_party/WebKit/Source/core/workers/WorkletModuleResponsesMap.cpp b/third_party/WebKit/Source/core/workers/WorkletModuleResponsesMap.cpp
index 21a08cf..4c2f2229 100644
--- a/third_party/WebKit/Source/core/workers/WorkletModuleResponsesMap.cpp
+++ b/third_party/WebKit/Source/core/workers/WorkletModuleResponsesMap.cpp
@@ -50,13 +50,13 @@
   // https://drafts.css-houdini.org/worklets/#fetch-a-worklet-script
   void NotifyFetchFinished(
       const WTF::Optional<ModuleScriptCreationParams>& params,
-      ConsoleMessage* error_message) override {
+      const HeapVector<Member<ConsoleMessage>>& error_messages) override {
     // The entry can be disposed of during the resource fetch.
     if (state_ == State::kFailed)
       return;
 
     if (!params) {
-      // TODO(nhiroki): Add |error_message| to the context's message storage.
+      // TODO(nhiroki): Add |error_messages| to the context's message storage.
       NotifyFailure();
       return;
     }
diff --git a/third_party/WebKit/Source/modules/BUILD.gn b/third_party/WebKit/Source/modules/BUILD.gn
index 0c75c845..1a295eae 100644
--- a/third_party/WebKit/Source/modules/BUILD.gn
+++ b/third_party/WebKit/Source/modules/BUILD.gn
@@ -89,6 +89,7 @@
     "//third_party/WebKit/Source/bindings/modules/v8:bindings_modules_impl",
     "//third_party/WebKit/Source/core",
     "//third_party/WebKit/Source/modules/accessibility",
+    "//third_party/WebKit/Source/modules/animationworklet",
     "//third_party/WebKit/Source/modules/app_banner",
     "//third_party/WebKit/Source/modules/audio_output_devices",
     "//third_party/WebKit/Source/modules/background_fetch",
@@ -100,7 +101,6 @@
     "//third_party/WebKit/Source/modules/budget",
     "//third_party/WebKit/Source/modules/cachestorage",
     "//third_party/WebKit/Source/modules/canvas",
-    "//third_party/WebKit/Source/modules/compositorworker",
     "//third_party/WebKit/Source/modules/cookie_store",
     "//third_party/WebKit/Source/modules/credentialmanager",
     "//third_party/WebKit/Source/modules/crypto",
@@ -244,14 +244,14 @@
     "accessibility/AccessibilityObjectModelTest.cpp",
     "accessibility/testing/AccessibilityTest.cpp",
     "accessibility/testing/AccessibilityTest.h",
+    "animationworklet/AnimationWorkletGlobalScopeTest.cpp",
+    "animationworklet/AnimationWorkletThreadTest.cpp",
     "background_fetch/BackgroundFetchManagerTest.cpp",
     "cachestorage/CacheTest.cpp",
     "canvas/canvas2d/CanvasRenderingContext2DAPITest.cpp",
     "canvas/canvas2d/CanvasRenderingContext2DTest.cpp",
     "canvas/htmlcanvas/HTMLCanvasElementModuleTest.cpp",
     "canvas/offscreencanvas/OffscreenCanvasTest.cpp",
-    "compositorworker/AnimationWorkletGlobalScopeTest.cpp",
-    "compositorworker/AnimationWorkletThreadTest.cpp",
     "credentialmanager/CredentialsContainerTest.cpp",
     "credentialmanager/PasswordCredentialTest.cpp",
     "csspaint/PaintRenderingContext2DTest.cpp",
diff --git a/third_party/WebKit/Source/modules/ModulesInitializer.cpp b/third_party/WebKit/Source/modules/ModulesInitializer.cpp
index aac4c86..d00132c 100644
--- a/third_party/WebKit/Source/modules/ModulesInitializer.cpp
+++ b/third_party/WebKit/Source/modules/ModulesInitializer.cpp
@@ -26,6 +26,7 @@
 #include "modules/EventModulesFactory.h"
 #include "modules/accessibility/AXObjectCacheImpl.h"
 #include "modules/accessibility/InspectorAccessibilityAgent.h"
+#include "modules/animationworklet/AnimationWorkletThread.h"
 #include "modules/app_banner/AppBannerController.h"
 #include "modules/audio_output_devices/AudioOutputDeviceClient.h"
 #include "modules/audio_output_devices/AudioOutputDeviceClientImpl.h"
@@ -34,7 +35,6 @@
 #include "modules/canvas/canvas2d/CanvasRenderingContext2D.h"
 #include "modules/canvas/imagebitmap/ImageBitmapRenderingContext.h"
 #include "modules/canvas/offscreencanvas2d/OffscreenCanvasRenderingContext2D.h"
-#include "modules/compositorworker/AnimationWorkletThread.h"
 #include "modules/credentialmanager/CredentialManagerClient.h"
 #include "modules/csspaint/CSSPaintImageGeneratorImpl.h"
 #include "modules/device_orientation/DeviceMotionController.h"
diff --git a/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp b/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp
index 51ed6f14..c3d3f67 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp
+++ b/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp
@@ -1272,7 +1272,7 @@
       CreatePermissionDescriptor(
           mojom::blink::PermissionName::ACCESSIBILITY_EVENTS),
       document_->GetExecutionContext()->GetSecurityOrigin(),
-      UserGestureIndicator::ProcessingUserGesture(),
+      Frame::HasTransientUserActivation(document_->GetFrame()),
       ConvertToBaseCallback(WTF::Bind(
           &AXObjectCacheImpl::OnPermissionStatusChange, WrapPersistent(this))));
 }
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorklet.cpp b/third_party/WebKit/Source/modules/animationworklet/AnimationWorklet.cpp
similarity index 86%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorklet.cpp
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorklet.cpp
index 0c0a745..8d4a146 100644
--- a/third_party/WebKit/Source/modules/compositorworker/AnimationWorklet.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimationWorklet.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 "modules/compositorworker/AnimationWorklet.h"
+#include "modules/animationworklet/AnimationWorklet.h"
 
 #include "bindings/core/v8/V8BindingForCore.h"
 #include "core/dom/AnimationWorkletProxyClient.h"
@@ -10,9 +10,9 @@
 #include "core/frame/LocalFrame.h"
 #include "core/page/ChromeClient.h"
 #include "core/workers/WorkerClients.h"
-#include "modules/compositorworker/AnimationWorkletMessagingProxy.h"
-#include "modules/compositorworker/AnimationWorkletProxyClientImpl.h"
-#include "modules/compositorworker/AnimationWorkletThread.h"
+#include "modules/animationworklet/AnimationWorkletMessagingProxy.h"
+#include "modules/animationworklet/AnimationWorkletProxyClientImpl.h"
+#include "modules/animationworklet/AnimationWorkletThread.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorklet.h b/third_party/WebKit/Source/modules/animationworklet/AnimationWorklet.h
similarity index 100%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorklet.h
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorklet.h
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletGlobalScope.cpp b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletGlobalScope.cpp
similarity index 98%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorkletGlobalScope.cpp
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorkletGlobalScope.cpp
index 8034ffa..4869dfcd 100644
--- a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletGlobalScope.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletGlobalScope.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 "modules/compositorworker/AnimationWorkletGlobalScope.h"
+#include "modules/animationworklet/AnimationWorkletGlobalScope.h"
 
 #include "platform/weborigin/SecurityOrigin.h"
 
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletGlobalScope.h b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletGlobalScope.h
similarity index 96%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorkletGlobalScope.h
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorkletGlobalScope.h
index e95bb0d..a91bc8c 100644
--- a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletGlobalScope.h
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletGlobalScope.h
@@ -8,8 +8,8 @@
 #include "bindings/core/v8/ScriptValue.h"
 #include "core/workers/ThreadedWorkletGlobalScope.h"
 #include "modules/ModulesExport.h"
-#include "modules/compositorworker/Animator.h"
-#include "modules/compositorworker/AnimatorDefinition.h"
+#include "modules/animationworklet/Animator.h"
+#include "modules/animationworklet/AnimatorDefinition.h"
 #include "platform/bindings/ScriptWrappable.h"
 #include "platform/graphics/CompositorAnimatorsState.h"
 
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletGlobalScope.idl b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletGlobalScope.idl
similarity index 100%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorkletGlobalScope.idl
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorkletGlobalScope.idl
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletGlobalScopeTest.cpp b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletGlobalScopeTest.cpp
similarity index 97%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorkletGlobalScopeTest.cpp
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorkletGlobalScopeTest.cpp
index b32e3512..a0efbff0 100644
--- a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletGlobalScopeTest.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletGlobalScopeTest.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 "modules/compositorworker/AnimationWorkletGlobalScope.h"
+#include "modules/animationworklet/AnimationWorkletGlobalScope.h"
 
 #include "bindings/core/v8/ExceptionState.h"
 #include "bindings/core/v8/ScriptModule.h"
@@ -13,10 +13,10 @@
 #include "core/dom/TaskRunnerHelper.h"
 #include "core/workers/GlobalScopeCreationParams.h"
 #include "core/workers/WorkerReportingProxy.h"
-#include "modules/compositorworker/AnimationWorklet.h"
-#include "modules/compositorworker/AnimationWorkletThread.h"
-#include "modules/compositorworker/Animator.h"
-#include "modules/compositorworker/AnimatorDefinition.h"
+#include "modules/animationworklet/AnimationWorklet.h"
+#include "modules/animationworklet/AnimationWorkletThread.h"
+#include "modules/animationworklet/Animator.h"
+#include "modules/animationworklet/AnimatorDefinition.h"
 #include "platform/CrossThreadFunctional.h"
 #include "platform/WaitableEvent.h"
 #include "platform/loader/fetch/AccessControlStatus.h"
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletMessagingProxy.cpp b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletMessagingProxy.cpp
similarity index 88%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorkletMessagingProxy.cpp
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorkletMessagingProxy.cpp
index 95a4453..c82cf55 100644
--- a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletMessagingProxy.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletMessagingProxy.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 "modules/compositorworker/AnimationWorkletMessagingProxy.h"
+#include "modules/animationworklet/AnimationWorkletMessagingProxy.h"
 
 #include "core/workers/ThreadedWorkletObjectProxy.h"
 #include "core/workers/WorkerClients.h"
-#include "modules/compositorworker/AnimationWorkletThread.h"
+#include "modules/animationworklet/AnimationWorkletThread.h"
 
 namespace blink {
 
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletMessagingProxy.h b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletMessagingProxy.h
similarity index 100%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorkletMessagingProxy.h
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorkletMessagingProxy.h
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletProxyClientImpl.cpp b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletProxyClientImpl.cpp
similarity index 96%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorkletProxyClientImpl.cpp
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorkletProxyClientImpl.cpp
index 142d93e..dc92813 100644
--- a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletProxyClientImpl.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletProxyClientImpl.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 "modules/compositorworker/AnimationWorkletProxyClientImpl.h"
+#include "modules/animationworklet/AnimationWorkletProxyClientImpl.h"
 
 #include "core/animation/CompositorMutatorImpl.h"
 #include "core/dom/Document.h"
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletProxyClientImpl.h b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletProxyClientImpl.h
similarity index 96%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorkletProxyClientImpl.h
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorkletProxyClientImpl.h
index c27b1c64..34281fa 100644
--- a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletProxyClientImpl.h
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletProxyClientImpl.h
@@ -8,7 +8,7 @@
 #include "core/animation/CompositorAnimator.h"
 #include "core/dom/AnimationWorkletProxyClient.h"
 #include "modules/ModulesExport.h"
-#include "modules/compositorworker/AnimationWorkletGlobalScope.h"
+#include "modules/animationworklet/AnimationWorkletGlobalScope.h"
 #include "platform/heap/Handle.h"
 #include "platform/wtf/Noncopyable.h"
 
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletThread.cpp b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThread.cpp
similarity index 95%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorkletThread.cpp
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThread.cpp
index a1e78d5f..454b6a5 100644
--- a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletThread.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThread.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 "modules/compositorworker/AnimationWorkletThread.h"
+#include "modules/animationworklet/AnimationWorkletThread.h"
 
 #include <memory>
 #include "core/loader/ThreadableLoadingContext.h"
 #include "core/workers/GlobalScopeCreationParams.h"
 #include "core/workers/WorkerBackingThread.h"
 #include "core/workers/WorkletThreadHolder.h"
-#include "modules/compositorworker/AnimationWorkletGlobalScope.h"
+#include "modules/animationworklet/AnimationWorkletGlobalScope.h"
 #include "platform/CrossThreadFunctional.h"
 #include "platform/WebThreadSupportingGC.h"
 #include "platform/instrumentation/tracing/TraceEvent.h"
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletThread.h b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThread.h
similarity index 100%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorkletThread.h
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThread.h
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletThreadTest.cpp b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThreadTest.cpp
similarity index 99%
rename from third_party/WebKit/Source/modules/compositorworker/AnimationWorkletThreadTest.cpp
rename to third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThreadTest.cpp
index b34a8fd..3032d0f 100644
--- a/third_party/WebKit/Source/modules/compositorworker/AnimationWorkletThreadTest.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimationWorkletThreadTest.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 "modules/compositorworker/AnimationWorkletThread.h"
+#include "modules/animationworklet/AnimationWorkletThread.h"
 
 #include <memory>
 #include "bindings/core/v8/ScriptModule.h"
diff --git a/third_party/WebKit/Source/modules/compositorworker/Animator.cpp b/third_party/WebKit/Source/modules/animationworklet/Animator.cpp
similarity index 95%
rename from third_party/WebKit/Source/modules/compositorworker/Animator.cpp
rename to third_party/WebKit/Source/modules/animationworklet/Animator.cpp
index 31e0d0f..8ba4ba0 100644
--- a/third_party/WebKit/Source/modules/compositorworker/Animator.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/Animator.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 "modules/compositorworker/Animator.h"
+#include "modules/animationworklet/Animator.h"
 
 #include "bindings/core/v8/V8ScriptRunner.h"
 #include "core/dom/ExecutionContext.h"
-#include "modules/compositorworker/AnimatorDefinition.h"
+#include "modules/animationworklet/AnimatorDefinition.h"
 #include "platform/bindings/ScriptState.h"
 #include "platform/bindings/ToV8.h"
 #include "platform/bindings/V8Binding.h"
diff --git a/third_party/WebKit/Source/modules/compositorworker/Animator.h b/third_party/WebKit/Source/modules/animationworklet/Animator.h
similarity index 97%
rename from third_party/WebKit/Source/modules/compositorworker/Animator.h
rename to third_party/WebKit/Source/modules/animationworklet/Animator.h
index 80a58c8..ff553c1 100644
--- a/third_party/WebKit/Source/modules/compositorworker/Animator.h
+++ b/third_party/WebKit/Source/modules/animationworklet/Animator.h
@@ -5,7 +5,7 @@
 #ifndef Animator_h
 #define Animator_h
 
-#include "modules/compositorworker/EffectProxy.h"
+#include "modules/animationworklet/EffectProxy.h"
 #include "platform/bindings/ScriptWrappable.h"
 #include "platform/bindings/TraceWrapperMember.h"
 #include "platform/bindings/TraceWrapperV8Reference.h"
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimatorDefinition.cpp b/third_party/WebKit/Source/modules/animationworklet/AnimatorDefinition.cpp
similarity index 91%
rename from third_party/WebKit/Source/modules/compositorworker/AnimatorDefinition.cpp
rename to third_party/WebKit/Source/modules/animationworklet/AnimatorDefinition.cpp
index f83aaae..7479c53 100644
--- a/third_party/WebKit/Source/modules/compositorworker/AnimatorDefinition.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/AnimatorDefinition.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 "modules/compositorworker/AnimatorDefinition.h"
+#include "modules/animationworklet/AnimatorDefinition.h"
 
 #include "core/dom/ExecutionContext.h"
-#include "modules/compositorworker/Animator.h"
+#include "modules/animationworklet/Animator.h"
 #include "platform/bindings/ScriptState.h"
 #include "platform/bindings/V8Binding.h"
 #include "platform/bindings/V8ObjectConstructor.h"
diff --git a/third_party/WebKit/Source/modules/compositorworker/AnimatorDefinition.h b/third_party/WebKit/Source/modules/animationworklet/AnimatorDefinition.h
similarity index 100%
rename from third_party/WebKit/Source/modules/compositorworker/AnimatorDefinition.h
rename to third_party/WebKit/Source/modules/animationworklet/AnimatorDefinition.h
diff --git a/third_party/WebKit/Source/modules/compositorworker/BUILD.gn b/third_party/WebKit/Source/modules/animationworklet/BUILD.gn
similarity index 94%
rename from third_party/WebKit/Source/modules/compositorworker/BUILD.gn
rename to third_party/WebKit/Source/modules/animationworklet/BUILD.gn
index eff14ad..3016edc4 100644
--- a/third_party/WebKit/Source/modules/compositorworker/BUILD.gn
+++ b/third_party/WebKit/Source/modules/animationworklet/BUILD.gn
@@ -4,7 +4,7 @@
 
 import("//third_party/WebKit/Source/modules/modules.gni")
 
-blink_modules_sources("compositorworker") {
+blink_modules_sources("animationworklet") {
   sources = [
     "AnimationWorklet.cpp",
     "AnimationWorklet.h",
diff --git a/third_party/WebKit/Source/modules/compositorworker/DEPS b/third_party/WebKit/Source/modules/animationworklet/DEPS
similarity index 75%
rename from third_party/WebKit/Source/modules/compositorworker/DEPS
rename to third_party/WebKit/Source/modules/animationworklet/DEPS
index 5a1c9df..5e5a0dc 100644
--- a/third_party/WebKit/Source/modules/compositorworker/DEPS
+++ b/third_party/WebKit/Source/modules/animationworklet/DEPS
@@ -2,5 +2,5 @@
     "-modules",
     "+modules/EventTargetModules.h",
     "+modules/ModulesExport.h",
-    "+modules/compositorworker",
+    "+modules/animationworklet",
 ]
diff --git a/third_party/WebKit/Source/modules/compositorworker/EffectProxy.h b/third_party/WebKit/Source/modules/animationworklet/EffectProxy.h
similarity index 100%
rename from third_party/WebKit/Source/modules/compositorworker/EffectProxy.h
rename to third_party/WebKit/Source/modules/animationworklet/EffectProxy.h
diff --git a/third_party/WebKit/Source/modules/compositorworker/EffectProxy.idl b/third_party/WebKit/Source/modules/animationworklet/EffectProxy.idl
similarity index 100%
rename from third_party/WebKit/Source/modules/compositorworker/EffectProxy.idl
rename to third_party/WebKit/Source/modules/animationworklet/EffectProxy.idl
diff --git a/third_party/WebKit/Source/modules/compositorworker/OWNERS b/third_party/WebKit/Source/modules/animationworklet/OWNERS
similarity index 100%
rename from third_party/WebKit/Source/modules/compositorworker/OWNERS
rename to third_party/WebKit/Source/modules/animationworklet/OWNERS
diff --git a/third_party/WebKit/Source/modules/compositorworker/README.md b/third_party/WebKit/Source/modules/animationworklet/README.md
similarity index 77%
rename from third_party/WebKit/Source/modules/compositorworker/README.md
rename to third_party/WebKit/Source/modules/animationworklet/README.md
index 2368af0..07d53dc 100644
--- a/third_party/WebKit/Source/modules/compositorworker/README.md
+++ b/third_party/WebKit/Source/modules/animationworklet/README.md
@@ -8,6 +8,6 @@
 ## Testing
 
 Layout tests that cover web-exposed API for Animation Worklet are tested in [`LayoutTests/virtual/th
-readed/fast/compositorworker/`](../../../LayoutTests/virtual/threaded/fast/compositorworker/).
+readed/fast/animationworklet/`](../../../LayoutTests/virtual/threaded/fast/animationworklet/).
 
-There are unit tests covering animation worklet and global scope in [`modules/compositorworker`](.).
\ No newline at end of file
+There are unit tests covering animation worklet and global scope in [`modules/animationworklet`](.).
\ No newline at end of file
diff --git a/third_party/WebKit/Source/modules/compositorworker/WindowAnimationWorklet.cpp b/third_party/WebKit/Source/modules/animationworklet/WindowAnimationWorklet.cpp
similarity index 96%
rename from third_party/WebKit/Source/modules/compositorworker/WindowAnimationWorklet.cpp
rename to third_party/WebKit/Source/modules/animationworklet/WindowAnimationWorklet.cpp
index 03eb7f6..5daf68b 100644
--- a/third_party/WebKit/Source/modules/compositorworker/WindowAnimationWorklet.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/WindowAnimationWorklet.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 "modules/compositorworker/WindowAnimationWorklet.h"
+#include "modules/animationworklet/WindowAnimationWorklet.h"
 
 #include "core/dom/Document.h"
 #include "core/frame/LocalDOMWindow.h"
diff --git a/third_party/WebKit/Source/modules/compositorworker/WindowAnimationWorklet.h b/third_party/WebKit/Source/modules/animationworklet/WindowAnimationWorklet.h
similarity index 94%
rename from third_party/WebKit/Source/modules/compositorworker/WindowAnimationWorklet.h
rename to third_party/WebKit/Source/modules/animationworklet/WindowAnimationWorklet.h
index e213cc3b..338834b 100644
--- a/third_party/WebKit/Source/modules/compositorworker/WindowAnimationWorklet.h
+++ b/third_party/WebKit/Source/modules/animationworklet/WindowAnimationWorklet.h
@@ -7,7 +7,7 @@
 
 #include "core/dom/ContextLifecycleObserver.h"
 #include "modules/ModulesExport.h"
-#include "modules/compositorworker/AnimationWorklet.h"
+#include "modules/animationworklet/AnimationWorklet.h"
 #include "platform/Supplementable.h"
 #include "platform/heap/Handle.h"
 
diff --git a/third_party/WebKit/Source/modules/compositorworker/WindowAnimationWorklet.idl b/third_party/WebKit/Source/modules/animationworklet/WindowAnimationWorklet.idl
similarity index 100%
rename from third_party/WebKit/Source/modules/compositorworker/WindowAnimationWorklet.idl
rename to third_party/WebKit/Source/modules/animationworklet/WindowAnimationWorklet.idl
diff --git a/third_party/WebKit/Source/modules/compositorworker/WorkletAnimation.cpp b/third_party/WebKit/Source/modules/animationworklet/WorkletAnimation.cpp
similarity index 98%
rename from third_party/WebKit/Source/modules/compositorworker/WorkletAnimation.cpp
rename to third_party/WebKit/Source/modules/animationworklet/WorkletAnimation.cpp
index c230566..a260c42 100644
--- a/third_party/WebKit/Source/modules/compositorworker/WorkletAnimation.cpp
+++ b/third_party/WebKit/Source/modules/animationworklet/WorkletAnimation.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 "modules/compositorworker/WorkletAnimation.h"
+#include "modules/animationworklet/WorkletAnimation.h"
 
 #include "core/animation/ElementAnimations.h"
 #include "core/animation/KeyframeEffectModel.h"
diff --git a/third_party/WebKit/Source/modules/compositorworker/WorkletAnimation.h b/third_party/WebKit/Source/modules/animationworklet/WorkletAnimation.h
similarity index 100%
rename from third_party/WebKit/Source/modules/compositorworker/WorkletAnimation.h
rename to third_party/WebKit/Source/modules/animationworklet/WorkletAnimation.h
diff --git a/third_party/WebKit/Source/modules/compositorworker/WorkletAnimation.idl b/third_party/WebKit/Source/modules/animationworklet/WorkletAnimation.idl
similarity index 100%
rename from third_party/WebKit/Source/modules/compositorworker/WorkletAnimation.idl
rename to third_party/WebKit/Source/modules/animationworklet/WorkletAnimation.idl
diff --git a/third_party/WebKit/Source/modules/app_banner/BeforeInstallPromptEvent.cpp b/third_party/WebKit/Source/modules/app_banner/BeforeInstallPromptEvent.cpp
index 0ae058d1..70bf450 100644
--- a/third_party/WebKit/Source/modules/app_banner/BeforeInstallPromptEvent.cpp
+++ b/third_party/WebKit/Source/modules/app_banner/BeforeInstallPromptEvent.cpp
@@ -8,7 +8,6 @@
 #include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/ExecutionContext.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/frame/UseCounter.h"
 #include "modules/app_banner/BeforeInstallPromptEventInit.h"
 
@@ -80,12 +79,13 @@
                              "The prompt() method may only be called once."));
   }
 
-  UseCounter::Count(ExecutionContext::From(script_state),
-                    WebFeature::kBeforeInstallPromptEventPrompt);
+  ExecutionContext* context = ExecutionContext::From(script_state);
+  UseCounter::Count(context, WebFeature::kBeforeInstallPromptEventPrompt);
 
+  Document* doc = ToDocumentOrNull(context);
   prompt_called_ = true;
   banner_service_->DisplayAppBanner(
-      UserGestureIndicator::ProcessingUserGesture());
+      Frame::HasTransientUserActivation(doc ? doc->GetFrame() : nullptr));
   return ScriptPromise::CastUndefined(script_state);
 }
 
diff --git a/third_party/WebKit/Source/modules/background_fetch/BackgroundFetchBridge.cpp b/third_party/WebKit/Source/modules/background_fetch/BackgroundFetchBridge.cpp
index 3e307e4..97d6fe2 100644
--- a/third_party/WebKit/Source/modules/background_fetch/BackgroundFetchBridge.cpp
+++ b/third_party/WebKit/Source/modules/background_fetch/BackgroundFetchBridge.cpp
@@ -96,7 +96,7 @@
     registration->Initialize(GetSupplementable());
   }
 
-  callback(error, registration);
+  std::move(callback).Run(error, registration);
 }
 
 void BackgroundFetchBridge::GetDeveloperIds(GetDeveloperIdsCallback callback) {
diff --git a/third_party/WebKit/Source/modules/bluetooth/Bluetooth.cpp b/third_party/WebKit/Source/modules/bluetooth/Bluetooth.cpp
index d18c250d..166c0be 100644
--- a/third_party/WebKit/Source/modules/bluetooth/Bluetooth.cpp
+++ b/third_party/WebKit/Source/modules/bluetooth/Bluetooth.cpp
@@ -14,7 +14,7 @@
 #include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/ExecutionContext.h"
-#include "core/dom/UserGestureIndicator.h"
+#include "core/frame/Frame.h"
 #include "core/frame/LocalFrame.h"
 #include "core/inspector/ConsoleMessage.h"
 #include "modules/bluetooth/BluetoothDevice.h"
@@ -174,7 +174,8 @@
 
   // If the algorithm is not allowed to show a popup, reject promise with a
   // SecurityError and abort these steps.
-  if (!UserGestureIndicator::ConsumeUserGesture()) {
+  Document* doc = ToDocumentOrNull(context);
+  if (!Frame::ConsumeTransientUserActivation(doc ? doc->GetFrame() : nullptr)) {
     return ScriptPromise::RejectWithDOMException(
         script_state,
         DOMException::Create(
@@ -182,8 +183,8 @@
             "Must be handling a user gesture to show a permission request."));
   }
 
-  if (!service_ && context->IsDocument()) {
-    LocalFrame* frame = ToDocument(context)->GetFrame();
+  if (!service_ && doc) {
+    LocalFrame* frame = doc->GetFrame();
     if (frame) {
       frame->GetInterfaceProvider().GetInterface(mojo::MakeRequest(&service_));
     }
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
index b66ab27..aee56fd 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
+++ b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
@@ -73,25 +73,28 @@
   // ContentDecryptionModuleResult implementation.
   void Complete() override {
     DVLOG(EME_LOG_LEVEL) << __func__ << ": promise resolved.";
-    success_callback_();
+    std::move(success_callback_).Run();
   }
 
   void CompleteWithContentDecryptionModule(
       WebContentDecryptionModule*) override {
     NOTREACHED();
-    failure_callback_(kInvalidStateError, "Unexpected completion.");
+    std::move(failure_callback_)
+        .Run(kInvalidStateError, "Unexpected completion.");
   }
 
   void CompleteWithSession(
       WebContentDecryptionModuleResult::SessionStatus status) override {
     NOTREACHED();
-    failure_callback_(kInvalidStateError, "Unexpected completion.");
+    std::move(failure_callback_)
+        .Run(kInvalidStateError, "Unexpected completion.");
   }
 
   void CompleteWithKeyStatus(
       WebEncryptedMediaKeyInformation::KeyStatus key_status) override {
     NOTREACHED();
-    failure_callback_(kInvalidStateError, "Unexpected completion.");
+    std::move(failure_callback_)
+        .Run(kInvalidStateError, "Unexpected completion.");
   }
 
   void CompleteWithError(WebContentDecryptionModuleException code,
@@ -112,7 +115,8 @@
     DVLOG(EME_LOG_LEVEL) << __func__ << ": promise rejected with code " << code
                          << " and message: " << result.ToString();
 
-    failure_callback_(WebCdmExceptionToExceptionCode(code), result.ToString());
+    std::move(failure_callback_)
+        .Run(WebCdmExceptionToExceptionCode(code), result.ToString());
   }
 
  private:
diff --git a/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.cpp b/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.cpp
index 39d1e125..2258640 100644
--- a/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.cpp
+++ b/third_party/WebKit/Source/modules/filesystem/DOMFileSystem.cpp
@@ -63,7 +63,7 @@
     return;
   DCHECK(execution_context->IsContextThread());
   probe::AsyncTask async_task(execution_context, identifier.get());
-  task();
+  std::move(task).Run();
 }
 
 }  // namespace
diff --git a/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.cpp b/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.cpp
index 132a015..d52f221 100644
--- a/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.cpp
+++ b/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.cpp
@@ -117,10 +117,10 @@
                                                       WTF::Closure denied) {
   if (!context->IsDocument()) {
     if (!Client().RequestFileSystemAccessSync(context)) {
-      denied();
+      std::move(denied).Run();
       return;
     }
-    allowed();
+    std::move(allowed).Run();
     return;
   }
   Client().RequestFileSystemAccessAsync(
diff --git a/third_party/WebKit/Source/modules/geolocation/Geolocation.cpp b/third_party/WebKit/Source/modules/geolocation/Geolocation.cpp
index a72714c..3c4aafa 100644
--- a/third_party/WebKit/Source/modules/geolocation/Geolocation.cpp
+++ b/third_party/WebKit/Source/modules/geolocation/Geolocation.cpp
@@ -29,7 +29,6 @@
 
 #include "bindings/core/v8/SourceLocation.h"
 #include "core/dom/Document.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/frame/Deprecation.h"
 #include "core/frame/HostsUsingFeatures.h"
 #include "core/frame/PerformanceMonitor.h"
@@ -89,7 +88,8 @@
 }
 
 static void ReportGeolocationViolation(ExecutionContext* context) {
-  if (!UserGestureIndicator::ProcessingUserGesture()) {
+  Document* doc = ToDocumentOrNull(context);
+  if (!Frame::HasTransientUserActivation(doc ? doc->GetFrame() : nullptr)) {
     PerformanceMonitor::ReportGenericViolation(
         context, PerformanceMonitor::kDiscouragedAPIUse,
         "Only request geolocation information in response to a user gesture.",
@@ -479,7 +479,7 @@
       mojo::MakeRequest(&geolocation_service_));
   geolocation_service_->CreateGeolocation(
       mojo::MakeRequest(&geolocation_),
-      UserGestureIndicator::ProcessingUserGesture());
+      Frame::HasTransientUserActivation(GetFrame()));
 
   geolocation_.set_connection_error_handler(ConvertToBaseCallback(WTF::Bind(
       &Geolocation::OnGeolocationConnectionError, WrapWeakPersistent(this))));
diff --git a/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp b/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
index bf076f8..6b0fafa 100644
--- a/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
+++ b/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
@@ -659,7 +659,7 @@
     return;
   }
 
-  resolve_function(resolver);
+  std::move(resolve_function).Run(resolver);
   service_requests_.erase(resolver);
 }
 
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBRequestQueueItem.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBRequestQueueItem.cpp
index a6723a81..ffb9d240 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBRequestQueueItem.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBRequestQueueItem.cpp
@@ -154,7 +154,7 @@
   ready_ = true;
 
   DCHECK(on_result_load_complete_);
-  on_result_load_complete_();
+  std::move(on_result_load_complete_).Run();
 }
 
 void IDBRequestQueueItem::OnResultLoadComplete(DOMException* error) {
diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp b/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp
index 4566331..90c3b7b 100644
--- a/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp
+++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp
@@ -267,9 +267,9 @@
   Member<MutationObserver> observer_;
 };
 
-// static.
+// static
 bool MediaControlsImpl::IsModern() {
-  return blink::RuntimeEnabledFeatures::ModernMediaControlsEnabled();
+  return RuntimeEnabledFeatures::ModernMediaControlsEnabled();
 }
 
 MediaControlsImpl::MediaControlsImpl(HTMLMediaElement& media_element)
diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.h b/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.h
index 5800017..b7b31bd 100644
--- a/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.h
+++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.h
@@ -72,7 +72,7 @@
   static MediaControlsImpl* Create(HTMLMediaElement&, ShadowRoot&);
   ~MediaControlsImpl() = default;
 
-  // Are the modern media controls enabled?
+  // Returns whether the ModernMediaControlsEnabled runtime flag is on.
   static bool IsModern();
 
   // Node override.
diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsResourceLoader.cpp b/third_party/WebKit/Source/modules/media_controls/MediaControlsResourceLoader.cpp
index 856dd0015..fb94d7397 100644
--- a/third_party/WebKit/Source/modules/media_controls/MediaControlsResourceLoader.cpp
+++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsResourceLoader.cpp
@@ -54,7 +54,7 @@
       IDR_UASTYLE_LEGACY_MEDIA_CONTROLS_ANDROID_CSS);
 };
 
-// static.
+// static
 String MediaControlsResourceLoader::GetShadowTimelineStyleSheet() {
   return ResourceBundleHelper::UncompressResourceAsString(
       IDR_SHADOWSTYLE_MODERN_MEDIA_CONTROLS_TIMELINE_CSS);
diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsWindowEventListener.cpp b/third_party/WebKit/Source/modules/media_controls/MediaControlsWindowEventListener.cpp
index 61aa50f..85af087 100644
--- a/third_party/WebKit/Source/modules/media_controls/MediaControlsWindowEventListener.cpp
+++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsWindowEventListener.cpp
@@ -119,7 +119,7 @@
 
   if (!is_active_)
     return;
-  callback_();
+  callback_.Run();
 }
 
 void MediaControlsWindowEventListener::Trace(blink::Visitor* visitor) {
diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsWindowEventListener.h b/third_party/WebKit/Source/modules/media_controls/MediaControlsWindowEventListener.h
index 8d5fc37..963ed98 100644
--- a/third_party/WebKit/Source/modules/media_controls/MediaControlsWindowEventListener.h
+++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsWindowEventListener.h
@@ -14,7 +14,7 @@
 
 class MediaControlsWindowEventListener final : public EventListener {
  public:
-  using Callback = Function<void(), WTF::kSameThreadAffinity>;
+  using Callback = WTF::RepeatingFunction<void()>;
 
   static MediaControlsWindowEventListener* Create(MediaControlsImpl*, Callback);
 
diff --git a/third_party/WebKit/Source/modules/modules_idl_files.gni b/third_party/WebKit/Source/modules/modules_idl_files.gni
index 62c6eaa..f5919141 100644
--- a/third_party/WebKit/Source/modules/modules_idl_files.gni
+++ b/third_party/WebKit/Source/modules/modules_idl_files.gni
@@ -55,6 +55,9 @@
 modules_idl_files =
     get_path_info(
         [
+          "animationworklet/AnimationWorkletGlobalScope.idl",
+          "animationworklet/EffectProxy.idl",
+          "animationworklet/WorkletAnimation.idl",
           "app_banner/BeforeInstallPromptEvent.idl",
           "background_fetch/BackgroundFetchClickEvent.idl",
           "background_fetch/BackgroundFetchEvent.idl",
@@ -84,9 +87,6 @@
           "canvas/canvas2d/CanvasPattern.idl",
           "canvas/canvas2d/CanvasRenderingContext2D.idl",
           "canvas/canvas2d/Path2D.idl",
-          "compositorworker/AnimationWorkletGlobalScope.idl",
-          "compositorworker/EffectProxy.idl",
-          "compositorworker/WorkletAnimation.idl",
           "cookie_store/CookieStore.idl",
           "credentialmanager/AuthenticatorAssertionResponse.idl",
           "credentialmanager/AuthenticatorAttestationResponse.idl",
@@ -306,8 +306,10 @@
           "vr/latest/VR.idl",
           "vr/latest/VRCoordinateSystem.idl",
           "vr/latest/VRDevice.idl",
+          "vr/latest/VRDevicePose.idl",
           "vr/latest/VRDeviceEvent.idl",
           "vr/latest/VRFrameOfReference.idl",
+          "vr/latest/VRPresentationFrame.idl",
           "vr/latest/VRSession.idl",
           "vr/latest/VRSessionEvent.idl",
           "vr/latest/VRStageBounds.idl",
@@ -555,6 +557,7 @@
                     "peerconnection/RTCPeerConnectionIceEventInit.idl",
                     "peerconnection/RTCSessionDescriptionInit.idl",
                     "peerconnection/RTCTrackEventInit.idl",
+                    "permissions/ClipboardPermissionDescriptor.idl",
                     "permissions/MidiPermissionDescriptor.idl",
                     "permissions/PermissionDescriptor.idl",
                     "permissions/PushPermissionDescriptor.idl",
@@ -646,7 +649,7 @@
           "cachestorage/WorkerCacheStorage.idl",
           "canvas/htmlcanvas/HTMLCanvasElementModule.idl",
           "canvas/canvas2d/CanvasPath.idl",
-          "compositorworker/WindowAnimationWorklet.idl",
+          "animationworklet/WindowAnimationWorklet.idl",
           "cookie_store/WindowCookieStore.idl",
           "credentialmanager/CredentialUserData.idl",
           "credentialmanager/NavigatorCredentials.idl",
diff --git a/third_party/WebKit/Source/modules/notifications/Notification.cpp b/third_party/WebKit/Source/modules/notifications/Notification.cpp
index 983e742..2178967 100644
--- a/third_party/WebKit/Source/modules/notifications/Notification.cpp
+++ b/third_party/WebKit/Source/modules/notifications/Notification.cpp
@@ -401,9 +401,10 @@
     ScriptState* script_state,
     NotificationPermissionCallback* deprecated_callback) {
   ExecutionContext* context = ExecutionContext::From(script_state);
+  Document* doc = ToDocumentOrNull(context);
 
   probe::breakableLocation(context, "Notification.requestPermission");
-  if (!UserGestureIndicator::ProcessingUserGesture()) {
+  if (!Frame::HasTransientUserActivation(doc ? doc->GetFrame() : nullptr)) {
     PerformanceMonitor::ReportGenericViolation(
         context, PerformanceMonitor::kDiscouragedAPIUse,
         "Only request notification permission in response to a user gesture.",
diff --git a/third_party/WebKit/Source/modules/notifications/NotificationImageLoader.cpp b/third_party/WebKit/Source/modules/notifications/NotificationImageLoader.cpp
index d4b78cf..14ef621 100644
--- a/third_party/WebKit/Source/modules/notifications/NotificationImageLoader.cpp
+++ b/third_party/WebKit/Source/modules/notifications/NotificationImageLoader.cpp
@@ -164,7 +164,7 @@
       // The |ImageFrame*| is owned by the decoder.
       ImageFrame* image_frame = decoder->DecodeFrameBufferAtIndex(0);
       if (image_frame) {
-        image_callback_(image_frame->Bitmap());
+        std::move(image_callback_).Run(image_frame->Bitmap());
         return;
       }
     }
@@ -190,7 +190,7 @@
   if (stopped_)
     return;
 
-  image_callback_(SkBitmap());
+  std::move(image_callback_).Run(SkBitmap());
 }
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/modules/notifications/NotificationManager.cpp b/third_party/WebKit/Source/modules/notifications/NotificationManager.cpp
index 2f146bd9..0e5a0af 100644
--- a/third_party/WebKit/Source/modules/notifications/NotificationManager.cpp
+++ b/third_party/WebKit/Source/modules/notifications/NotificationManager.cpp
@@ -5,7 +5,8 @@
 #include "modules/notifications/NotificationManager.h"
 
 #include "bindings/core/v8/ScriptPromiseResolver.h"
-#include "core/dom/UserGestureIndicator.h"
+#include "core/frame/Frame.h"
+#include "core/frame/LocalFrame.h"
 #include "modules/notifications/Notification.h"
 #include "modules/notifications/NotificationPermissionCallback.h"
 #include "modules/permissions/PermissionUtils.h"
@@ -79,10 +80,11 @@
   ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
   ScriptPromise promise = resolver->Promise();
 
+  Document* doc = ToDocumentOrNull(context);
   permission_service_->RequestPermission(
       CreatePermissionDescriptor(mojom::blink::PermissionName::NOTIFICATIONS),
       context->GetSecurityOrigin(),
-      UserGestureIndicator::ProcessingUserGesture(),
+      Frame::HasTransientUserActivation(doc ? doc->GetFrame() : nullptr),
       ConvertToBaseCallback(
           WTF::Bind(&NotificationManager::OnPermissionRequestComplete,
                     WrapPersistent(this), WrapPersistent(resolver),
diff --git a/third_party/WebKit/Source/modules/notifications/NotificationResourcesLoader.cpp b/third_party/WebKit/Source/modules/notifications/NotificationResourcesLoader.cpp
index 85ef707..66e45847 100644
--- a/third_party/WebKit/Source/modules/notifications/NotificationResourcesLoader.cpp
+++ b/third_party/WebKit/Source/modules/notifications/NotificationResourcesLoader.cpp
@@ -123,8 +123,7 @@
   pending_request_count_--;
   if (!pending_request_count_) {
     Stop();
-    auto cb = std::move(completion_callback_);
-    cb(this);
+    std::move(completion_callback_).Run(this);
     // The |this| pointer may have been deleted now.
   }
 }
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
index 6a2c69e..41fcb05 100644
--- a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
+++ b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
@@ -420,7 +420,7 @@
 
 bool RTCPeerConnection::EventWrapper::Setup() {
   if (setup_function_) {
-    return setup_function_();
+    return std::move(setup_function_).Run();
   }
   return true;
 }
diff --git a/third_party/WebKit/Source/modules/permissions/ClipboardPermissionDescriptor.idl b/third_party/WebKit/Source/modules/permissions/ClipboardPermissionDescriptor.idl
new file mode 100644
index 0000000..db0ec40
--- /dev/null
+++ b/third_party/WebKit/Source/modules/permissions/ClipboardPermissionDescriptor.idl
@@ -0,0 +1,7 @@
+// 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.
+
+dictionary ClipboardPermissionDescriptor : PermissionDescriptor {
+    required boolean allowWithoutGesture;
+};
diff --git a/third_party/WebKit/Source/modules/permissions/PermissionDescriptor.idl b/third_party/WebKit/Source/modules/permissions/PermissionDescriptor.idl
index 3ce943f3..a0fd18d 100644
--- a/third_party/WebKit/Source/modules/permissions/PermissionDescriptor.idl
+++ b/third_party/WebKit/Source/modules/permissions/PermissionDescriptor.idl
@@ -13,6 +13,8 @@
     "gyroscope",
     "magnetometer",
     "accessibility-events",
+    "clipboard-read",
+    "clipboard-write",
 };
 
 // The PermissionDescriptor dictionary is a base to describe permissions. Some
diff --git a/third_party/WebKit/Source/modules/permissions/PermissionUtils.cpp b/third_party/WebKit/Source/modules/permissions/PermissionUtils.cpp
index c2b0614d..b0c7094 100644
--- a/third_party/WebKit/Source/modules/permissions/PermissionUtils.cpp
+++ b/third_party/WebKit/Source/modules/permissions/PermissionUtils.cpp
@@ -4,6 +4,8 @@
 
 #include "modules/permissions/PermissionUtils.h"
 
+#include <utility>
+
 #include "core/dom/Document.h"
 #include "core/dom/ExecutionContext.h"
 #include "core/frame/LocalFrame.h"
@@ -52,4 +54,15 @@
   return descriptor;
 }
 
+PermissionDescriptorPtr CreateClipboardPermissionDescriptor(
+    PermissionName name,
+    bool allow_without_gesture) {
+  auto descriptor = CreatePermissionDescriptor(name);
+  auto clipboard_extension =
+      mojom::blink::ClipboardPermissionDescriptor::New(allow_without_gesture);
+  descriptor->extension = mojom::blink::PermissionDescriptorExtension::New();
+  descriptor->extension->set_clipboard(std::move(clipboard_extension));
+  return descriptor;
+}
+
 }  // namespace blink
diff --git a/third_party/WebKit/Source/modules/permissions/PermissionUtils.h b/third_party/WebKit/Source/modules/permissions/PermissionUtils.h
index 6ba9d55..50379cd8 100644
--- a/third_party/WebKit/Source/modules/permissions/PermissionUtils.h
+++ b/third_party/WebKit/Source/modules/permissions/PermissionUtils.h
@@ -20,6 +20,10 @@
 mojom::blink::PermissionDescriptorPtr CreateMidiPermissionDescriptor(
     bool sysex);
 
+mojom::blink::PermissionDescriptorPtr CreateClipboardPermissionDescriptor(
+    mojom::blink::PermissionName,
+    bool allow_without_gesture);
+
 }  // namespace blink
 
 #endif  // PermissionUtils_h
diff --git a/third_party/WebKit/Source/modules/permissions/Permissions.cpp b/third_party/WebKit/Source/modules/permissions/Permissions.cpp
index b006483..558c8dcc 100644
--- a/third_party/WebKit/Source/modules/permissions/Permissions.cpp
+++ b/third_party/WebKit/Source/modules/permissions/Permissions.cpp
@@ -5,10 +5,13 @@
 #include "modules/permissions/Permissions.h"
 
 #include <memory>
+#include <utility>
+
 #include "bindings/core/v8/Dictionary.h"
 #include "bindings/core/v8/Nullable.h"
 #include "bindings/core/v8/ScriptPromise.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
+#include "bindings/modules/v8/V8ClipboardPermissionDescriptor.h"
 #include "bindings/modules/v8/V8MidiPermissionDescriptor.h"
 #include "bindings/modules/v8/V8PermissionDescriptor.h"
 #include "bindings/modules/v8/V8PushPermissionDescriptor.h"
@@ -16,7 +19,7 @@
 #include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/ExecutionContext.h"
-#include "core/dom/UserGestureIndicator.h"
+#include "core/frame/Frame.h"
 #include "core/frame/LocalFrame.h"
 #include "core/origin_trials/origin_trials.h"
 #include "modules/permissions/PermissionDescriptor.h"
@@ -121,6 +124,23 @@
     }
     return CreatePermissionDescriptor(PermissionName::ACCESSIBILITY_EVENTS);
   }
+  if (name == "clipboard-read" || name == "clipboard-write") {
+    if (!RuntimeEnabledFeatures::AsyncClipboardEnabled()) {
+      exception_state.ThrowTypeError("Async Clipboard flag is not enabled.");
+      return nullptr;
+    }
+
+    PermissionName permission_name = PermissionName::CLIPBOARD_READ;
+    if (name == "clipboard-write")
+      permission_name = PermissionName::CLIPBOARD_WRITE;
+
+    ClipboardPermissionDescriptor clipboard_permission =
+        NativeValueTraits<ClipboardPermissionDescriptor>::NativeValue(
+            script_state->GetIsolate(), raw_permission.V8Value(),
+            exception_state);
+    return CreateClipboardPermissionDescriptor(
+        permission_name, clipboard_permission.allowWithoutGesture());
+  }
 
   return nullptr;
 }
@@ -174,9 +194,11 @@
   if (exception_state.HadException())
     return exception_state.Reject(script_state);
 
+  ExecutionContext* context = ExecutionContext::From(script_state);
+
   // This must be called after `parsePermission` because the website might
   // be able to run code.
-  PermissionService* service = GetService(ExecutionContext::From(script_state));
+  PermissionService* service = GetService(context);
   if (!service)
     return ScriptPromise::RejectWithDOMException(
         script_state, DOMException::Create(kInvalidStateError,
@@ -187,10 +209,11 @@
   ScriptPromise promise = resolver->Promise();
 
   PermissionDescriptorPtr descriptor_copy = descriptor->Clone();
+  Document* doc = ToDocumentOrNull(context);
+  Frame* frame = doc ? doc->GetFrame() : nullptr;
   service->RequestPermission(
-      std::move(descriptor),
-      ExecutionContext::From(script_state)->GetSecurityOrigin(),
-      UserGestureIndicator::ProcessingUserGestureThreadSafe(),
+      std::move(descriptor), context->GetSecurityOrigin(),
+      Frame::HasTransientUserActivation(frame, true /* checkIfMainThread */),
       ConvertToBaseCallback(WTF::Bind(
           &Permissions::TaskComplete, WrapPersistent(this),
           WrapPersistent(resolver), WTF::Passed(std::move(descriptor_copy)))));
@@ -261,9 +284,11 @@
     caller_index_to_internal_index[i] = internal_index;
   }
 
+  ExecutionContext* context = ExecutionContext::From(script_state);
+
   // This must be called after `parsePermission` because the website might
   // be able to run code.
-  PermissionService* service = GetService(ExecutionContext::From(script_state));
+  PermissionService* service = GetService(context);
   if (!service)
     return ScriptPromise::RejectWithDOMException(
         script_state, DOMException::Create(kInvalidStateError,
@@ -278,10 +303,11 @@
   for (const auto& descriptor : internal_permissions)
     internal_permissions_copy.push_back(descriptor->Clone());
 
+  Document* doc = ToDocumentOrNull(context);
+  Frame* frame = doc ? doc->GetFrame() : nullptr;
   service->RequestPermissions(
-      std::move(internal_permissions),
-      ExecutionContext::From(script_state)->GetSecurityOrigin(),
-      UserGestureIndicator::ProcessingUserGestureThreadSafe(),
+      std::move(internal_permissions), context->GetSecurityOrigin(),
+      Frame::HasTransientUserActivation(frame, true /* checkIfMainThread */),
       ConvertToBaseCallback(
           WTF::Bind(&Permissions::BatchTaskComplete, WrapPersistent(this),
                     WrapPersistent(resolver),
diff --git a/third_party/WebKit/Source/modules/presentation/PresentationRequest.cpp b/third_party/WebKit/Source/modules/presentation/PresentationRequest.cpp
index d0b3de5..1a44500a 100644
--- a/third_party/WebKit/Source/modules/presentation/PresentationRequest.cpp
+++ b/third_party/WebKit/Source/modules/presentation/PresentationRequest.cpp
@@ -11,7 +11,6 @@
 #include "core/dom/DOMException.h"
 #include "core/dom/Document.h"
 #include "core/dom/ExecutionContext.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/frame/Deprecation.h"
 #include "core/frame/Settings.h"
 #include "core/frame/UseCounter.h"
@@ -137,12 +136,14 @@
 ScriptPromise PresentationRequest::start(ScriptState* script_state) {
   ExecutionContext* execution_context = GetExecutionContext();
   Settings* context_settings = GetSettings(execution_context);
+  Document* doc = ToDocumentOrNull(execution_context);
+
   bool is_user_gesture_required =
       !context_settings ||
       context_settings->GetPresentationRequiresUserGesture();
 
   if (is_user_gesture_required &&
-      !UserGestureIndicator::ProcessingUserGesture())
+      !Frame::HasTransientUserActivation(doc ? doc->GetFrame() : nullptr))
     return ScriptPromise::RejectWithDOMException(
         script_state,
         DOMException::Create(
diff --git a/third_party/WebKit/Source/modules/push_messaging/PushManager.cpp b/third_party/WebKit/Source/modules/push_messaging/PushManager.cpp
index 330e80c..7059444 100644
--- a/third_party/WebKit/Source/modules/push_messaging/PushManager.cpp
+++ b/third_party/WebKit/Source/modules/push_messaging/PushManager.cpp
@@ -12,7 +12,8 @@
 #include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/ExecutionContext.h"
-#include "core/dom/UserGestureIndicator.h"
+#include "core/frame/Frame.h"
+#include "core/frame/LocalFrame.h"
 #include "modules/push_messaging/PushController.h"
 #include "modules/push_messaging/PushError.h"
 #include "modules/push_messaging/PushPermissionStatusCallbacks.h"
@@ -72,20 +73,21 @@
   // permission so that later calls in different contexts can succeed.
   if (ExecutionContext::From(script_state)->IsDocument()) {
     Document* document = ToDocument(ExecutionContext::From(script_state));
-    if (!document->domWindow() || !document->GetFrame())
+    LocalFrame* frame = document->GetFrame();
+    if (!document->domWindow() || !frame)
       return ScriptPromise::RejectWithDOMException(
           script_state,
           DOMException::Create(kInvalidStateError,
                                "Document is detached from window."));
-    PushController::ClientFrom(document->GetFrame())
-        .Subscribe(registration_->WebRegistration(), web_options,
-                   UserGestureIndicator::ProcessingUserGestureThreadSafe(),
-                   std::make_unique<PushSubscriptionCallbacks>(resolver,
-                                                               registration_));
+    PushController::ClientFrom(frame).Subscribe(
+        registration_->WebRegistration(), web_options,
+        Frame::HasTransientUserActivation(frame, true /* checkIfMainThread */),
+        std::make_unique<PushSubscriptionCallbacks>(resolver, registration_));
   } else {
     PushProvider()->Subscribe(
         registration_->WebRegistration(), web_options,
-        UserGestureIndicator::ProcessingUserGestureThreadSafe(),
+        Frame::HasTransientUserActivation(nullptr,
+                                          true /* checkIfMainThread */),
         std::make_unique<PushSubscriptionCallbacks>(resolver, registration_));
   }
 
diff --git a/third_party/WebKit/Source/modules/quota/StorageManager.cpp b/third_party/WebKit/Source/modules/quota/StorageManager.cpp
index 766f26e..4ac1ab6 100644
--- a/third_party/WebKit/Source/modules/quota/StorageManager.cpp
+++ b/third_party/WebKit/Source/modules/quota/StorageManager.cpp
@@ -10,7 +10,8 @@
 #include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/ExecutionContext.h"
-#include "core/dom/UserGestureIndicator.h"
+#include "core/frame/Frame.h"
+#include "core/frame/LocalFrame.h"
 #include "modules/permissions/PermissionUtils.h"
 #include "modules/quota/StorageEstimate.h"
 #include "platform/StorageQuotaCallbacks.h"
@@ -84,10 +85,12 @@
         "In its current state, the global scope can't request permissions."));
     return promise;
   }
+
+  Document* doc = ToDocumentOrNull(execution_context);
   permission_service->RequestPermission(
       CreatePermissionDescriptor(PermissionName::DURABLE_STORAGE),
       ExecutionContext::From(script_state)->GetSecurityOrigin(),
-      UserGestureIndicator::ProcessingUserGesture(),
+      Frame::HasTransientUserActivation(doc ? doc->GetFrame() : nullptr),
       ConvertToBaseCallback(
           WTF::Bind(&StorageManager::PermissionRequestComplete,
                     WrapPersistent(this), WrapPersistent(resolver))));
diff --git a/third_party/WebKit/Source/modules/remoteplayback/AvailabilityCallbackWrapper.cpp b/third_party/WebKit/Source/modules/remoteplayback/AvailabilityCallbackWrapper.cpp
index a018d02..6f89e49 100644
--- a/third_party/WebKit/Source/modules/remoteplayback/AvailabilityCallbackWrapper.cpp
+++ b/third_party/WebKit/Source/modules/remoteplayback/AvailabilityCallbackWrapper.cpp
@@ -20,7 +20,7 @@
                                       bool new_availability) {
   if (internal_cb_) {
     DCHECK(!bindings_cb_);
-    internal_cb_();
+    internal_cb_.Run();
     return;
   }
 
diff --git a/third_party/WebKit/Source/modules/remoteplayback/AvailabilityCallbackWrapper.h b/third_party/WebKit/Source/modules/remoteplayback/AvailabilityCallbackWrapper.h
index 0b49a76..1e50a51f 100644
--- a/third_party/WebKit/Source/modules/remoteplayback/AvailabilityCallbackWrapper.h
+++ b/third_party/WebKit/Source/modules/remoteplayback/AvailabilityCallbackWrapper.h
@@ -38,7 +38,7 @@
  private:
   // Only one of these callbacks must be set.
   TraceWrapperMember<V8RemotePlaybackAvailabilityCallback> bindings_cb_;
-  WTF::Closure internal_cb_;
+  WTF::RepeatingClosure internal_cb_;
 };
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.cpp b/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.cpp
index babe4a3..4258ce3 100644
--- a/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.cpp
+++ b/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.cpp
@@ -9,7 +9,6 @@
 #include "core/dom/DOMException.h"
 #include "core/dom/Document.h"
 #include "core/dom/TaskRunnerHelper.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/dom/events/Event.h"
 #include "core/html/media/HTMLMediaElement.h"
 #include "core/html/media/HTMLVideoElement.h"
@@ -51,7 +50,7 @@
                            WTF::Closure task,
                            std::unique_ptr<int> task_id) {
   probe::AsyncTask async_task(context, task_id.get());
-  task();
+  std::move(task).Run();
 }
 
 WebURL GetAvailabilityUrl(const WebURL& source, bool is_source_supported) {
@@ -183,7 +182,7 @@
     return promise;
   }
 
-  if (!UserGestureIndicator::ProcessingUserGesture()) {
+  if (!Frame::HasTransientUserActivation(media_element_->GetFrame())) {
     resolver->Reject(DOMException::Create(
         kInvalidAccessError,
         "RemotePlayback::prompt() requires user gesture."));
diff --git a/third_party/WebKit/Source/modules/serviceworkers/WaitUntilObserver.cpp b/third_party/WebKit/Source/modules/serviceworkers/WaitUntilObserver.cpp
index a3c04a0..79b6a09 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/WaitUntilObserver.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/WaitUntilObserver.cpp
@@ -71,7 +71,7 @@
     DCHECK(observer_);
     DCHECK(resolve_type_ == kFulfilled || resolve_type_ == kRejected);
     if (callback_)
-      callback_(value);
+      callback_.Run(value);
     // According from step 4 of ExtendableEvent::waitUntil() in spec:
     // https://w3c.github.io/ServiceWorker/#dom-extendableevent-waituntil
     // "Upon fulfillment or rejection of f, queue a microtask to run these
diff --git a/third_party/WebKit/Source/modules/serviceworkers/WaitUntilObserver.h b/third_party/WebKit/Source/modules/serviceworkers/WaitUntilObserver.h
index b6d3040..b272b4d 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/WaitUntilObserver.h
+++ b/third_party/WebKit/Source/modules/serviceworkers/WaitUntilObserver.h
@@ -22,7 +22,8 @@
 class MODULES_EXPORT WaitUntilObserver final
     : public GarbageCollectedFinalized<WaitUntilObserver> {
  public:
-  using PromiseSettledCallback = Function<void(const ScriptValue&)>;
+  using PromiseSettledCallback =
+      WTF::RepeatingFunction<void(const ScriptValue&)>;
 
   enum EventType {
     kAbortPayment,
diff --git a/third_party/WebKit/Source/modules/vr/BUILD.gn b/third_party/WebKit/Source/modules/vr/BUILD.gn
index dc5e5b3..4305778 100644
--- a/third_party/WebKit/Source/modules/vr/BUILD.gn
+++ b/third_party/WebKit/Source/modules/vr/BUILD.gn
@@ -34,12 +34,16 @@
     "latest/VRDevice.h",
     "latest/VRDeviceEvent.cpp",
     "latest/VRDeviceEvent.h",
+    "latest/VRDevicePose.cpp",
+    "latest/VRDevicePose.h",
     "latest/VRFrameOfReference.cpp",
     "latest/VRFrameOfReference.h",
     "latest/VRFrameProvider.cpp",
     "latest/VRFrameProvider.h",
     "latest/VRFrameRequestCallbackCollection.cpp",
     "latest/VRFrameRequestCallbackCollection.h",
+    "latest/VRPresentationFrame.cpp",
+    "latest/VRPresentationFrame.h",
     "latest/VRSession.cpp",
     "latest/VRSession.h",
     "latest/VRSessionEvent.cpp",
diff --git a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
index 77f992c..905d61635 100644
--- a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
+++ b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
@@ -10,6 +10,7 @@
 #include "core/dom/ScriptedAnimationController.h"
 #include "core/dom/TaskRunnerHelper.h"
 #include "core/dom/UserGestureIndicator.h"
+#include "core/frame/Frame.h"
 #include "core/frame/LocalFrame.h"
 #include "core/frame/LocalFrameView.h"
 #include "core/frame/UseCounter.h"
@@ -321,22 +322,23 @@
   }
 
   bool first_present = !is_presenting_;
+  Document* doc = GetDocument();
 
   // Initiating VR presentation is only allowed in response to a user gesture.
   // If the VRDisplay is already presenting, however, repeated calls are
   // allowed outside a user gesture so that the presented content may be
   // updated.
-  if (first_present && !UserGestureIndicator::ProcessingUserGesture()) {
-    DOMException* exception = DOMException::Create(
-        kInvalidStateError, "API can only be initiated by a user gesture.");
-    resolver->Reject(exception);
-    ReportPresentationResult(PresentationResult::kNotInitiatedByUserGesture);
-    return promise;
-  }
+  if (first_present) {
+    if (!Frame::HasTransientUserActivation(doc ? doc->GetFrame() : nullptr)) {
+      DOMException* exception = DOMException::Create(
+          kInvalidStateError, "API can only be initiated by a user gesture.");
+      resolver->Reject(exception);
+      ReportPresentationResult(PresentationResult::kNotInitiatedByUserGesture);
+      return promise;
+    }
 
-  // When we are requesting to start presentation with a user action or the
-  // display has activated, record the user action.
-  if (first_present && UserGestureIndicator::ProcessingUserGesture()) {
+    // When we are requesting to start presentation with a user action or the
+    // display has activated, record the user action.
     Platform::Current()->RecordAction(
         UserMetricsAction("VR.WebVR.requestPresent"));
   }
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRDevice.cpp b/third_party/WebKit/Source/modules/vr/latest/VRDevice.cpp
index 8112b76..1a4bf17 100644
--- a/third_party/WebKit/Source/modules/vr/latest/VRDevice.cpp
+++ b/third_party/WebKit/Source/modules/vr/latest/VRDevice.cpp
@@ -6,7 +6,8 @@
 
 #include "bindings/core/v8/ScriptPromiseResolver.h"
 #include "core/dom/DOMException.h"
-#include "core/dom/UserGestureIndicator.h"
+#include "core/frame/Frame.h"
+#include "core/frame/LocalFrame.h"
 #include "modules/EventTargetModules.h"
 #include "modules/vr/latest/VR.h"
 #include "modules/vr/latest/VRFrameProvider.h"
@@ -109,7 +110,8 @@
           DOMException::Create(kInvalidStateError, kActiveExclusiveSession));
     }
 
-    if (!UserGestureIndicator::ProcessingUserGesture()) {
+    Document* doc = ToDocumentOrNull(ExecutionContext::From(script_state));
+    if (!Frame::HasTransientUserActivation(doc ? doc->GetFrame() : nullptr)) {
       return ScriptPromise::RejectWithDOMException(
           script_state,
           DOMException::Create(kInvalidStateError, kRequestNotInUserGesture));
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRDevicePose.cpp b/third_party/WebKit/Source/modules/vr/latest/VRDevicePose.cpp
new file mode 100644
index 0000000..4e35e7e
--- /dev/null
+++ b/third_party/WebKit/Source/modules/vr/latest/VRDevicePose.cpp
@@ -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.
+
+#include "modules/vr/latest/VRDevicePose.h"
+
+#include "modules/vr/latest/VRSession.h"
+
+namespace blink {
+
+namespace {
+
+DOMFloat32Array* transformationMatrixToFloat32Array(
+    const TransformationMatrix& matrix) {
+  float array[] = {
+      static_cast<float>(matrix.M11()), static_cast<float>(matrix.M12()),
+      static_cast<float>(matrix.M13()), static_cast<float>(matrix.M14()),
+      static_cast<float>(matrix.M21()), static_cast<float>(matrix.M22()),
+      static_cast<float>(matrix.M23()), static_cast<float>(matrix.M24()),
+      static_cast<float>(matrix.M31()), static_cast<float>(matrix.M32()),
+      static_cast<float>(matrix.M33()), static_cast<float>(matrix.M34()),
+      static_cast<float>(matrix.M41()), static_cast<float>(matrix.M42()),
+      static_cast<float>(matrix.M43()), static_cast<float>(matrix.M44())};
+
+  return DOMFloat32Array::Create(array, 16);
+}
+
+}  // namespace
+
+VRDevicePose::VRDevicePose(
+    VRSession* session,
+    std::unique_ptr<TransformationMatrix> pose_model_matrix)
+    : session_(session), pose_model_matrix_(std::move(pose_model_matrix)) {}
+
+DOMFloat32Array* VRDevicePose::poseModelMatrix() const {
+  if (!pose_model_matrix_)
+    return nullptr;
+  return transformationMatrixToFloat32Array(*pose_model_matrix_);
+}
+
+void VRDevicePose::Trace(blink::Visitor* visitor) {
+  visitor->Trace(session_);
+  ScriptWrappable::Trace(visitor);
+}
+
+}  // namespace blink
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRDevicePose.h b/third_party/WebKit/Source/modules/vr/latest/VRDevicePose.h
new file mode 100644
index 0000000..f7095f75
--- /dev/null
+++ b/third_party/WebKit/Source/modules/vr/latest/VRDevicePose.h
@@ -0,0 +1,34 @@
+// 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 VRDevicePose_h
+#define VRDevicePose_h
+
+#include "core/typed_arrays/DOMTypedArray.h"
+#include "platform/bindings/ScriptWrappable.h"
+#include "platform/heap/Handle.h"
+#include "platform/transforms/TransformationMatrix.h"
+
+namespace blink {
+
+class VRSession;
+
+class VRDevicePose final : public ScriptWrappable {
+  DEFINE_WRAPPERTYPEINFO();
+
+ public:
+  VRDevicePose(VRSession*, std::unique_ptr<TransformationMatrix>);
+
+  DOMFloat32Array* poseModelMatrix() const;
+
+  virtual void Trace(blink::Visitor*);
+
+ private:
+  const Member<VRSession> session_;
+  std::unique_ptr<TransformationMatrix> pose_model_matrix_;
+};
+
+}  // namespace blink
+
+#endif  // VRWebGLLayer_h
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRDevicePose.idl b/third_party/WebKit/Source/modules/vr/latest/VRDevicePose.idl
new file mode 100644
index 0000000..dee76cab
--- /dev/null
+++ b/third_party/WebKit/Source/modules/vr/latest/VRDevicePose.idl
@@ -0,0 +1,11 @@
+// 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.
+
+// https://w3c.github.io/webvr/spec/latest/#vrdevicepose-interface
+[
+    SecureContext,
+    RuntimeEnabled=WebVR2
+] interface VRDevicePose {
+  readonly attribute Float32Array poseModelMatrix;
+};
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallback.idl b/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallback.idl
index 7bc28f8..c5f799f4 100644
--- a/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallback.idl
+++ b/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallback.idl
@@ -3,4 +3,4 @@
 // found in the LICENSE file.
 
 // https://w3c.github.io/webvr/spec/latest/#vrframerequestcallback
-callback VRFrameRequestCallback = void ();
+callback VRFrameRequestCallback = void (VRPresentationFrame frame);
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallbackCollection.cpp b/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallbackCollection.cpp
index cbbe76c..81568eb 100644
--- a/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallbackCollection.cpp
+++ b/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallbackCollection.cpp
@@ -7,6 +7,8 @@
 #include "bindings/modules/v8/v8_vr_frame_request_callback.h"
 #include "core/inspector/InspectorTraceEvents.h"
 #include "core/probe/CoreProbes.h"
+#include "modules/vr/latest/VRPresentationFrame.h"
+#include "modules/vr/latest/VRSession.h"
 
 namespace blink {
 
@@ -31,7 +33,9 @@
   }
 }
 
-void VRFrameRequestCallbackCollection::ExecuteCallbacks() {
+void VRFrameRequestCallbackCollection::ExecuteCallbacks(
+    VRSession* session,
+    VRPresentationFrame* frame) {
   // First, generate a list of callbacks to consider.  Callbacks registered from
   // this point on are considered only for the "next" frame, not this one.
   DCHECK(callbacks_to_invoke_.IsEmpty());
@@ -46,7 +50,7 @@
 
     probe::AsyncTask async_task(context_, callback);
     probe::UserCallback probe(context_, "VRRequestFrame", AtomicString(), true);
-    callback->call(nullptr);
+    callback->call(session, frame);
   }
 
   callbacks_to_invoke_.clear();
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallbackCollection.h b/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallbackCollection.h
index 42cd72f..0b6f5a6 100644
--- a/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallbackCollection.h
+++ b/third_party/WebKit/Source/modules/vr/latest/VRFrameRequestCallbackCollection.h
@@ -12,6 +12,8 @@
 
 class ExecutionContext;
 class V8VRFrameRequestCallback;
+class VRPresentationFrame;
+class VRSession;
 
 class VRFrameRequestCallbackCollection final : public TraceWrapperBase {
   DISALLOW_NEW();
@@ -22,7 +24,7 @@
   using CallbackId = int;
   CallbackId RegisterCallback(V8VRFrameRequestCallback*);
   void CancelCallback(CallbackId);
-  void ExecuteCallbacks();
+  void ExecuteCallbacks(VRSession*, VRPresentationFrame*);
 
   bool IsEmpty() const { return !callbacks_.size(); }
 
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRPresentationFrame.cpp b/third_party/WebKit/Source/modules/vr/latest/VRPresentationFrame.cpp
new file mode 100644
index 0000000..9041a67
--- /dev/null
+++ b/third_party/WebKit/Source/modules/vr/latest/VRPresentationFrame.cpp
@@ -0,0 +1,49 @@
+// 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 "modules/vr/latest/VRPresentationFrame.h"
+
+#include "modules/vr/latest/VRCoordinateSystem.h"
+#include "modules/vr/latest/VRDevicePose.h"
+#include "modules/vr/latest/VRSession.h"
+
+namespace blink {
+
+VRPresentationFrame::VRPresentationFrame(VRSession* session)
+    : session_(session) {}
+
+VRDevicePose* VRPresentationFrame::getDevicePose(
+    VRCoordinateSystem* coordinate_system) const {
+  // If we don't have a valid base pose return null. Most common when tracking
+  // is lost.
+  if (!base_pose_matrix_ || !coordinate_system) {
+    return nullptr;
+  }
+
+  // Must use a coordinate system created from the same session.
+  if (coordinate_system->session() != session_) {
+    return nullptr;
+  }
+
+  std::unique_ptr<TransformationMatrix> pose =
+      coordinate_system->TransformBasePose(*base_pose_matrix_);
+
+  if (!pose) {
+    return nullptr;
+  }
+
+  return new VRDevicePose(session(), std::move(pose));
+}
+
+void VRPresentationFrame::UpdateBasePose(
+    std::unique_ptr<TransformationMatrix> base_pose_matrix) {
+  base_pose_matrix_ = std::move(base_pose_matrix);
+}
+
+void VRPresentationFrame::Trace(blink::Visitor* visitor) {
+  visitor->Trace(session_);
+  ScriptWrappable::Trace(visitor);
+}
+
+}  // namespace blink
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRPresentationFrame.h b/third_party/WebKit/Source/modules/vr/latest/VRPresentationFrame.h
new file mode 100644
index 0000000..ed2e938
--- /dev/null
+++ b/third_party/WebKit/Source/modules/vr/latest/VRPresentationFrame.h
@@ -0,0 +1,42 @@
+// 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 VRPresentationFrame_h
+#define VRPresentationFrame_h
+
+#include "device/vr/vr_service.mojom-blink.h"
+#include "platform/bindings/ScriptWrappable.h"
+#include "platform/bindings/TraceWrapperMember.h"
+#include "platform/heap/Handle.h"
+#include "platform/transforms/TransformationMatrix.h"
+#include "platform/wtf/Forward.h"
+
+namespace blink {
+
+class VRCoordinateSystem;
+class VRDevicePose;
+class VRSession;
+
+class VRPresentationFrame final : public ScriptWrappable {
+  DEFINE_WRAPPERTYPEINFO();
+
+ public:
+  explicit VRPresentationFrame(VRSession*);
+
+  VRSession* session() const { return session_; }
+
+  VRDevicePose* getDevicePose(VRCoordinateSystem*) const;
+
+  void UpdateBasePose(std::unique_ptr<TransformationMatrix>);
+
+  virtual void Trace(blink::Visitor*);
+
+ private:
+  const Member<VRSession> session_;
+  std::unique_ptr<TransformationMatrix> base_pose_matrix_;
+};
+
+}  // namespace blink
+
+#endif  // VRWebGLLayer_h
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRPresentationFrame.idl b/third_party/WebKit/Source/modules/vr/latest/VRPresentationFrame.idl
new file mode 100644
index 0000000..b187780
--- /dev/null
+++ b/third_party/WebKit/Source/modules/vr/latest/VRPresentationFrame.idl
@@ -0,0 +1,13 @@
+// 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.
+
+// https://w3c.github.io/webvr/spec/latest/#vrpresentationframe-interface
+[
+    SecureContext,
+    RuntimeEnabled=WebVR2
+] interface VRPresentationFrame {
+  readonly attribute VRSession session;
+
+  VRDevicePose? getDevicePose(VRCoordinateSystem coordinateSystem);
+};
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRSession.cpp b/third_party/WebKit/Source/modules/vr/latest/VRSession.cpp
index c3af727..c4e6e5e 100644
--- a/third_party/WebKit/Source/modules/vr/latest/VRSession.cpp
+++ b/third_party/WebKit/Source/modules/vr/latest/VRSession.cpp
@@ -14,6 +14,7 @@
 #include "modules/vr/latest/VRFrameOfReference.h"
 #include "modules/vr/latest/VRFrameOfReferenceOptions.h"
 #include "modules/vr/latest/VRFrameProvider.h"
+#include "modules/vr/latest/VRPresentationFrame.h"
 #include "modules/vr/latest/VRSessionEvent.h"
 #include "platform/wtf/AutoReset.h"
 
@@ -165,7 +166,8 @@
   if (detached_)
     return;
 
-  // TODO: Use the base_pose_matrix to produce a VRPresentationFrame
+  VRPresentationFrame* presentation_frame = new VRPresentationFrame(this);
+  presentation_frame->UpdateBasePose(std::move(base_pose_matrix));
 
   if (pending_frame_) {
     pending_frame_ = false;
@@ -174,7 +176,7 @@
     // within these calls. resolving_frame_ will be true for the duration of the
     // callbacks.
     AutoReset<bool> resolving(&resolving_frame_, true);
-    callback_collection_.ExecuteCallbacks();
+    callback_collection_.ExecuteCallbacks(this, presentation_frame);
   }
 }
 
diff --git a/third_party/WebKit/Source/modules/vr/latest/VRSession.h b/third_party/WebKit/Source/modules/vr/latest/VRSession.h
index 85274772..b0f64dc 100644
--- a/third_party/WebKit/Source/modules/vr/latest/VRSession.h
+++ b/third_party/WebKit/Source/modules/vr/latest/VRSession.h
@@ -15,9 +15,9 @@
 
 namespace blink {
 
+class V8VRFrameRequestCallback;
 class VRDevice;
 class VRFrameOfReferenceOptions;
-class V8VRFrameRequestCallback;
 
 class VRSession final : public EventTargetWithInlineData {
   DEFINE_WRAPPERTYPEINFO();
diff --git a/third_party/WebKit/Source/modules/webaudio/BaseAudioContext.cpp b/third_party/WebKit/Source/modules/webaudio/BaseAudioContext.cpp
index b5d63559..fd065912 100644
--- a/third_party/WebKit/Source/modules/webaudio/BaseAudioContext.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/BaseAudioContext.cpp
@@ -35,7 +35,6 @@
 #include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/TaskRunnerHelper.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/frame/Settings.h"
 #include "core/html/media/AutoplayPolicy.h"
 #include "core/html/media/HTMLMediaElement.h"
@@ -735,7 +734,8 @@
       return true;
     case AutoplayPolicy::Type::kUserGestureRequired:
     case AutoplayPolicy::Type::kUserGestureRequiredForCrossOrigin:
-      return UserGestureIndicator::ProcessingUserGesture();
+      return Frame::HasTransientUserActivation(
+          GetDocument() ? GetDocument()->GetFrame() : nullptr);
     case AutoplayPolicy::Type::kDocumentUserActivationRequired:
       return AutoplayPolicy::IsDocumentAllowedToPlay(*GetDocument());
   }
diff --git a/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp b/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp
index 0b2bcae..25cadcb7 100644
--- a/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp
+++ b/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp
@@ -216,7 +216,7 @@
         ExecutionContext* context = database->GetExecutionContext();
         DCHECK(context->IsDocument());
         if (ToDocument(context)->GetFrame()->GetPage() == page)
-          callback(database);
+          callback.Run(database);
       }
     }
   }
diff --git a/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.h b/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.h
index 3ac700b..5575591 100644
--- a/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.h
+++ b/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.h
@@ -78,7 +78,7 @@
 
   void CloseDatabasesImmediately(SecurityOrigin*, const String& name);
 
-  using DatabaseCallback = Function<void(Database*)>;
+  using DatabaseCallback = WTF::RepeatingFunction<void(Database*)>;
   void ForEachOpenDatabaseInPage(Page*, DatabaseCallback);
 
   void PrepareToOpenDatabase(Database*);
diff --git a/third_party/WebKit/Source/modules/webmidi/MIDIAccessInitializer.cpp b/third_party/WebKit/Source/modules/webmidi/MIDIAccessInitializer.cpp
index 744efc4e..669d826 100644
--- a/third_party/WebKit/Source/modules/webmidi/MIDIAccessInitializer.cpp
+++ b/third_party/WebKit/Source/modules/webmidi/MIDIAccessInitializer.cpp
@@ -10,7 +10,6 @@
 #include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/ExecutionContext.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/frame/LocalFrame.h"
 #include "core/frame/Navigator.h"
 #include "modules/permissions/PermissionUtils.h"
@@ -41,10 +40,12 @@
 
   ConnectToPermissionService(GetExecutionContext(),
                              mojo::MakeRequest(&permission_service_));
+
+  Document* doc = ToDocumentOrNull(GetExecutionContext());
   permission_service_->RequestPermission(
       CreateMidiPermissionDescriptor(options_.hasSysex() && options_.sysex()),
       GetExecutionContext()->GetSecurityOrigin(),
-      UserGestureIndicator::ProcessingUserGesture(),
+      Frame::HasTransientUserActivation(doc ? doc->GetFrame() : nullptr),
       ConvertToBaseCallback(WTF::Bind(
           &MIDIAccessInitializer::OnPermissionsUpdated, WrapPersistent(this))));
 
diff --git a/third_party/WebKit/Source/modules/webshare/NavigatorShare.cpp b/third_party/WebKit/Source/modules/webshare/NavigatorShare.cpp
index 82806239..8f67085 100644
--- a/third_party/WebKit/Source/modules/webshare/NavigatorShare.cpp
+++ b/third_party/WebKit/Source/modules/webshare/NavigatorShare.cpp
@@ -8,7 +8,6 @@
 #include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/ExecutionContext.h"
-#include "core/dom/UserGestureIndicator.h"
 #include "core/frame/LocalFrame.h"
 #include "core/frame/Navigator.h"
 #include "modules/webshare/ShareData.h"
@@ -123,7 +122,7 @@
     return ScriptPromise::Reject(script_state, error);
   }
 
-  if (!UserGestureIndicator::ProcessingUserGesture()) {
+  if (!Frame::HasTransientUserActivation(doc ? doc->GetFrame() : nullptr)) {
     DOMException* error = DOMException::Create(
         kNotAllowedError,
         "Must be handling a user gesture to perform a share request.");
diff --git a/third_party/WebKit/Source/modules/webusb/USB.cpp b/third_party/WebKit/Source/modules/webusb/USB.cpp
index 64e7dcd7..50d1151 100644
--- a/third_party/WebKit/Source/modules/webusb/USB.cpp
+++ b/third_party/WebKit/Source/modules/webusb/USB.cpp
@@ -9,7 +9,7 @@
 #include "core/dom/DOMException.h"
 #include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
-#include "core/dom/UserGestureIndicator.h"
+#include "core/frame/Frame.h"
 #include "device/usb/public/interfaces/device.mojom-blink.h"
 #include "modules/EventTargetModules.h"
 #include "modules/webusb/USBConnectionEvent.h"
@@ -130,7 +130,7 @@
                                         WrapWeakPersistent(this))));
   }
 
-  if (!UserGestureIndicator::ConsumeUserGesture()) {
+  if (!Frame::ConsumeTransientUserActivation(frame)) {
     return ScriptPromise::RejectWithDOMException(
         script_state,
         DOMException::Create(
diff --git a/third_party/WebKit/Source/platform/ContentSettingCallbacks.h b/third_party/WebKit/Source/platform/ContentSettingCallbacks.h
index 1e9cd86..86d168f5 100644
--- a/third_party/WebKit/Source/platform/ContentSettingCallbacks.h
+++ b/third_party/WebKit/Source/platform/ContentSettingCallbacks.h
@@ -22,8 +22,8 @@
                                                          WTF::Closure denied);
   virtual ~ContentSettingCallbacks() {}
 
-  void OnAllowed() { allowed_(); }
-  void OnDenied() { denied_(); }
+  void OnAllowed() { std::move(allowed_).Run(); }
+  void OnDenied() { std::move(denied_).Run(); }
 
  private:
   ContentSettingCallbacks(WTF::Closure allowed, WTF::Closure denied);
diff --git a/third_party/WebKit/Source/platform/WebScheduler.cpp b/third_party/WebKit/Source/platform/WebScheduler.cpp
index ec2b8af..91ec350a 100644
--- a/third_party/WebKit/Source/platform/WebScheduler.cpp
+++ b/third_party/WebKit/Source/platform/WebScheduler.cpp
@@ -23,7 +23,9 @@
   ~IdleTaskRunner() override {}
 
   // WebThread::IdleTask implementation.
-  void Run(double deadline_seconds) override { task_(deadline_seconds); }
+  void Run(double deadline_seconds) override {
+    std::move(task_).Run(deadline_seconds);
+  }
 
  private:
   WebScheduler::IdleTask task_;
diff --git a/third_party/WebKit/Source/platform/WebTaskRunner.cpp b/third_party/WebKit/Source/platform/WebTaskRunner.cpp
index 8362e2a4..7dd8c0b5 100644
--- a/third_party/WebKit/Source/platform/WebTaskRunner.cpp
+++ b/third_party/WebKit/Source/platform/WebTaskRunner.cpp
@@ -32,7 +32,7 @@
 namespace {
 
 void RunCrossThreadClosure(CrossThreadClosure task) {
-  task();
+  std::move(task).Run();
 }
 
 }  // namespace
@@ -72,7 +72,7 @@
   void Run(const TaskHandle&) {
     WTF::Closure task = std::move(task_);
     weak_ptr_factory_.RevokeAll();
-    task();
+    std::move(task).Run();
   }
 
  private:
diff --git a/third_party/WebKit/Source/platform/bindings/Microtask.cpp b/third_party/WebKit/Source/platform/bindings/Microtask.cpp
index 2ffeabf..fc7cc8b 100644
--- a/third_party/WebKit/Source/platform/bindings/Microtask.cpp
+++ b/third_party/WebKit/Source/platform/bindings/Microtask.cpp
@@ -44,7 +44,7 @@
 static void MicrotaskFunctionCallback(void* data) {
   std::unique_ptr<WTF::Closure> task =
       WTF::WrapUnique(static_cast<WTF::Closure*>(data));
-  (*task)();
+  std::move(*task).Run();
 }
 
 void Microtask::EnqueueMicrotask(WTF::Closure callback) {
diff --git a/third_party/WebKit/Source/platform/heap/PersistentTest.cpp b/third_party/WebKit/Source/platform/heap/PersistentTest.cpp
index 81d41b7..e487992 100644
--- a/third_party/WebKit/Source/platform/heap/PersistentTest.cpp
+++ b/third_party/WebKit/Source/platform/heap/PersistentTest.cpp
@@ -28,16 +28,16 @@
 TEST(PersistentTest, BindCancellation) {
   Receiver* receiver = new Receiver;
   int counter = 0;
-  WTF::Closure function =
+  WTF::RepeatingClosure function =
       WTF::Bind(&Receiver::Increment, WrapWeakPersistent(receiver),
                 WTF::Unretained(&counter));
 
-  function();
+  function.Run();
   EXPECT_EQ(1, counter);
 
   receiver = nullptr;
   PreciselyCollectGarbage();
-  function();
+  function.Run();
   EXPECT_EQ(1, counter);
 }
 
@@ -48,12 +48,12 @@
       &Receiver::Increment, WrapCrossThreadWeakPersistent(receiver),
       WTF::CrossThreadUnretained(&counter));
 
-  function();
+  function.Run();
   EXPECT_EQ(1, counter);
 
   receiver = nullptr;
   PreciselyCollectGarbage();
-  function();
+  function.Run();
   EXPECT_EQ(1, counter);
 }
 
diff --git a/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp b/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp
index a933a9ae..93cf2180 100644
--- a/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp
+++ b/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp
@@ -645,13 +645,16 @@
 static bool TypeNeedsSynchronousCacheHit(Resource::Type type) {
   // Some resources types default to return data synchronously. For most of
   // these, it's because there are layout tests that expect data to return
-  // synchronously in case of cache hit.
+  // synchronously in case of cache hit. In the case of fonts, there was a
+  // performance regression.
   // FIXME: Get to the point where we don't need to special-case sync/async
   // behavior for different resource types.
   if (type == Resource::kCSSStyleSheet)
     return true;
   if (type == Resource::kScript)
     return true;
+  if (type == Resource::kFont)
+    return true;
   return false;
 }
 
diff --git a/third_party/WebKit/Source/platform/wtf/Functional.h b/third_party/WebKit/Source/platform/wtf/Functional.h
index 6a6ce10..92d5faf7 100644
--- a/third_party/WebKit/Source/platform/wtf/Functional.h
+++ b/third_party/WebKit/Source/platform/wtf/Functional.h
@@ -245,13 +245,6 @@
     return *this;
   }
 
-  // TODO(tzik): Remove operator() once we finished to update all call sites
-  // to use Run() instead.
-  R operator()(Args... args) const {
-    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-    return callback_.Run(std::forward<Args>(args)...);
-  }
-
   R Run(Args... args) const & {
     DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     return callback_.Run(std::forward<Args>(args)...);
@@ -303,8 +296,14 @@
       function, std::forward<BoundParameters>(bound_parameters)...);
 }
 
-typedef Function<void(), kSameThreadAffinity> Closure;
-typedef Function<void(), kCrossThreadAffinity> CrossThreadClosure;
+// TODO(tzik): Replace WTF::Function with base::OnceCallback, and
+// WTF::RepeatingFunction with base::RepeatingCallback.
+template <typename T>
+using RepeatingFunction = Function<T>;
+using RepeatingClosure = Function<void()>;
+
+using Closure = Function<void(), kSameThreadAffinity>;
+using CrossThreadClosure = Function<void(), kCrossThreadAffinity>;
 
 }  // namespace WTF
 
diff --git a/third_party/WebKit/Source/platform/wtf/FunctionalTest.cpp b/third_party/WebKit/Source/platform/wtf/FunctionalTest.cpp
index 7c4126d13..cc5c9cd 100644
--- a/third_party/WebKit/Source/platform/wtf/FunctionalTest.cpp
+++ b/third_party/WebKit/Source/platform/wtf/FunctionalTest.cpp
@@ -107,128 +107,6 @@
 namespace WTF {
 namespace {
 
-int ReturnFortyTwo() {
-  return 42;
-}
-
-TEST(FunctionalTest, Basic) {
-  Function<int()> return_forty_two_function = Bind(&ReturnFortyTwo);
-  EXPECT_EQ(42, return_forty_two_function());
-}
-
-int MultiplyByTwo(int n) {
-  return n * 2;
-}
-
-double MultiplyByOneAndAHalf(double d) {
-  return d * 1.5;
-}
-
-TEST(FunctionalTest, UnaryBind) {
-  Function<int()> multiply_four_by_two_function = Bind(MultiplyByTwo, 4);
-  EXPECT_EQ(8, multiply_four_by_two_function());
-
-  Function<double()> multiply_by_one_and_a_half_function =
-      Bind(MultiplyByOneAndAHalf, 3);
-  EXPECT_EQ(4.5, multiply_by_one_and_a_half_function());
-}
-
-TEST(FunctionalTest, UnaryPartBind) {
-  Function<int(int)> multiply_by_two_function = Bind(MultiplyByTwo);
-  EXPECT_EQ(8, multiply_by_two_function(4));
-
-  Function<double(double)> multiply_by_one_and_a_half_function =
-      Bind(MultiplyByOneAndAHalf);
-  EXPECT_EQ(4.5, multiply_by_one_and_a_half_function(3));
-}
-
-int Multiply(int x, int y) {
-  return x * y;
-}
-
-int Subtract(int x, int y) {
-  return x - y;
-}
-
-TEST(FunctionalTest, BinaryBind) {
-  Function<int()> multiply_four_by_two_function = Bind(Multiply, 4, 2);
-  EXPECT_EQ(8, multiply_four_by_two_function());
-
-  Function<int()> subtract_two_from_four_function = Bind(Subtract, 4, 2);
-  EXPECT_EQ(2, subtract_two_from_four_function());
-}
-
-TEST(FunctionalTest, BinaryPartBind) {
-  Function<int(int)> multiply_four_function = Bind(Multiply, 4);
-  EXPECT_EQ(8, multiply_four_function(2));
-  Function<int(int, int)> multiply_function = Bind(Multiply);
-  EXPECT_EQ(8, multiply_function(4, 2));
-
-  Function<int(int)> subtract_from_four_function = Bind(Subtract, 4);
-  EXPECT_EQ(2, subtract_from_four_function(2));
-  Function<int(int, int)> subtract_function = Bind(Subtract);
-  EXPECT_EQ(2, subtract_function(4, 2));
-}
-
-void SixArgFunc(int a, double b, char c, int* d, double* e, char* f) {
-  *d = a;
-  *e = b;
-  *f = c;
-}
-
-void AssertArgs(int actual_int,
-                double actual_double,
-                char actual_char,
-                int expected_int,
-                double expected_double,
-                char expected_char) {
-  EXPECT_EQ(expected_int, actual_int);
-  EXPECT_EQ(expected_double, actual_double);
-  EXPECT_EQ(expected_char, actual_char);
-}
-
-TEST(FunctionalTest, MultiPartBind) {
-  int a = 0;
-  double b = 0.5;
-  char c = 'a';
-
-  Function<void(int, double, char, int*, double*, char*)> unbound =
-      Bind(SixArgFunc);
-  unbound(1, 1.5, 'b', &a, &b, &c);
-  AssertArgs(a, b, c, 1, 1.5, 'b');
-
-  Function<void(double, char, int*, double*, char*)> one_bound =
-      Bind(SixArgFunc, 2);
-  one_bound(2.5, 'c', &a, &b, &c);
-  AssertArgs(a, b, c, 2, 2.5, 'c');
-
-  Function<void(char, int*, double*, char*)> two_bound =
-      Bind(SixArgFunc, 3, 3.5);
-  two_bound('d', &a, &b, &c);
-  AssertArgs(a, b, c, 3, 3.5, 'd');
-
-  Function<void(int*, double*, char*)> three_bound =
-      Bind(SixArgFunc, 4, 4.5, 'e');
-  three_bound(&a, &b, &c);
-  AssertArgs(a, b, c, 4, 4.5, 'e');
-
-  Function<void(double*, char*)> four_bound =
-      Bind(SixArgFunc, 5, 5.5, 'f', WTF::Unretained(&a));
-  four_bound(&b, &c);
-  AssertArgs(a, b, c, 5, 5.5, 'f');
-
-  Function<void(char*)> five_bound =
-      Bind(SixArgFunc, 6, 6.5, 'g', WTF::Unretained(&a), WTF::Unretained(&b));
-  five_bound(&c);
-  AssertArgs(a, b, c, 6, 6.5, 'g');
-
-  Function<void()> six_bound =
-      Bind(SixArgFunc, 7, 7.5, 'h', WTF::Unretained(&a), WTF::Unretained(&b),
-           WTF::Unretained(&c));
-  six_bound();
-  AssertArgs(a, b, c, 7, 7.5, 'h');
-}
-
 class A {
  public:
   explicit A(int i) : i_(i) {}
@@ -251,73 +129,6 @@
   int Overridden() override { return 43; }
 };
 
-TEST(FunctionalTest, MemberFunctionBind) {
-  A a(10);
-  Function<int()> function1 = Bind(&A::F, WTF::Unretained(&a));
-  EXPECT_EQ(10, function1());
-
-  Function<int()> function2 = Bind(&A::AddF, WTF::Unretained(&a), 15);
-  EXPECT_EQ(25, function2());
-
-  Function<int()> function3 = Bind(&A::Overridden, WTF::Unretained(&a));
-  EXPECT_EQ(42, function3());
-}
-
-TEST(FunctionalTest, MemberFunctionBindWithSubclassPointer) {
-  B b(10);
-  Function<int()> function1 = Bind(&A::F, WTF::Unretained(&b));
-  EXPECT_EQ(10, function1());
-
-  Function<int()> function2 = Bind(&A::AddF, WTF::Unretained(&b), 15);
-  EXPECT_EQ(25, function2());
-
-  Function<int()> function3 = Bind(&A::Overridden, WTF::Unretained(&b));
-  EXPECT_EQ(43, function3());
-
-  Function<int()> function4 = Bind(&B::F, WTF::Unretained(&b));
-  EXPECT_EQ(11, function4());
-
-  Function<int()> function5 = Bind(&B::AddF, WTF::Unretained(&b), 15);
-  EXPECT_EQ(26, function5());
-}
-
-TEST(FunctionalTest, MemberFunctionBindWithSubclassPointerWithCast) {
-  B b(10);
-  Function<int()> function1 = Bind(&A::F, WTF::Unretained(static_cast<A*>(&b)));
-  EXPECT_EQ(10, function1());
-
-  Function<int()> function2 =
-      Bind(&A::AddF, WTF::Unretained(static_cast<A*>(&b)), 15);
-  EXPECT_EQ(25, function2());
-
-  Function<int()> function3 =
-      Bind(&A::Overridden, WTF::Unretained(static_cast<A*>(&b)));
-  EXPECT_EQ(43, function3());
-}
-
-TEST(FunctionalTest, MemberFunctionPartBind) {
-  A a(10);
-  Function<int(class A*)> function1 = Bind(&A::F);
-  EXPECT_EQ(10, function1(&a));
-
-  Function<int(class A*, int)> unbound_function2 = Bind(&A::AddF);
-  EXPECT_EQ(25, unbound_function2(&a, 15));
-  Function<int(int)> object_bound_function2 =
-      Bind(&A::AddF, WTF::Unretained(&a));
-  EXPECT_EQ(25, object_bound_function2(15));
-}
-
-TEST(FunctionalTest, MemberFunctionBindByUniquePtr) {
-  Function<int()> function1 = WTF::Bind(&A::F, std::make_unique<A>(10));
-  EXPECT_EQ(10, function1());
-}
-
-TEST(FunctionalTest, MemberFunctionBindByPassedUniquePtr) {
-  Function<int()> function1 =
-      WTF::Bind(&A::F, WTF::Passed(std::make_unique<A>(10)));
-  EXPECT_EQ(10, function1());
-}
-
 class Number {
  public:
   REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE();
@@ -347,138 +158,6 @@
   mutable int ref_count_ = 1;
 };
 
-int MultiplyNumberByTwo(Number* number) {
-  return number->Value() * 2;
-}
-
-TEST(FunctionalTest, RefCountedStorage) {
-  scoped_refptr<Number> five = Number::Create(5);
-  EXPECT_TRUE(five->HasOneRef());
-  Function<int()> multiply_five_by_two_function =
-      WTF::Bind(MultiplyNumberByTwo, WTF::RetainedRef(five));
-  EXPECT_EQ(2, five->RefCount());
-  EXPECT_EQ(10, multiply_five_by_two_function());
-  EXPECT_EQ(2, five->RefCount());
-
-  Function<int()> multiply_four_by_two_function =
-      WTF::Bind(MultiplyNumberByTwo, WTF::RetainedRef(Number::Create(4)));
-  EXPECT_EQ(8, multiply_four_by_two_function());
-
-  scoped_refptr<Number> six = Number::Create(6);
-  Function<int()> multiply_six_by_two_function =
-      WTF::Bind(MultiplyNumberByTwo, WTF::RetainedRef(std::move(six)));
-  EXPECT_FALSE(six);
-  EXPECT_EQ(12, multiply_six_by_two_function());
-}
-
-TEST(FunctionalTest, UnretainedWithRefCounted) {
-  scoped_refptr<Number> five = Number::Create(5);
-  EXPECT_EQ(1, five->RefCount());
-  Function<int()> multiply_five_by_two_function =
-      WTF::Bind(MultiplyNumberByTwo, WTF::Unretained(five.get()));
-  EXPECT_EQ(1, five->RefCount());
-  EXPECT_EQ(10, multiply_five_by_two_function());
-  EXPECT_EQ(1, five->RefCount());
-}
-
-int ProcessUnwrappedClass(const UnwrappedClass& u, int v) {
-  return u.Value() * v;
-}
-
-// Tests that:
-// - ParamStorageTraits's wrap()/unwrap() are called, and
-// - bind()'s arguments are passed as references to ParamStorageTraits::wrap()
-//   with no additional copies.
-// This test would fail in compile if something is wrong,
-// rather than in runtime.
-TEST(FunctionalTest, WrapUnwrap) {
-  Function<int()> function =
-      Bind(ProcessUnwrappedClass, ClassToBeWrapped(3), 7);
-  EXPECT_EQ(21, function());
-}
-
-TEST(FunctionalTest, WrapUnwrapInPartialBind) {
-  Function<int(int)> partially_bound_function =
-      Bind(ProcessUnwrappedClass, ClassToBeWrapped(3));
-  EXPECT_EQ(21, partially_bound_function(7));
-}
-
-bool LotsOfArguments(int first,
-                     int second,
-                     int third,
-                     int fourth,
-                     int fifth,
-                     int sixth,
-                     int seventh,
-                     int eighth,
-                     int ninth,
-                     int tenth) {
-  return first == 1 && second == 2 && third == 3 && fourth == 4 && fifth == 5 &&
-         sixth == 6 && seventh == 7 && eighth == 8 && ninth == 9 && tenth == 10;
-}
-
-TEST(FunctionalTest, LotsOfBoundVariables) {
-  Function<bool(int, int)> eight_bound =
-      Bind(LotsOfArguments, 1, 2, 3, 4, 5, 6, 7, 8);
-  EXPECT_TRUE(eight_bound(9, 10));
-
-  Function<bool(int)> nine_bound =
-      Bind(LotsOfArguments, 1, 2, 3, 4, 5, 6, 7, 8, 9);
-  EXPECT_TRUE(nine_bound(10));
-
-  Function<bool()> all_bound =
-      Bind(LotsOfArguments, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
-  EXPECT_TRUE(all_bound());
-}
-
-int SingleMoveOnlyByRvalueReference(MoveOnly&& move_only) {
-  int value = move_only.Value();
-  MoveOnly(std::move(move_only));
-  return value;
-}
-
-int TripleMoveOnlysByRvalueReferences(MoveOnly&& first,
-                                      MoveOnly&& second,
-                                      MoveOnly&& third) {
-  int value = first.Value() + second.Value() + third.Value();
-  MoveOnly(std::move(first));
-  MoveOnly(std::move(second));
-  MoveOnly(std::move(third));
-  return value;
-}
-
-int SingleMoveOnlyByValue(MoveOnly move_only) {
-  return move_only.Value();
-}
-
-int TripleMoveOnlysByValues(MoveOnly first, MoveOnly second, MoveOnly third) {
-  return first.Value() + second.Value() + third.Value();
-}
-
-TEST(FunctionalTest, BindMoveOnlyObjects) {
-  MoveOnly one(1);
-  Function<int()> bound =
-      Bind(SingleMoveOnlyByRvalueReference, WTF::Passed(std::move(one)));
-  EXPECT_EQ(0, one.Value());  // Should be moved away.
-  EXPECT_EQ(1, bound());
-  // The stored value must be cleared in the first function call.
-  EXPECT_EQ(0, bound());
-
-  bound = Bind(SingleMoveOnlyByValue, WTF::Passed(MoveOnly(1)));
-  EXPECT_EQ(1, bound());
-  EXPECT_EQ(0, bound());
-
-  bound = Bind(TripleMoveOnlysByRvalueReferences, WTF::Passed(MoveOnly(1)),
-               WTF::Passed(MoveOnly(2)), WTF::Passed(MoveOnly(3)));
-  EXPECT_EQ(6, bound());
-  EXPECT_EQ(0, bound());
-
-  bound = Bind(TripleMoveOnlysByValues, WTF::Passed(MoveOnly(1)),
-               WTF::Passed(MoveOnly(2)), WTF::Passed(MoveOnly(3)));
-  EXPECT_EQ(6, bound());
-  EXPECT_EQ(0, bound());
-}
-
 class CountGeneration {
  public:
   CountGeneration() : copies_(0) {}
@@ -494,78 +173,20 @@
   int copies_;
 };
 
-int TakeCountCopyAsConstReference(const CountGeneration& counter) {
-  return counter.Copies();
-}
-
-int TakeCountCopyAsValue(CountGeneration counter) {
-  return counter.Copies();
-}
-
-TEST(FunctionalTest, CountCopiesOfBoundArguments) {
-  CountGeneration lvalue;
-  Function<int()> bound = Bind(TakeCountCopyAsConstReference, lvalue);
-  EXPECT_EQ(2, bound());  // wrapping and unwrapping.
-
-  bound = Bind(TakeCountCopyAsConstReference, CountGeneration());  // Rvalue.
-  EXPECT_EQ(2, bound());
-
-  bound = Bind(TakeCountCopyAsValue, lvalue);
-  // wrapping, unwrapping and copying in the final function argument.
-  EXPECT_EQ(3, bound());
-
-  bound = Bind(TakeCountCopyAsValue, CountGeneration());
-  EXPECT_EQ(3, bound());
-}
-
-TEST(FunctionalTest, MoveUnboundArgumentsByRvalueReference) {
-  Function<int(MoveOnly &&)> bound_single =
-      Bind(SingleMoveOnlyByRvalueReference);
-  EXPECT_EQ(1, bound_single(MoveOnly(1)));
-  EXPECT_EQ(42, bound_single(MoveOnly(42)));
-
-  Function<int(MoveOnly&&, MoveOnly&&, MoveOnly &&)> bound_triple =
-      Bind(TripleMoveOnlysByRvalueReferences);
-  EXPECT_EQ(6, bound_triple(MoveOnly(1), MoveOnly(2), MoveOnly(3)));
-  EXPECT_EQ(666, bound_triple(MoveOnly(111), MoveOnly(222), MoveOnly(333)));
-
-  Function<int(MoveOnly)> bound_single_by_value = Bind(SingleMoveOnlyByValue);
-  EXPECT_EQ(1, bound_single_by_value(MoveOnly(1)));
-
-  Function<int(MoveOnly, MoveOnly, MoveOnly)> bound_triple_by_value =
-      Bind(TripleMoveOnlysByValues);
-  EXPECT_EQ(6, bound_triple_by_value(MoveOnly(1), MoveOnly(2), MoveOnly(3)));
-}
-
-TEST(FunctionalTest, CountCopiesOfUnboundArguments) {
-  CountGeneration lvalue;
-  Function<int(const CountGeneration&)> bound1 =
-      Bind(TakeCountCopyAsConstReference);
-  EXPECT_EQ(0, bound1(lvalue));  // No copies!
-  EXPECT_EQ(0, bound1(CountGeneration()));
-
-  Function<int(CountGeneration)> bound2 = Bind(TakeCountCopyAsValue);
-  // At Function::operator(), at Callback::Run() and at the destination
-  // function.
-  EXPECT_EQ(3, bound2(lvalue));
-  // Compiler is allowed to optimize one copy away if the argument is rvalue.
-  EXPECT_LE(bound2(CountGeneration()), 2);
-}
-
 TEST(FunctionalTest, WeakPtr) {
   HasWeakPtrSupport obj;
   int counter = 0;
-  WTF::Closure bound =
+  WTF::RepeatingClosure bound =
       WTF::Bind(&HasWeakPtrSupport::Increment, obj.CreateWeakPtr(),
                 WTF::Unretained(&counter));
 
-  bound();
+  bound.Run();
   EXPECT_FALSE(bound.IsCancelled());
   EXPECT_EQ(1, counter);
 
   obj.RevokeAll();
   EXPECT_TRUE(bound.IsCancelled());
-  bound();
+  bound.Run();
   EXPECT_EQ(1, counter);
 }
 
diff --git a/third_party/WebKit/public/platform/InterfaceRegistry.h b/third_party/WebKit/public/platform/InterfaceRegistry.h
index de6553c..6f31ddd 100644
--- a/third_party/WebKit/public/platform/InterfaceRegistry.h
+++ b/third_party/WebKit/public/platform/InterfaceRegistry.h
@@ -27,7 +27,7 @@
 
   template <typename Interface>
   void AddInterface(
-      WTF::Function<void(mojo::InterfaceRequest<Interface>)> factory) {
+      WTF::RepeatingFunction<void(mojo::InterfaceRequest<Interface>)> factory) {
     AddInterface(Interface::Name_,
                  ConvertToBaseCallback(WTF::Bind(
                      &InterfaceRegistry::ForwardToInterfaceFactory<Interface>,
@@ -37,9 +37,10 @@
  private:
   template <typename Interface>
   static void ForwardToInterfaceFactory(
-      const WTF::Function<void(mojo::InterfaceRequest<Interface>)>& factory,
+      const WTF::RepeatingFunction<void(mojo::InterfaceRequest<Interface>)>&
+          factory,
       mojo::ScopedMessagePipeHandle handle) {
-    factory(mojo::InterfaceRequest<Interface>(std::move(handle)));
+    factory.Run(mojo::InterfaceRequest<Interface>(std::move(handle)));
   }
 #endif  // INSIDE_BLINK
 };
diff --git a/third_party/WebKit/public/platform/modules/permissions/permission.mojom b/third_party/WebKit/public/platform/modules/permissions/permission.mojom
index 37dc9ea..605b14b5 100644
--- a/third_party/WebKit/public/platform/modules/permissions/permission.mojom
+++ b/third_party/WebKit/public/platform/modules/permissions/permission.mojom
@@ -19,15 +19,22 @@
   BACKGROUND_SYNC,
   SENSORS,
   ACCESSIBILITY_EVENTS,
+  CLIPBOARD_READ,
+  CLIPBOARD_WRITE,
 };
 
 struct MidiPermissionDescriptor {
   bool sysex;
 };
 
+struct ClipboardPermissionDescriptor {
+  bool allowWithoutGesture;
+};
+
 // Union of possible extensions to the base PermissionDescriptor type.
 union PermissionDescriptorExtension {
   MidiPermissionDescriptor midi;
+  ClipboardPermissionDescriptor clipboard;
 };
 
 // This struct roughly corresponds to the PermissionDescriptor dictionary as
diff --git a/third_party/WebKit/public/platform/web_feature.mojom b/third_party/WebKit/public/platform/web_feature.mojom
index 03fa73b..2ae3978 100644
--- a/third_party/WebKit/public/platform/web_feature.mojom
+++ b/third_party/WebKit/public/platform/web_feature.mojom
@@ -1734,6 +1734,8 @@
   kWebAudioValueSetterIsSetValue = 2202,
   kHasIDClassTagAttribute = 2203,
   kHasBeforeOrAfterPseudoElement = 2204,
+  kShapeOutsideMaybeAffectedInlineSize = 2205,
+  kShapeOutsideMaybeAffectedInlinePosition = 2206,
   // Add new features immediately above this line. Don't change assigned
   // numbers of any item, and don't reuse removed slots.
   // Also, run update_use_counter_feature_enum.py in
diff --git a/third_party/crashpad/crashpad/test/gmock_main.cc b/third_party/crashpad/crashpad/test/gmock_main.cc
index 05492817..7f7bc93 100644
--- a/third_party/crashpad/crashpad/test/gmock_main.cc
+++ b/third_party/crashpad/crashpad/test/gmock_main.cc
@@ -16,8 +16,23 @@
 #include "gtest/gtest.h"
 #include "test/main_arguments.h"
 
+#if defined(CRASHPAD_IN_CHROMIUM)
+#include "base/bind.h"
+#include "base/test/launcher/unit_test_launcher.h"
+#include "base/test/test_suite.h"
+#endif
+
 int main(int argc, char* argv[]) {
   crashpad::test::InitializeMainArguments(argc, argv);
+#if defined(CRASHPAD_IN_CHROMIUM)
+  // Writes a json file with test details which is needed by swarming.
+  base::TestSuite test_suite(argc, argv);
+  return base::LaunchUnitTests(
+      argc,
+      argv,
+      base::Bind(&base::TestSuite::Run, base::Unretained(&test_suite)));
+#else
   testing::InitGoogleMock(&argc, argv);
   return RUN_ALL_TESTS();
+#endif
 }
diff --git a/third_party/crashpad/crashpad/test/gtest_main.cc b/third_party/crashpad/crashpad/test/gtest_main.cc
index 5608d2c..c3f6899c 100644
--- a/third_party/crashpad/crashpad/test/gtest_main.cc
+++ b/third_party/crashpad/crashpad/test/gtest_main.cc
@@ -15,8 +15,23 @@
 #include "gtest/gtest.h"
 #include "test/main_arguments.h"
 
+#if defined(CRASHPAD_IN_CHROMIUM)
+#include "base/bind.h"
+#include "base/test/launcher/unit_test_launcher.h"
+#include "base/test/test_suite.h"
+#endif
+
 int main(int argc, char* argv[]) {
   crashpad::test::InitializeMainArguments(argc, argv);
+#if defined(CRASHPAD_IN_CHROMIUM)
+  // Writes a json file with test details which is needed by swarming.
+  base::TestSuite test_suite(argc, argv);
+  return base::LaunchUnitTests(
+      argc,
+      argv,
+      base::Bind(&base::TestSuite::Run, base::Unretained(&test_suite)));
+#else
   testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
+#endif
 }
diff --git a/third_party/crashpad/crashpad/util/win/exception_handler_server_test.cc b/third_party/crashpad/crashpad/util/win/exception_handler_server_test.cc
index 6f880516..6f9ffc3 100644
--- a/third_party/crashpad/crashpad/util/win/exception_handler_server_test.cc
+++ b/third_party/crashpad/crashpad/util/win/exception_handler_server_test.cc
@@ -180,7 +180,13 @@
   DISALLOW_COPY_AND_ASSIGN(TestClient);
 };
 
-TEST_F(ExceptionHandlerServerTest, MultipleConnections) {
+// https://crashpad.chromium.org/bug/205
+#if defined(CRASHPAD_IN_CHROMIUM)
+#define MAYBE_MultipleConnections DISABLED_MultipleConnections
+#else
+#define MAYBE_MultipleConnections MultipleConnections
+#endif
+TEST_F(ExceptionHandlerServerTest, MAYBE_MultipleConnections) {
   WinChildProcess::EntryPoint<TestClient>();
 
   std::unique_ptr<WinChildProcess::Handles> handles_1 =
diff --git a/third_party/crashpad/crashpad/util/win/process_info_test.cc b/third_party/crashpad/crashpad/util/win/process_info_test.cc
index fc3bb4c..590ef15 100644
--- a/third_party/crashpad/crashpad/util/win/process_info_test.cc
+++ b/third_party/crashpad/crashpad/util/win/process_info_test.cc
@@ -189,12 +189,14 @@
   VerifyAddressInInCodePage(process_info, code_address);
 }
 
-TEST(ProcessInfo, OtherProcess) {
+// https://crashpad.chromium.org/bug/204
+TEST(ProcessInfo, DISABLED_OtherProcess) {
   TestOtherProcess(FILE_PATH_LITERAL("."));
 }
 
 #if defined(ARCH_CPU_64_BITS)
-TEST(ProcessInfo, OtherProcessWOW64) {
+// https://crashpad.chromium.org/bug/203
+TEST(ProcessInfo, DISABLED_OtherProcessWOW64) {
 #ifndef NDEBUG
   TestOtherProcess(FILE_PATH_LITERAL("..\\..\\out\\Debug"));
 #else
diff --git a/third_party/crashpad/crashpad/util/win/scoped_process_suspend_test.cc b/third_party/crashpad/crashpad/util/win/scoped_process_suspend_test.cc
index 2d0f5a0b..7dfcdf29 100644
--- a/third_party/crashpad/crashpad/util/win/scoped_process_suspend_test.cc
+++ b/third_party/crashpad/crashpad/util/win/scoped_process_suspend_test.cc
@@ -89,7 +89,13 @@
   DISALLOW_COPY_AND_ASSIGN(ScopedProcessSuspendTest);
 };
 
-TEST(ScopedProcessSuspend, ScopedProcessSuspend) {
+// https://crashpad.chromium.org/bug/205
+#if defined(CRASHPAD_IN_CHROMIUM)
+#define MAYBE_ScopedProcessSuspend DISABLED_ScopedProcessSuspend
+#else
+#define MAYBE_ScopedProcessSuspend ScopedProcessSuspend
+#endif
+TEST(ScopedProcessSuspend, MAYBE_ScopedProcessSuspend) {
   WinChildProcess::EntryPoint<ScopedProcessSuspendTest>();
   std::unique_ptr<WinChildProcess::Handles> handles = WinChildProcess::Launch();
 
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 645259ad..477d8ee 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -2572,6 +2572,7 @@
   <int value="9" label="Download cleanup task"/>
   <int value="10" label="WebView variations task"/>
   <int value="11" label="Offline content notification task"/>
+  <int value="12" label="WebAPK update task"/>
 </enum>
 
 <enum name="BackgroundTracingState">
@@ -16787,6 +16788,8 @@
   <int value="2202" label="WebAudioValueSetterIsSetValue"/>
   <int value="2203" label="HasIDClassTagAttribute"/>
   <int value="2204" label="HasBeforeOrAfterPseudoElement"/>
+  <int value="2205" label="ShapeOutsideMaybeAffectedInlineSize"/>
+  <int value="2206" label="ShapeOutsideMaybeAffectedInlinePosition"/>
 </enum>
 
 <enum name="FeedbackSource">
@@ -17668,6 +17671,7 @@
   <int value="10" label="File was older than maximum allowed age."/>
   <int value="11" label="File made for too many files in the directory."/>
   <int value="12" label="File made for too many bytes in the directory."/>
+  <int value="13" label="File was skipped because it belongs to this process."/>
 </enum>
 
 <enum name="FileMetricsProviderEmbeddedProfileResult">
@@ -31663,6 +31667,7 @@
   <int value="3" label="Mapped-File Failure"/>
   <int value="5" label="Mapped-File Already Exists"/>
   <int value="6" label="No Spare File"/>
+  <int value="7" label="Could Not Create Upload Directory"/>
 </enum>
 
 <enum name="PhotoEditorFileType">
@@ -41497,9 +41502,10 @@
 </enum>
 
 <enum name="WebApkUpdateRequestSent">
-  <int value="0" label="Sent immediately after an update check"/>
-  <int value="1" label="Sent when WebAPK is moved to background"/>
-  <int value="2" label="Sent by forcing an update"/>
+  <int value="0" label="Sent immediately after an update check (deprecated)"/>
+  <int value="1" label="Sent when WebAPK is moved to background (deprecated)"/>
+  <int value="2" label="Sent by forcing an update (deprecated)"/>
+  <int value="3" label="Sent when WebAPK is closed"/>
 </enum>
 
 <enum name="WebApkUserAction">
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 35c2a979..3b213578 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -91203,32 +91203,77 @@
   <summary>
     Records the available space that can be used when installing a WebAPK from
     Google Play fails. The space recorded is the available space beyond the
-    system's minimum free space threshold, with a range between -1000 and 500
+    system's minimum free space threshold, with a range between -1000 and 1000
     MB. Negative values mean that there is less free space available than the
     system's minimum, by the given amount.
   </summary>
 </histogram>
 
 <histogram name="WebApk.Install.AvailableSpace.Success" units="MB">
+  <obsolete>
+    Deprecated 2017-09. As of M64, this is no longer recorded.
+  </obsolete>
   <owner>hanxi@chromium.org</owner>
   <owner>ranj@chromium.org</owner>
   <owner>yfriedman@chromium.org</owner>
   <summary>
     Records the available space that can be used when installing a WebAPK from
     Google Play succeeds. The space recorded is the available space beyond the
-    system's minimum free space threshold, with a range between -1000 and 500
+    system's minimum free space threshold, with a range between -1000 and 1000
     MB. Negative values mean that there is less free space available than the
     system's minimum, by the given amount.
   </summary>
 </histogram>
 
+<histogram name="WebApk.Install.AvailableSpaceAfterFreeUpAll.Fail" units="MB">
+  <owner>hanxi@chromium.org</owner>
+  <owner>ranj@chromium.org</owner>
+  <owner>yfriedman@chromium.org</owner>
+  <summary>
+    Records the available space that can be used when installing a WebAPK from
+    Google Play fails after freeing up cache and unimportant storage. The space
+    recorded is the available space beyond the system's minimum free space
+    threshold, with a range between -1000 and 1000 MB. Negative values mean that
+    there is less free space available than the system's minimum, by the given
+    amount.
+  </summary>
+</histogram>
+
+<histogram name="WebApk.Install.AvailableSpaceAfterFreeUpCache.Fail" units="MB">
+  <owner>hanxi@chromium.org</owner>
+  <owner>ranj@chromium.org</owner>
+  <owner>yfriedman@chromium.org</owner>
+  <summary>
+    Records the available space that can be used when installing a WebAPK from
+    Google Play fails after freeing up cache. The space recorded is the
+    available space beyond the system's minimum free space threshold, with a
+    range between -1000 and 1000 MB. Negative values mean that there is less
+    free space available than the system's minimum, by the given amount.
+  </summary>
+</histogram>
+
+<histogram
+    name="WebApk.Install.AvailableSpaceAfterFreeUpUnimportantStorage.Fail"
+    units="MB">
+  <owner>hanxi@chromium.org</owner>
+  <owner>ranj@chromium.org</owner>
+  <owner>yfriedman@chromium.org</owner>
+  <summary>
+    Records the available space that can be used when installing a WebAPK from
+    Google Play fails after freeing up unimportant storage. The space recorded
+    is the available space beyond the system's minimum free space threshold,
+    with a range between -1000 and 1000 MB. Negative values mean that there is
+    less free space available than the system's minimum, by the given amount.
+  </summary>
+</histogram>
+
 <histogram name="WebApk.Install.ChromeCacheSize.Fail" units="MB">
   <owner>hanxi@chromium.org</owner>
   <owner>ranj@chromium.org</owner>
   <owner>yfriedman@chromium.org</owner>
   <summary>
     Records the Chrome cache size when installing a WebAPK from Google Play
-    fails, with a range between 0 and 2000, rounded to the nearest 10MB.
+    fails, with a range between 0 and 1000, rounded to the nearest 10MB.
   </summary>
 </histogram>
 
diff --git a/tools/perf/benchmark.csv b/tools/perf/benchmark.csv
index 4485b8f..38d37d0 100644
--- a/tools/perf/benchmark.csv
+++ b/tools/perf/benchmark.csv
@@ -30,12 +30,10 @@
 load_library_perf_tests,,
 loading.desktop,"kouhei@chormium.org, ksakamoto@chromium.org",
 loading.mobile,"kouhei@chromium.org, ksakamoto@chromium.org",
-media.android.tough_video_cases,"crouleau@chromium.org, videostack-eng@google.com",Internals>Media
 media.desktop,"johnchen@chromium.org, crouleau@chromium.org",Internals>Media
 media.media_cns_cases,"crouleau@chromium.org, videostack-eng@google.com",Internals>Media
 media.mobile,"johnchen@chromium.org, crouleau@chromium.org",Internals>Media
 media.mse_cases,"crouleau@chromium.org, videostack-eng@google.com",Internals>Media>Source
-media.tough_video_cases,crouleau@chromium.org,Internals>Media
 media_perftests,crouleau@chromium.org,
 memory.desktop,erikchen@chromium.org,
 memory.long_running_idle_gmail_background_tbmv2,ulan@chromium.org,
diff --git a/tools/perf/benchmarks/media.py b/tools/perf/benchmarks/media.py
index cac035b..2d144a4 100644
--- a/tools/perf/benchmarks/media.py
+++ b/tools/perf/benchmarks/media.py
@@ -50,48 +50,6 @@
             value=float(metrics[m]), important=True))
 
 
-# android: See media.android.tough_video_cases below
-@benchmark.Owner(emails=['crouleau@chromium.org'],
-                 component='Internals>Media')
-class MediaToughVideoCases(perf_benchmark.PerfBenchmark):
-  """Obtains media metrics for key user scenarios."""
-  test = media.Media
-  page_set = page_sets.ToughVideoCasesPageSet
-  SUPPORTED_PLATFORMS = [story.expectations.ALL_DESKTOP]
-
-  @classmethod
-  def Name(cls):
-    return 'media.tough_video_cases'
-
-  def GetExpectations(self):
-    class StoryExpectations(story.expectations.StoryExpectations):
-      def SetExpectations(self):
-        pass
-    return StoryExpectations()
-
-
-# If any story is failing on svelte, please only disable on svelte.
-@benchmark.Owner(emails=['crouleau@chromium.org', 'videostack-eng@google.com'],
-                 component='Internals>Media')
-class MediaAndroidToughVideoCases(perf_benchmark.PerfBenchmark):
-  """Obtains media metrics for key user scenarios on Android."""
-  test = media.Media
-  tag = 'android'
-  page_set = page_sets.ToughVideoCasesPageSet
-  options = {'story_tag_filter_exclude': 'is_4k,is_50fps'}
-  SUPPORTED_PLATFORMS = [story.expectations.ANDROID_NOT_WEBVIEW]
-
-  @classmethod
-  def Name(cls):
-    return 'media.android.tough_video_cases'
-
-  def GetExpectations(self):
-    class StoryExpectations(story.expectations.StoryExpectations):
-      def SetExpectations(self):
-        pass
-    return StoryExpectations()
-
-
 class _MediaBenchmark(perf_benchmark.PerfBenchmark):
   """ Base class for TBMv2-based media benchmarks (MediaDesktop and
   MediaMobile)."""
@@ -132,8 +90,7 @@
 @benchmark.Owner(emails=['johnchen@chromium.org', 'crouleau@chromium.org'],
                  component='Internals>Media')
 class MediaDesktop(_MediaBenchmark):
-  """Obtains media metrics using TBMv2.
-  Will eventually replace MediaToughVideoCases class."""
+  """Obtains media performance for key user scenarios on desktop."""
   SUPPORTED_PLATFORMS = [story.expectations.ALL_DESKTOP]
 
   @classmethod
@@ -158,8 +115,7 @@
 @benchmark.Owner(emails=['johnchen@chromium.org', 'crouleau@chromium.org'],
                  component='Internals>Media')
 class MediaMobile(_MediaBenchmark):
-  """Obtains media metrics for key user scenarios on Android using TBMv2.
-  Will eventually replace MediaAndroidToughVideoCases class."""
+  """Obtains media performance for key user scenarios on mobile devices."""
 
   tag = 'android'
   options = {'story_tag_filter_exclude': 'is_4k,is_50fps'}
diff --git a/tools/perf/fetch_benchmark_deps_unittest.py b/tools/perf/fetch_benchmark_deps_unittest.py
index 605885c..9c2485e 100644
--- a/tools/perf/fetch_benchmark_deps_unittest.py
+++ b/tools/perf/fetch_benchmark_deps_unittest.py
@@ -57,7 +57,7 @@
     self._RunFetchBenchmarkDepsTest('smoothness.top_25_smooth')
 
   def testFetchServingDirs(self):
-    self._RunFetchBenchmarkDepsTest('media.tough_video_cases')
+    self._RunFetchBenchmarkDepsTest('media.desktop')
 
   def testFetchOctane(self):
     octane_wpr_path = os.path.join(
diff --git a/tools/perf/page_sets/system_health/expectations.py b/tools/perf/page_sets/system_health/expectations.py
index ae130d5..4931117 100644
--- a/tools/perf/page_sets/system_health/expectations.py
+++ b/tools/perf/page_sets/system_health/expectations.py
@@ -68,10 +68,6 @@
                       'crbug.com/657433')
     self.DisableStory('browse:news:toi', [expectations.ALL_ANDROID],
                       'crbug.com/728081')
-    self.DisableStory('browse:shopping:lazada', [expectations.ANDROID_NEXUS5],
-                      'crbug.com/778108')
-    self.DisableStory('load:tools:weather', [expectations.ANDROID_NEXUS5],
-                      'crbug.com/778108')
     self.DisableStory(
         'load:tools:drive',
         [expectations.ANDROID_NEXUS5X, expectations.ANDROID_WEBVIEW],
@@ -106,6 +102,10 @@
         'load:tools:drive',
         [expectations.ANDROID_NEXUS5X, expectations.ANDROID_WEBVIEW],
         'crbug.com/738854')
+    self.DisableStory('browse:shopping:lazada', [expectations.ANDROID_NEXUS5],
+                      'crbug.com/778108')
+    self.DisableStory('load:tools:weather', [expectations.ANDROID_NEXUS5],
+                      'crbug.com/778108')
     self.DisableStory('long_running:tools:gmail-background',
                       [expectations.ANDROID_SVELTE], 'crbug.com/777355')
     # TODO(rnephew): This disabling should move to CanRunOnBrowser.
diff --git a/ui/display/manager/chromeos/touch_device_manager.cc b/ui/display/manager/chromeos/touch_device_manager.cc
index e61407db..76fba8f 100644
--- a/ui/display/manager/chromeos/touch_device_manager.cc
+++ b/ui/display/manager/chromeos/touch_device_manager.cc
@@ -101,6 +101,61 @@
 }  // namespace
 
 ////////////////////////////////////////////////////////////////////////////////
+// TouchDeviceIdentifier
+
+// static
+const TouchDeviceIdentifier&
+TouchDeviceIdentifier::GetFallbackTouchDeviceIdentifier() {
+  static const TouchDeviceIdentifier kFallTouchDeviceIdentifier(
+      GenerateIdentifier(kFallbackTouchDeviceName, 0, 0));
+  return kFallTouchDeviceIdentifier;
+}
+
+// static
+uint32_t TouchDeviceIdentifier::GenerateIdentifier(std::string name,
+                                                   uint16_t vendor_id,
+                                                   uint16_t product_id) {
+  std::string hash_str = name + "-" + base::UintToString(vendor_id) + "-" +
+                         base::UintToString(product_id);
+  return base::PersistentHash(hash_str);
+}
+
+// static
+TouchDeviceIdentifier TouchDeviceIdentifier::FromDevice(
+    const ui::TouchscreenDevice& touch_device) {
+  return TouchDeviceIdentifier(GenerateIdentifier(
+      touch_device.name, touch_device.vendor_id, touch_device.product_id));
+}
+
+TouchDeviceIdentifier::TouchDeviceIdentifier(uint32_t identifier)
+    : id_(identifier) {}
+
+TouchDeviceIdentifier::TouchDeviceIdentifier(const TouchDeviceIdentifier& other)
+    : id_(other.id_) {}
+
+TouchDeviceIdentifier& TouchDeviceIdentifier::operator=(
+    TouchDeviceIdentifier other) {
+  id_ = other.id_;
+  return *this;
+}
+
+bool TouchDeviceIdentifier::operator<(const TouchDeviceIdentifier& rhs) const {
+  return id_ < rhs.id_;
+}
+
+bool TouchDeviceIdentifier::operator==(const TouchDeviceIdentifier& rhs) const {
+  return id_ == rhs.id_;
+}
+
+bool TouchDeviceIdentifier::operator!=(const TouchDeviceIdentifier& rhs) const {
+  return !(*this == rhs);
+}
+
+std::string TouchDeviceIdentifier::ToString() const {
+  return base::UintToString(id_);
+}
+
+////////////////////////////////////////////////////////////////////////////////
 // TouchCalibrationData
 
 // static
@@ -112,25 +167,6 @@
              : pair_1.first.x() < pair_2.first.x();
 }
 
-// static
-uint32_t TouchCalibrationData::GenerateTouchDeviceIdentifier(
-    const ui::TouchscreenDevice& device) {
-  std::string hash_str = device.name + "-" +
-                         base::UintToString(device.vendor_id) + "-" +
-                         base::UintToString(device.product_id);
-  return base::PersistentHash(hash_str);
-}
-
-// static
-uint32_t TouchCalibrationData::GetFallbackTouchDeviceIdentifier() {
-  ui::TouchscreenDevice device;
-  device.name = kFallbackTouchDeviceName;
-  device.vendor_id = device.product_id = 0;
-  static const uint32_t kFallbackTouchDeviceIdentifier =
-      GenerateTouchDeviceIdentifier(device);
-  return kFallbackTouchDeviceIdentifier;
-}
-
 TouchCalibrationData::TouchCalibrationData() {}
 
 TouchCalibrationData::TouchCalibrationData(
@@ -380,9 +416,12 @@
 
 void TouchDeviceManager::Associate(ManagedDisplayInfo* display,
                                    const ui::TouchscreenDevice& device) {
-  uint32_t touch_device_identifier =
-      TouchCalibrationData::GenerateTouchDeviceIdentifier(device);
-  display->AddTouchDevice(touch_device_identifier);
+  display->AddTouchDevice(TouchDeviceIdentifier::FromDevice(device));
+}
+
+std::ostream& operator<<(std::ostream& os,
+                         const TouchDeviceIdentifier& identifier) {
+  return os << identifier.ToString();
 }
 
 }  // namespace display
diff --git a/ui/display/manager/chromeos/touch_device_manager.h b/ui/display/manager/chromeos/touch_device_manager.h
index df28b85..e494a4e 100644
--- a/ui/display/manager/chromeos/touch_device_manager.h
+++ b/ui/display/manager/chromeos/touch_device_manager.h
@@ -21,6 +21,35 @@
 
 class ManagedDisplayInfo;
 
+// A unique identifier to identify |ui::TouchscreenDevices|. These identifiers
+// are persistent across system restarts.
+class DISPLAY_MANAGER_EXPORT TouchDeviceIdentifier {
+ public:
+  // Returns a touch device identifier used as a default or a fallback option.
+  static const TouchDeviceIdentifier& GetFallbackTouchDeviceIdentifier();
+
+  static TouchDeviceIdentifier FromDevice(
+      const ui::TouchscreenDevice& touch_device);
+
+  explicit TouchDeviceIdentifier(uint32_t identifier);
+  TouchDeviceIdentifier(const TouchDeviceIdentifier& other);
+  ~TouchDeviceIdentifier() = default;
+
+  TouchDeviceIdentifier& operator=(TouchDeviceIdentifier other);
+
+  bool operator<(const TouchDeviceIdentifier& other) const;
+  bool operator==(const TouchDeviceIdentifier& other) const;
+  bool operator!=(const TouchDeviceIdentifier& other) const;
+
+  std::string ToString() const;
+
+ private:
+  static uint32_t GenerateIdentifier(std::string name,
+                                     uint16_t vendor_id,
+                                     uint16_t product_id);
+  uint32_t id_;
+};
+
 // A struct that represents all the data required for touch calibration for the
 // display.
 struct DISPLAY_MANAGER_EXPORT TouchCalibrationData {
@@ -33,14 +62,6 @@
   static bool CalibrationPointPairCompare(const CalibrationPointPair& pair_1,
                                           const CalibrationPointPair& pair_2);
 
-  // Returns a hash that can be used as a key for storing display preferences
-  // for a display associated with a touch device.
-  static uint32_t GenerateTouchDeviceIdentifier(
-      const ui::TouchscreenDevice& device);
-
-  // Returns a touch device identifier used as a default or a fallback option.
-  static uint32_t GetFallbackTouchDeviceIdentifier();
-
   TouchCalibrationData();
   TouchCalibrationData(const CalibrationPointPairQuad& point_pairs,
                        const gfx::Size& bounds);
@@ -96,6 +117,10 @@
   DISALLOW_COPY_AND_ASSIGN(TouchDeviceManager);
 };
 
+DISPLAY_MANAGER_EXPORT std::ostream& operator<<(
+    std::ostream& os,
+    const TouchDeviceIdentifier& identifier);
+
 }  // namespace display
 
 #endif  // UI_DISPLAY_MANAGER_CHROMEOS_TOUCH_DEVICE_MANAGER_H_
diff --git a/ui/display/manager/chromeos/touch_device_manager_unittest.cc b/ui/display/manager/chromeos/touch_device_manager_unittest.cc
index d8b1ce9..47485c7 100644
--- a/ui/display/manager/chromeos/touch_device_manager_unittest.cc
+++ b/ui/display/manager/chromeos/touch_device_manager_unittest.cc
@@ -21,8 +21,8 @@
 
 namespace display {
 namespace {
-uint32_t ToIdentifier(const ui::TouchscreenDevice& device) {
-  return TouchCalibrationData::GenerateTouchDeviceIdentifier(device);
+TouchDeviceIdentifier ToIdentifier(const ui::TouchscreenDevice& device) {
+  return TouchDeviceIdentifier::FromDevice(device);
 }
 
 ui::TouchscreenDevice CreateTouchscreenDevice(int id,
diff --git a/ui/display/manager/chromeos/touch_transform_controller.cc b/ui/display/manager/chromeos/touch_transform_controller.cc
index a8b113f..71c07d7 100644
--- a/ui/display/manager/chromeos/touch_transform_controller.cc
+++ b/ui/display/manager/chromeos/touch_transform_controller.cc
@@ -10,6 +10,7 @@
 #include "third_party/skia/include/core/SkMatrix44.h"
 #include "ui/display/display_layout.h"
 #include "ui/display/manager/chromeos/display_configurator.h"
+#include "ui/display/manager/chromeos/touch_device_manager.h"
 #include "ui/display/manager/chromeos/touch_transform_setter.h"
 #include "ui/display/manager/display_manager.h"
 #include "ui/display/manager/managed_display_info.h"
@@ -23,13 +24,12 @@
 
 namespace {
 
-ui::TouchscreenDevice FindTouchscreenByIdentifier(uint32_t identifier) {
+ui::TouchscreenDevice FindTouchscreenByIdentifier(
+    const TouchDeviceIdentifier& identifier) {
   const std::vector<ui::TouchscreenDevice>& touchscreens =
       ui::InputDeviceManager::GetInstance()->GetTouchscreenDevices();
   for (const auto& touchscreen : touchscreens) {
-    uint32_t touch_device_identifier =
-        TouchCalibrationData::GenerateTouchDeviceIdentifier(touchscreen);
-    if (touch_device_identifier == identifier)
+    if (TouchDeviceIdentifier::FromDevice(touchscreen) == identifier)
       return touchscreen;
   }
 
@@ -221,8 +221,9 @@
   // transform as we want to use the raw native touch input data for calibration
   if (is_calibrating_)
     return ctm;
-  uint32_t touch_device_identifier =
-      TouchCalibrationData::GenerateTouchDeviceIdentifier(touchscreen);
+  TouchDeviceIdentifier touch_device_identifier =
+      TouchDeviceIdentifier::FromDevice(touchscreen);
+
   // If touch calibration data is unavailable, use naive approach.
   if (!touch_display.HasTouchCalibrationData(touch_device_identifier)) {
     return GetUncalibratedTransform(ctm, display, touch_display, touch_area,
diff --git a/ui/display/manager/chromeos/touch_transform_controller.h b/ui/display/manager/chromeos/touch_transform_controller.h
index 5a04a46..9750a5e2 100644
--- a/ui/display/manager/chromeos/touch_transform_controller.h
+++ b/ui/display/manager/chromeos/touch_transform_controller.h
@@ -26,6 +26,7 @@
 class DisplayManager;
 class ManagedDisplayInfo;
 class TouchTransformSetter;
+class TouchDeviceIdentifier;
 
 namespace test {
 class TouchTransformControllerTest;
@@ -57,7 +58,7 @@
     UpdateData();
     ~UpdateData();
 
-    std::map<uint32_t, double> device_to_scale;
+    std::map<display::TouchDeviceIdentifier, double> device_to_scale;
     std::vector<ui::TouchDeviceTransform> touch_device_transforms;
   };
 
diff --git a/ui/display/manager/chromeos/touch_transform_controller_unittest.cc b/ui/display/manager/chromeos/touch_transform_controller_unittest.cc
index 0a60e88d..1b60f43 100644
--- a/ui/display/manager/chromeos/touch_transform_controller_unittest.cc
+++ b/ui/display/manager/chromeos/touch_transform_controller_unittest.cc
@@ -30,8 +30,7 @@
                                      const gfx::Rect& bounds) {
   ManagedDisplayInfo info(id, std::string(), false);
   info.SetBounds(bounds);
-  info.AddTouchDevice(
-      TouchCalibrationData::GenerateTouchDeviceIdentifier(device));
+  info.AddTouchDevice(TouchDeviceIdentifier::FromDevice(device));
 
   // Create a default mode.
   ManagedDisplayInfo::ManagedDisplayModeList default_modes(
@@ -550,8 +549,8 @@
 
   const std::string msg = GetTouchPointString(user_input);
 
-  uint32_t touch_device_identifier =
-      TouchCalibrationData::GenerateTouchDeviceIdentifier(touchscreen);
+  display::TouchDeviceIdentifier touch_device_identifier =
+      display::TouchDeviceIdentifier::FromDevice(touchscreen);
 
   display.SetTouchCalibrationData(touch_device_identifier, touch_data);
   EXPECT_TRUE(display.HasTouchCalibrationData(touch_device_identifier));
@@ -598,8 +597,8 @@
 
   const std::string msg = GetTouchPointString(user_input);
 
-  uint32_t touch_device_identifier =
-      TouchCalibrationData::GenerateTouchDeviceIdentifier(touchscreen);
+  display::TouchDeviceIdentifier touch_device_identifier =
+      display::TouchDeviceIdentifier::FromDevice(touchscreen);
 
   display.SetTouchCalibrationData(touch_device_identifier, touch_data);
   EXPECT_TRUE(display.HasTouchCalibrationData(touch_device_identifier));
@@ -648,8 +647,8 @@
 
   const std::string msg = GetTouchPointString(user_input);
 
-  uint32_t touch_device_identifier =
-      TouchCalibrationData::GenerateTouchDeviceIdentifier(touchscreen);
+  display::TouchDeviceIdentifier touch_device_identifier =
+      display::TouchDeviceIdentifier::FromDevice(touchscreen);
 
   display.SetTouchCalibrationData(touch_device_identifier, touch_data);
   EXPECT_TRUE(display.HasTouchCalibrationData(touch_device_identifier));
@@ -693,8 +692,8 @@
 
   const std::string msg = GetTouchPointString(user_input);
 
-  uint32_t touch_device_identifier =
-      TouchCalibrationData::GenerateTouchDeviceIdentifier(touchscreen);
+  display::TouchDeviceIdentifier touch_device_identifier =
+      display::TouchDeviceIdentifier::FromDevice(touchscreen);
 
   display.SetTouchCalibrationData(touch_device_identifier, touch_data);
   EXPECT_TRUE(display.HasTouchCalibrationData(touch_device_identifier));
@@ -740,8 +739,8 @@
                          60, false, false));
   internal_display_info.SetManagedDisplayModes(internal_modes);
 
-  uint32_t touch_device_identifier =
-      TouchCalibrationData::GenerateTouchDeviceIdentifier(internal_touchscreen);
+  display::TouchDeviceIdentifier touch_device_identifier =
+      display::TouchDeviceIdentifier::FromDevice(internal_touchscreen);
 
   ui::DeviceDataManager* device_manager = ui::DeviceDataManager::GetInstance();
 
@@ -818,8 +817,8 @@
                          60, false, false));
   internal_display_info.SetManagedDisplayModes(internal_modes);
 
-  uint32_t touch_device_identifier =
-      TouchCalibrationData::GenerateTouchDeviceIdentifier(internal_touchscreen);
+  display::TouchDeviceIdentifier touch_device_identifier =
+      display::TouchDeviceIdentifier::FromDevice(internal_touchscreen);
 
   ui::DeviceDataManager* device_manager = ui::DeviceDataManager::GetInstance();
 
diff --git a/ui/display/manager/display_manager.cc b/ui/display/manager/display_manager.cc
index b4b1349..89732c2 100644
--- a/ui/display/manager/display_manager.cc
+++ b/ui/display/manager/display_manager.cc
@@ -510,7 +510,8 @@
     float device_scale_factor
 #if defined(OS_CHROMEOS)
     ,
-    std::map<uint32_t, TouchCalibrationData>* touch_calibration_data_map
+    std::map<TouchDeviceIdentifier, TouchCalibrationData>*
+        touch_calibration_data_map
 #endif
     ) {
   if (display_info_.find(display_id) == display_info_.end())
@@ -1114,7 +1115,7 @@
     int64_t display_id,
     const TouchCalibrationData::CalibrationPointPairQuad& point_pair_quad,
     const gfx::Size& display_bounds,
-    uint32_t touch_device_identifier) {
+    const TouchDeviceIdentifier& touch_device_identifier) {
   // If the touch device identifier is associated with a touch device for the
   // then do not perform any calibration. We do not want to modify any
   // calibration information related to the internal display.
@@ -1147,7 +1148,7 @@
 
 void DisplayManager::ClearTouchCalibrationData(
     int64_t display_id,
-    base::Optional<uint32_t> touch_device_identifier) {
+    base::Optional<TouchDeviceIdentifier> touch_device_identifier) {
   bool update = false;
   DisplayInfoList display_info_list;
   for (const auto& display : active_display_list_) {
diff --git a/ui/display/manager/display_manager.h b/ui/display/manager/display_manager.h
index e95adf7..f5d6835 100644
--- a/ui/display/manager/display_manager.h
+++ b/ui/display/manager/display_manager.h
@@ -202,7 +202,8 @@
       float device_scale_factor
 #if defined(OS_CHROMEOS)
       ,
-      std::map<uint32_t, TouchCalibrationData>* touch_calibration_data_map
+      std::map<TouchDeviceIdentifier, TouchCalibrationData>*
+          touch_calibration_data_map
 #endif
       );
 
@@ -334,10 +335,10 @@
       int64_t display_id,
       const TouchCalibrationData::CalibrationPointPairQuad& point_pair_quad,
       const gfx::Size& display_bounds,
-      uint32_t touch_device_identifier);
+      const TouchDeviceIdentifier& touch_device_identifier);
   void ClearTouchCalibrationData(
       int64_t display_id,
-      base::Optional<uint32_t> touch_device_identifier);
+      base::Optional<TouchDeviceIdentifier> touch_device_identifier);
 #endif
 
   // Sets/gets default multi display mode.
diff --git a/ui/display/manager/managed_display_info.cc b/ui/display/manager/managed_display_info.cc
index cfe0c88e..68a272de 100644
--- a/ui/display/manager/managed_display_info.cc
+++ b/ui/display/manager/managed_display_info.cc
@@ -318,7 +318,9 @@
 
   active_rotation_source_ = native_info.active_rotation_source_;
   touch_support_ = native_info.touch_support_;
+#if defined(OS_CHROMEOS)
   touch_device_identifiers_ = native_info.touch_device_identifiers_;
+#endif
   device_scale_factor_ = native_info.device_scale_factor_;
   DCHECK(!native_info.bounds_in_native_.IsEmpty());
   bounds_in_native_ = native_info.bounds_in_native_;
@@ -420,13 +422,10 @@
 
 std::string ManagedDisplayInfo::ToString() const {
   int rotation_degree = static_cast<int>(GetActiveRotation()) * 90;
-  std::string touch_device_count_str =
-      base::UintToString(touch_device_identifiers_.size());
 
   std::string result = base::StringPrintf(
       "ManagedDisplayInfo[%lld] native bounds=%s, size=%s, device-scale=%g, "
-      "overscan=%s, rotation=%d, ui-scale=%g, touchscreen=%s, "
-      "touch device count=[%" PRIuS "]",
+      "overscan=%s, rotation=%d, ui-scale=%g, touchscreen=%s, ",
       static_cast<long long int>(id_), bounds_in_native_.ToString().c_str(),
       size_in_pixel_.ToString().c_str(), device_scale_factor_,
       overscan_insets_in_dip_.ToString().c_str(), rotation_degree,
@@ -434,8 +433,7 @@
       touch_support_ == Display::TOUCH_SUPPORT_AVAILABLE
           ? "yes"
           : touch_support_ == Display::TOUCH_SUPPORT_UNAVAILABLE ? "no"
-                                                                 : "unknown",
-      touch_device_identifiers_.size());
+                                                                 : "unknown");
 
   return result;
 }
@@ -453,8 +451,10 @@
   return ToString() + ", display_modes==" + display_modes_str;
 }
 
-void ManagedDisplayInfo::AddTouchDevice(uint32_t touch_device_identifier) {
-  touch_device_identifiers_.insert(touch_device_identifier);
+#if defined(OS_CHROMEOS)
+void ManagedDisplayInfo::AddTouchDevice(
+    const TouchDeviceIdentifier& identifier) {
+  touch_device_identifiers_.insert(identifier);
   set_touch_support(Display::TOUCH_SUPPORT_AVAILABLE);
 }
 
@@ -464,19 +464,19 @@
 }
 
 bool ManagedDisplayInfo::HasTouchDevice(
-    uint32_t touch_device_identifier) const {
-  return touch_device_identifiers_.count(touch_device_identifier);
+    const TouchDeviceIdentifier& identifier) const {
+  return touch_device_identifiers_.count(identifier);
 }
-#if defined(OS_CHROMEOS)
+
 void ManagedDisplayInfo::SetTouchCalibrationData(
-    uint32_t touch_device_identifier,
+    const TouchDeviceIdentifier& identifier,
     const TouchCalibrationData& touch_calibration_data) {
-  touch_calibration_data_map_[touch_device_identifier] = touch_calibration_data;
+  touch_calibration_data_map_[identifier] = touch_calibration_data;
 }
 
 const TouchCalibrationData& ManagedDisplayInfo::GetTouchCalibrationData(
-    uint32_t touch_device_identifier) const {
-  DCHECK(HasTouchCalibrationData(touch_device_identifier));
+    const TouchDeviceIdentifier& identifier) const {
+  DCHECK(HasTouchCalibrationData(identifier));
 
   // If the system does not have the calibration information for the touch
   // device identified with |touch_device_identifier|, use the fallback
@@ -484,30 +484,30 @@
   // touch calibration data which is stored in association with the fallback
   // device identifier.
   if (touch_calibration_data_map_.count(
-          TouchCalibrationData::GetFallbackTouchDeviceIdentifier()) &&
+          TouchDeviceIdentifier::GetFallbackTouchDeviceIdentifier()) &&
       touch_calibration_data_map_.size() == 1) {
     return touch_calibration_data_map_.at(
-        TouchCalibrationData::GetFallbackTouchDeviceIdentifier());
+        TouchDeviceIdentifier::GetFallbackTouchDeviceIdentifier());
   }
 
-  return touch_calibration_data_map_.at(touch_device_identifier);
+  return touch_calibration_data_map_.at(identifier);
 }
 
 void ManagedDisplayInfo::SetTouchCalibrationDataMap(
-    const std::map<uint32_t, TouchCalibrationData>& data_map) {
+    const std::map<TouchDeviceIdentifier, TouchCalibrationData>& data_map) {
   touch_calibration_data_map_ = data_map;
 }
 
 bool ManagedDisplayInfo::HasTouchCalibrationData(
-    uint32_t touch_device_identifier) const {
-  return touch_calibration_data_map_.count(touch_device_identifier) ||
+    const TouchDeviceIdentifier& identifier) const {
+  return touch_calibration_data_map_.count(identifier) ||
          touch_calibration_data_map_.count(
-             TouchCalibrationData::GetFallbackTouchDeviceIdentifier());
+             TouchDeviceIdentifier::GetFallbackTouchDeviceIdentifier());
 }
 
 void ManagedDisplayInfo::ClearTouchCalibrationData(
-    uint32_t touch_device_identifier) {
-  touch_calibration_data_map_.erase(touch_device_identifier);
+    const TouchDeviceIdentifier& identifier) {
+  touch_calibration_data_map_.erase(identifier);
 }
 
 void ManagedDisplayInfo::ClearAllTouchCalibrationData() {
diff --git a/ui/display/manager/managed_display_info.h b/ui/display/manager/managed_display_info.h
index 53bfc579..f7d69e4c 100644
--- a/ui/display/manager/managed_display_info.h
+++ b/ui/display/manager/managed_display_info.h
@@ -149,22 +149,23 @@
     touch_support_ = support;
   }
   Display::TouchSupport touch_support() const { return touch_support_; }
-
+#if defined(OS_CHROMEOS)
   // Associate the touch device with identifier |touch_device_identifier| to
   // this display.
-  void AddTouchDevice(uint32_t touch_device_identifier);
+  void AddTouchDevice(const TouchDeviceIdentifier& identifier);
 
   // Clear the list of touch devices associated with this display.
   void ClearTouchDevices();
 
   // Returns true if the touch device with identifer |touch_device_identifier|
   // is associated with this display.
-  bool HasTouchDevice(uint32_t touch_device_identifier) const;
+  bool HasTouchDevice(const TouchDeviceIdentifier& identifier) const;
 
   // The identifiers of touch devices that are associated with this display.
-  std::set<uint32_t> touch_device_identifiers() const {
+  std::set<TouchDeviceIdentifier> touch_device_identifiers() const {
     return touch_device_identifiers_;
   }
+#endif
 
   // Gets/Sets the device scale factor of the display.
   float device_scale_factor() const { return device_scale_factor_; }
@@ -254,18 +255,18 @@
   void SetManagedDisplayModes(const ManagedDisplayModeList& display_modes);
 
 #if defined(OS_CHROMEOS)
-  void SetTouchCalibrationData(uint32_t touch_device_identifier,
+  void SetTouchCalibrationData(const TouchDeviceIdentifier& identifier,
                                const TouchCalibrationData& calibration_data);
   const TouchCalibrationData& GetTouchCalibrationData(
-      uint32_t touch_device_identifier) const;
-  const std::map<uint32_t, TouchCalibrationData>& touch_calibration_data_map()
-      const {
+      const TouchDeviceIdentifier& touch_device_identifier) const;
+  const std::map<TouchDeviceIdentifier, TouchCalibrationData>&
+  touch_calibration_data_map() const {
     return touch_calibration_data_map_;
   }
   void SetTouchCalibrationDataMap(
-      const std::map<uint32_t, TouchCalibrationData>& data_map);
-  bool HasTouchCalibrationData(uint32_t touch_device_identifier) const;
-  void ClearTouchCalibrationData(uint32_t touch_device_identifier);
+      const std::map<TouchDeviceIdentifier, TouchCalibrationData>& data_map);
+  bool HasTouchCalibrationData(const TouchDeviceIdentifier& identifier) const;
+  void ClearTouchCalibrationData(const TouchDeviceIdentifier& identifier);
   void ClearAllTouchCalibrationData();
 #endif
 
@@ -309,8 +310,10 @@
   Display::RotationSource active_rotation_source_;
   Display::TouchSupport touch_support_;
 
+#if defined(OS_CHROMEOS)
   // Identifiers for touch devices that are associated with this display.
-  std::set<uint32_t> touch_device_identifiers_;
+  std::set<TouchDeviceIdentifier> touch_device_identifiers_;
+#endif
 
   // This specifies the device's pixel density. (For example, a display whose
   // DPI is higher than the threshold is considered to have device_scale_factor
@@ -356,7 +359,8 @@
   // Information associated to touch calibration for the display. Stores a
   // mapping of each touch device, identified by its unique touch device
   // identifier, with the touch calibration data associated with the display.
-  std::map<uint32_t, TouchCalibrationData> touch_calibration_data_map_;
+  std::map<TouchDeviceIdentifier, TouchCalibrationData>
+      touch_calibration_data_map_;
 #endif
 
   // Colorimetry information of the Display (if IsValid()), including e.g.
diff --git a/ui/display/manager/managed_display_info_unittest.cc b/ui/display/manager/managed_display_info_unittest.cc
index 1efdc0b..5c1f077 100644
--- a/ui/display/manager/managed_display_info_unittest.cc
+++ b/ui/display/manager/managed_display_info_unittest.cc
@@ -10,6 +10,10 @@
 #include "ui/display/manager/chromeos/touch_device_manager.h"
 #endif
 
+#if defined(OS_CHROMEOS)
+#include "ui/display/manager/chromeos/touch_device_manager.h"
+#endif
+
 namespace display {
 namespace {
 
@@ -128,19 +132,23 @@
   EXPECT_EQ("3840x2160", GetModeSizeInDIP(size, 1.0f, 1.0f, false));
 }
 
+#if defined(OS_CHROMEOS)
 TEST_F(DisplayInfoTest, TouchDevicesTest) {
   ManagedDisplayInfo info =
       ManagedDisplayInfo::CreateFromSpecWithID("200x100", 10);
 
   EXPECT_EQ(0u, info.touch_device_identifiers().size());
 
-  info.AddTouchDevice(10u);
+  TouchDeviceIdentifier identifier_1(10u);
+  TouchDeviceIdentifier identifier_2(11u);
+
+  info.AddTouchDevice(identifier_1);
   EXPECT_EQ(1u, info.touch_device_identifiers().size());
-  EXPECT_TRUE(info.HasTouchDevice(10u));
-  info.AddTouchDevice(11u);
+  EXPECT_TRUE(info.HasTouchDevice(identifier_1));
+  info.AddTouchDevice(identifier_2);
   EXPECT_EQ(2u, info.touch_device_identifiers().size());
-  EXPECT_TRUE(info.HasTouchDevice(10u));
-  EXPECT_TRUE(info.HasTouchDevice(11u));
+  EXPECT_TRUE(info.HasTouchDevice(identifier_1));
+  EXPECT_TRUE(info.HasTouchDevice(identifier_2));
 
   ManagedDisplayInfo copy_info =
       ManagedDisplayInfo::CreateFromSpecWithID("200x100", 10);
@@ -150,7 +158,6 @@
   EXPECT_EQ(0u, copy_info.touch_device_identifiers().size());
 }
 
-#if defined(OS_CHROMEOS)
 TEST_F(DisplayInfoTest, TouchCalibrationTest) {
   ManagedDisplayInfo info =
       ManagedDisplayInfo::CreateFromSpecWithID("200x100", 10);
@@ -166,25 +173,25 @@
   gfx::Size size(200, 100);
 
   TouchCalibrationData expected_data(points, size);
-  uint32_t touch_device_identifier = 1234;
+  TouchDeviceIdentifier identifier_1(1234);
+  TouchDeviceIdentifier identifier_2(1235);
 
   // Add touch data for the display.
-  info.SetTouchCalibrationData(touch_device_identifier, expected_data);
+  info.SetTouchCalibrationData(identifier_1, expected_data);
 
   EXPECT_TRUE(info.touch_calibration_data_map().size());
-  EXPECT_EQ(expected_data,
-            info.GetTouchCalibrationData(touch_device_identifier));
+  EXPECT_EQ(expected_data, info.GetTouchCalibrationData(identifier_1));
 
-  info.SetTouchCalibrationData(touch_device_identifier + 1, expected_data);
+  info.SetTouchCalibrationData(identifier_2, expected_data);
   EXPECT_EQ(info.touch_calibration_data_map().size(), 2UL);
 
   // Clear touch calibration data for touch device associated with the given
   // touch identifier.
-  info.ClearTouchCalibrationData(touch_device_identifier);
+  info.ClearTouchCalibrationData(identifier_1);
   EXPECT_TRUE(info.touch_calibration_data_map().size());
 
   // Add another touch device calibration data.
-  info.SetTouchCalibrationData(touch_device_identifier, expected_data);
+  info.SetTouchCalibrationData(identifier_1, expected_data);
   info.ClearAllTouchCalibrationData();
 
   // There should be no touch device data associated with this display.
diff --git a/ui/events/event.cc b/ui/events/event.cc
index 4baf146..a3af061 100644
--- a/ui/events/event.cc
+++ b/ui/events/event.cc
@@ -4,10 +4,6 @@
 
 #include "ui/events/event.h"
 
-#include <utility>
-
-#include "base/memory/ptr_util.h"
-
 #if defined(USE_X11)
 #include <X11/extensions/XInput2.h>
 #include <X11/keysym.h>
@@ -16,6 +12,7 @@
 
 #include <cmath>
 #include <cstring>
+#include <utility>
 
 #include "base/memory/ptr_util.h"
 #include "base/metrics/histogram.h"
diff --git a/ui/events/event.h b/ui/events/event.h
index d5f63a8..a0f76fc 100644
--- a/ui/events/event.h
+++ b/ui/events/event.h
@@ -488,6 +488,8 @@
   // of kWheelDelta.
   // Note: offset_.x() > 0/offset_.y() > 0 means scroll left/up.
   gfx::Vector2d offset;
+
+  // If you add fields please update ui/events/mojo/event.mojom.
 };
 
 class EVENTS_EXPORT MouseEvent : public LocatedEvent {
diff --git a/ui/events/mojo/event.mojom b/ui/events/mojo/event.mojom
index 48e714dd..6670751 100644
--- a/ui/events/mojo/event.mojom
+++ b/ui/events/mojo/event.mojom
@@ -106,6 +106,14 @@
   // for more information.
   float tilt_x;
   float tilt_y;
+  // The normalized tangential pressure (or barrel pressure), typically set by
+  // an additional control of the stylus, which has a range of [-1,1], where 0
+  // is the neutral position of the control. Always 0 if the device does not
+  // support it.
+  float tangential_pressure;
+  // The clockwise rotation of a pen stylus around its own major axis, in
+  // degrees in the range [0,359]. Always 0 if the device does not support it.
+  int32 twist;
 };
 
 // Data to support gesture events.
diff --git a/ui/events/mojo/event_struct_traits.cc b/ui/events/mojo/event_struct_traits.cc
index ba0e6ffe..bfeb82b 100644
--- a/ui/events/mojo/event_struct_traits.cc
+++ b/ui/events/mojo/event_struct_traits.cc
@@ -86,6 +86,57 @@
   return location_data;
 }
 
+ui::EventPointerType PointerTypeFromPointerKind(ui::mojom::PointerKind kind) {
+  switch (kind) {
+    case ui::mojom::PointerKind::MOUSE:
+      return ui::EventPointerType::POINTER_TYPE_MOUSE;
+    case ui::mojom::PointerKind::TOUCH:
+      return ui::EventPointerType::POINTER_TYPE_TOUCH;
+    case ui::mojom::PointerKind::PEN:
+      return ui::EventPointerType::POINTER_TYPE_PEN;
+    case ui::mojom::PointerKind::ERASER:
+      return ui::EventPointerType::POINTER_TYPE_ERASER;
+  }
+  NOTREACHED();
+  return ui::EventPointerType::POINTER_TYPE_UNKNOWN;
+}
+
+bool ReadPointerDetails(ui::mojom::EventType event_type,
+                        const ui::mojom::PointerData& pointer_data,
+                        ui::PointerDetails* out) {
+  switch (pointer_data.kind) {
+    case ui::mojom::PointerKind::MOUSE: {
+      if (event_type == ui::mojom::EventType::POINTER_WHEEL_CHANGED) {
+        *out = ui::PointerDetails(
+            ui::EventPointerType::POINTER_TYPE_MOUSE,
+            gfx::Vector2d(static_cast<int>(pointer_data.wheel_data->delta_x),
+                          static_cast<int>(pointer_data.wheel_data->delta_y)),
+            ui::MouseEvent::kMousePointerId);
+      } else {
+        *out = ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE,
+                                  ui::MouseEvent::kMousePointerId);
+      }
+      return true;
+    }
+    case ui::mojom::PointerKind::TOUCH:
+    case ui::mojom::PointerKind::PEN: {
+      const ui::mojom::BrushData& brush_data = *pointer_data.brush_data;
+      *out = ui::PointerDetails(
+          PointerTypeFromPointerKind(pointer_data.kind),
+          pointer_data.pointer_id, brush_data.width, brush_data.height,
+          brush_data.pressure, brush_data.tilt_x, brush_data.tilt_y,
+          brush_data.tangential_pressure, brush_data.twist);
+      return true;
+    }
+    case ui::mojom::PointerKind::ERASER:
+      // TODO(jamescook): Eraser support.
+      NOTIMPLEMENTED();
+      return false;
+  }
+  NOTREACHED();
+  return false;
+}
+
 }  // namespace
 
 static_assert(ui::mojom::kEventFlagNone == static_cast<int32_t>(ui::EF_NONE),
@@ -193,8 +244,9 @@
   pointer_data->pointer_id = pointer_event->pointer_details().id;
   pointer_data->changed_button_flags = pointer_event->changed_button_flags();
   const ui::PointerDetails* pointer_details = &pointer_event->pointer_details();
+  ui::EventPointerType pointer_type = pointer_details->pointer_type;
 
-  switch (pointer_details->pointer_type) {
+  switch (pointer_type) {
     case ui::EventPointerType::POINTER_TYPE_MOUSE:
       pointer_data->kind = ui::mojom::PointerKind::MOUSE;
       break;
@@ -217,9 +269,13 @@
   brush_data->height = pointer_details->radius_y;
   // TODO(rjk): update for touch_event->rotation_angle();
   brush_data->pressure = pointer_details->force;
+  // In theory only pen events should have tilt, tangential_pressure and twist.
+  // In practive a JavaScript PointerEvent could have type touch and still have
+  // data in those fields.
   brush_data->tilt_x = pointer_details->tilt_x;
   brush_data->tilt_y = pointer_details->tilt_y;
-  // TODO(jamescook): Pen tangential_pressure and twist.
+  brush_data->tangential_pressure = pointer_details->tangential_pressure;
+  brush_data->twist = pointer_details->twist;
   pointer_data->brush_data = std::move(brush_data);
 
   // TODO(rjkroege): Plumb raw pointer events on windows.
@@ -307,64 +363,18 @@
       if (!event.ReadPointerData<ui::mojom::PointerDataPtr>(&pointer_data))
         return false;
 
+      ui::PointerDetails pointer_details;
+      if (!ReadPointerDetails(event.action(), *pointer_data, &pointer_details))
+        return false;
+
       const gfx::Point location(pointer_data->location->x,
                                 pointer_data->location->y);
       const gfx::Point screen_location(pointer_data->location->screen_x,
                                        pointer_data->location->screen_y);
-
-      switch (pointer_data->kind) {
-        case ui::mojom::PointerKind::MOUSE: {
-          *out = std::make_unique<ui::PointerEvent>(
-              MojoPointerEventTypeToUIEvent(event.action()), location,
-              screen_location, event.flags(),
-              pointer_data->changed_button_flags,
-              event.action() == ui::mojom::EventType::POINTER_WHEEL_CHANGED
-                  ? ui::PointerDetails(
-                        ui::EventPointerType::POINTER_TYPE_MOUSE,
-                        gfx::Vector2d(
-                            static_cast<int>(pointer_data->wheel_data->delta_x),
-                            static_cast<int>(
-                                pointer_data->wheel_data->delta_y)),
-                        ui::MouseEvent::kMousePointerId)
-                  : ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE,
-                                       ui::MouseEvent::kMousePointerId),
-              time_stamp);
-          break;
-        }
-        case ui::mojom::PointerKind::TOUCH: {
-          *out = std::make_unique<ui::PointerEvent>(
-              MojoPointerEventTypeToUIEvent(event.action()), location,
-              screen_location, event.flags(),
-              pointer_data->changed_button_flags,
-              ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH,
-                                 pointer_data->pointer_id,
-                                 pointer_data->brush_data->width,
-                                 pointer_data->brush_data->height,
-                                 pointer_data->brush_data->pressure,
-                                 pointer_data->brush_data->tilt_x,
-                                 pointer_data->brush_data->tilt_y),
-              time_stamp);
-          break;
-        }
-        case ui::mojom::PointerKind::PEN:
-          *out = std::make_unique<ui::PointerEvent>(
-              MojoPointerEventTypeToUIEvent(event.action()), location,
-              screen_location, event.flags(),
-              pointer_data->changed_button_flags,
-              ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_PEN,
-                                 pointer_data->pointer_id,
-                                 pointer_data->brush_data->width,
-                                 pointer_data->brush_data->height,
-                                 pointer_data->brush_data->pressure,
-                                 pointer_data->brush_data->tilt_x,
-                                 pointer_data->brush_data->tilt_y),
-              time_stamp);
-          break;
-        case ui::mojom::PointerKind::ERASER:
-          // TODO(jamescook): Eraser support.
-          NOTIMPLEMENTED();
-          return false;
-      }
+      *out = std::make_unique<ui::PointerEvent>(
+          MojoPointerEventTypeToUIEvent(event.action()), location,
+          screen_location, event.flags(), pointer_data->changed_button_flags,
+          pointer_details, time_stamp);
       break;
     }
     case ui::mojom::EventType::GESTURE_TAP: {
diff --git a/ui/events/mojo/struct_traits_unittest.cc b/ui/events/mojo/struct_traits_unittest.cc
index aae642d..6c0a160 100644
--- a/ui/events/mojo/struct_traits_unittest.cc
+++ b/ui/events/mojo/struct_traits_unittest.cc
@@ -136,7 +136,9 @@
                       /* radius_y */ 2.0f,
                       /* force */ 3.0f,
                       /* tilt_x */ 4.0f,
-                      /* tilt_y */ 5.0f),
+                      /* tilt_y */ 5.0f,
+                      /* tangential_pressure */ -1.f,
+                      /* twist */ 90),
        base::TimeTicks() + base::TimeDelta::FromMicroseconds(207)},
       {ET_POINTER_UP, gfx::Point(5, 6), gfx::Point(7, 8), EF_NONE, 0,
        PointerDetails(EventPointerType::POINTER_TYPE_PEN,
@@ -145,7 +147,9 @@
                       /* radius_y */ 2.0f,
                       /* force */ 3.0f,
                       /* tilt_x */ 4.0f,
-                      /* tilt_y */ 5.0f),
+                      /* tilt_y */ 5.0f,
+                      /* tangential_pressure */ 1.f,
+                      /* twist */ 180),
        base::TimeTicks() + base::TimeDelta::FromMicroseconds(208)},
   };