diff --git a/DEPS b/DEPS
index 2ba3113..828304e 100644
--- a/DEPS
+++ b/DEPS
@@ -167,11 +167,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': '9e951cd782c4dd3cec36c05dd7448ebfc415a389',
+  'skia_revision': '4c82a9fc83a5b2a18c1daa251121f8cb324f2d9d',
   # 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': '35874570ba6306d2d41a6b0a468ab7e41c99ed2e',
+  'v8_revision': '14b4bc0d0f1dfa2c7e420c60f86443ffbb301286',
   # 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.
@@ -179,11 +179,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '6b60dfd80e3dc3fe13eb1b9bcaf8b36f30e20b45',
+  'angle_revision': '1ba72546da4ce83b340fdd965655010b75c749db',
   # 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': 'a580e2d761c1994a42e01866cfca5e318a67d12c',
+  'swiftshader_revision': '23463e8bb77fbc536ae4621ae28e328e8715103d',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
@@ -306,7 +306,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'quiche_revision': 'f518a2641c6d0b2e6cc130024e3f8a45771393c4',
+  'quiche_revision': 'ef79a5fa1b2c3303dc1dae969482ead934be85a8',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ios_webkit
   # and whatever else without interference from each other.
@@ -862,7 +862,7 @@
 
   # Build tools for Chrome OS. Note: This depends on third_party/pyelftools.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '34ff91ec6f44e0fc5d90c70f2ed1a4d117d8c009',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'bd5145058235319ea6d2652b1f1d2daf785502cf',
       'condition': 'checkout_linux',
   },
 
@@ -877,7 +877,7 @@
 
   # For Linux and Chromium OS.
   'src/third_party/cros_system_api': {
-      'url': Var('chromium_git') + '/chromiumos/platform2/system_api.git' + '@' + '9b9ccf7ac88ac67a2fe88bf9beeb0b07cf163d76',
+      'url': Var('chromium_git') + '/chromiumos/platform2/system_api.git' + '@' + '61297bd64bfd78f9d4288ab44e28976b53f369f2',
       'condition': 'checkout_linux',
   },
 
@@ -887,7 +887,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'aa4d8a75604db8a824c82cca0e6f8001e6b11723',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'd696f201295e38d907b4d8c03f9f270581b0e07c',
 
   'src/third_party/devtools-node-modules':
     Var('chromium_git') + '/external/github.com/ChromeDevTools/devtools-node-modules' + '@' + Var('devtools_node_modules_revision'),
@@ -1087,6 +1087,17 @@
       'condition': 'checkout_android',
   },
 
+  'src/third_party/jdk': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/jdk',
+              'version': 'rfJtuH296mzs7BYOgmQkpz-7ydXtpLKeO15qDDMaa5cC',
+          },
+      ],
+      'condition': 'host_os == "linux" and checkout_android',
+      'dep_type': 'cipd',
+  },
+
   'src/third_party/jsoncpp/source':
     Var('chromium_git') + '/external/github.com/open-source-parsers/jsoncpp.git'
       + '@' + '645250b6690785be60ab6780ce4b58698d884d11', # release 1.9.1
@@ -1521,7 +1532,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@40ba239931e22de2d9e066fa3b8095062816120a',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@d1f79f968fc009d6ae76f0f231863432649ef3d5',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 4d792e8..6f5b5b8 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -1357,7 +1357,6 @@
     'net/tools/testserver/testserver.pydeps',
     'testing/scripts/run_android_wpt.pydeps',
     'third_party/android_platform/development/scripts/stack.pydeps',
-    'tools/android/avd/avd.pydeps',
 ]
 
 
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn
index 9317afe..738efb1 100644
--- a/android_webview/BUILD.gn
+++ b/android_webview/BUILD.gn
@@ -57,8 +57,6 @@
     "java/src/org/chromium/android_webview/AwFeatureList.java",
     "java/src/org/chromium/android_webview/AwFormDatabase.java",
     "java/src/org/chromium/android_webview/AwHttpAuthHandler.java",
-    "java/src/org/chromium/android_webview/AwMetricsLogUploader.java",
-    "java/src/org/chromium/android_webview/AwMetricsServiceClient.java",
     "java/src/org/chromium/android_webview/AwPdfExporter.java",
     "java/src/org/chromium/android_webview/AwProxyController.java",
     "java/src/org/chromium/android_webview/AwQuotaManagerBridge.java",
@@ -77,6 +75,8 @@
     "java/src/org/chromium/android_webview/gfx/AwGLFunctor.java",
     "java/src/org/chromium/android_webview/gfx/AwPicture.java",
     "java/src/org/chromium/android_webview/gfx/JavaBrowserViewRendererHelper.java",
+    "java/src/org/chromium/android_webview/metrics/AwMetricsLogUploader.java",
+    "java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java",
     "java/src/org/chromium/android_webview/permission/AwPermissionRequest.java",
   ]
 
@@ -537,8 +537,6 @@
     "java/src/org/chromium/android_webview/AwHistogramRecorder.java",
     "java/src/org/chromium/android_webview/AwHttpAuthHandler.java",
     "java/src/org/chromium/android_webview/AwLayoutSizer.java",
-    "java/src/org/chromium/android_webview/AwMetricsLogUploader.java",
-    "java/src/org/chromium/android_webview/AwMetricsServiceClient.java",
     "java/src/org/chromium/android_webview/AwNetworkChangeNotifierRegistrationPolicy.java",
     "java/src/org/chromium/android_webview/AwPdfExporter.java",
     "java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java",
@@ -594,6 +592,8 @@
     "java/src/org/chromium/android_webview/gfx/AwGLFunctor.java",
     "java/src/org/chromium/android_webview/gfx/AwPicture.java",
     "java/src/org/chromium/android_webview/gfx/JavaBrowserViewRendererHelper.java",
+    "java/src/org/chromium/android_webview/metrics/AwMetricsLogUploader.java",
+    "java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java",
     "java/src/org/chromium/android_webview/permission/AwGeolocationCallback.java",
     "java/src/org/chromium/android_webview/permission/AwPermissionRequest.java",
     "java/src/org/chromium/android_webview/policy/AwPolicyProvider.java",
diff --git a/android_webview/browser/BUILD.gn b/android_webview/browser/BUILD.gn
index ef9748c..c7773448 100644
--- a/android_webview/browser/BUILD.gn
+++ b/android_webview/browser/BUILD.gn
@@ -68,10 +68,6 @@
     "aw_javascript_dialog_manager.h",
     "aw_media_url_interceptor.cc",
     "aw_media_url_interceptor.h",
-    "aw_metrics_log_uploader.cc",
-    "aw_metrics_log_uploader.h",
-    "aw_metrics_service_client.cc",
-    "aw_metrics_service_client.h",
     "aw_pdf_exporter.cc",
     "aw_pdf_exporter.h",
     "aw_permission_manager.cc",
@@ -119,8 +115,6 @@
     "js_java_interaction/js_reply_proxy.h",
     "js_java_interaction/js_to_java_messaging.cc",
     "js_java_interaction/js_to_java_messaging.h",
-    "memory_metrics_logger.cc",
-    "memory_metrics_logger.h",
     "network_service/android_stream_reader_url_loader.cc",
     "network_service/android_stream_reader_url_loader.h",
     "network_service/aw_network_change_notifier.cc",
@@ -189,6 +183,7 @@
     "//android_webview:browser_jni_headers",
     "//android_webview:generate_components_strings",
     "//android_webview/browser/gfx",
+    "//android_webview/browser/metrics",
     "//android_webview/common",
     "//android_webview/common:common_mojom",
     "//base",
@@ -203,9 +198,6 @@
     "//components/google/core/common",
     "//components/heap_profiling",
     "//components/metrics",
-    "//components/metrics:gpu",
-    "//components/metrics:net",
-    "//components/metrics:ui",
     "//components/minidump_uploader",
     "//components/navigation_interception",
     "//components/page_load_metrics/browser",
@@ -244,7 +236,6 @@
     "//media/mojo:buildflags",
     "//printing",
     "//services/preferences/tracked",
-    "//services/resource_coordinator/public/cpp/memory_instrumentation:browser",
     "//third_party/crashpad/crashpad/client",
     "//ui/android",
     "//ui/gl",
diff --git a/android_webview/browser/aw_browser_context.cc b/android_webview/browser/aw_browser_context.cc
index 8c7a368..8b476e0 100644
--- a/android_webview/browser/aw_browser_context.cc
+++ b/android_webview/browser/aw_browser_context.cc
@@ -12,12 +12,12 @@
 #include "android_webview/browser/aw_content_browser_client.h"
 #include "android_webview/browser/aw_download_manager_delegate.h"
 #include "android_webview/browser/aw_form_database_service.h"
-#include "android_webview/browser/aw_metrics_service_client.h"
 #include "android_webview/browser/aw_permission_manager.h"
 #include "android_webview/browser/aw_quota_manager_bridge.h"
 #include "android_webview/browser/aw_resource_context.h"
 #include "android_webview/browser/aw_web_ui_controller_factory.h"
 #include "android_webview/browser/cookie_manager.h"
+#include "android_webview/browser/metrics/aw_metrics_service_client.h"
 #include "android_webview/browser/network_service/net_helpers.h"
 #include "android_webview/browser/safe_browsing/aw_safe_browsing_whitelist_manager.h"
 #include "android_webview/browser_jni_headers/AwBrowserContext_jni.h"
diff --git a/android_webview/browser/aw_browser_main_parts.cc b/android_webview/browser/aw_browser_main_parts.cc
index abf1cca..a607a10 100644
--- a/android_webview/browser/aw_browser_main_parts.cc
+++ b/android_webview/browser/aw_browser_main_parts.cc
@@ -12,9 +12,9 @@
 #include "android_webview/browser/aw_browser_context.h"
 #include "android_webview/browser/aw_browser_terminator.h"
 #include "android_webview/browser/aw_content_browser_client.h"
-#include "android_webview/browser/aw_metrics_service_client.h"
 #include "android_webview/browser/aw_web_ui_controller_factory.h"
-#include "android_webview/browser/memory_metrics_logger.h"
+#include "android_webview/browser/metrics/aw_metrics_service_client.h"
+#include "android_webview/browser/metrics/memory_metrics_logger.h"
 #include "android_webview/browser/network_service/aw_network_change_notifier_factory.h"
 #include "android_webview/common/aw_descriptors.h"
 #include "android_webview/common/aw_paths.h"
diff --git a/android_webview/browser/aw_feature_list_creator.cc b/android_webview/browser/aw_feature_list_creator.cc
index 225599e..21d08d1 100644
--- a/android_webview/browser/aw_feature_list_creator.cc
+++ b/android_webview/browser/aw_feature_list_creator.cc
@@ -12,8 +12,8 @@
 
 #include "android_webview/browser/aw_browser_context.h"
 #include "android_webview/browser/aw_browser_process.h"
-#include "android_webview/browser/aw_metrics_service_client.h"
 #include "android_webview/browser/aw_variations_seed_bridge.h"
+#include "android_webview/browser/metrics/aw_metrics_service_client.h"
 #include "base/base_switches.h"
 #include "base/bind.h"
 #include "base/bind_helpers.h"
diff --git a/android_webview/browser/metrics/BUILD.gn b/android_webview/browser/metrics/BUILD.gn
new file mode 100644
index 0000000..3283d27
--- /dev/null
+++ b/android_webview/browser/metrics/BUILD.gn
@@ -0,0 +1,28 @@
+# Copyright 2019 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.
+
+source_set("metrics") {
+  sources = [
+    "aw_metrics_log_uploader.cc",
+    "aw_metrics_log_uploader.h",
+    "aw_metrics_service_client.cc",
+    "aw_metrics_service_client.h",
+    "memory_metrics_logger.cc",
+    "memory_metrics_logger.h",
+  ]
+  deps = [
+    "//android_webview:browser_jni_headers",
+    "//android_webview/common",
+    "//base",
+    "//components/metrics",
+    "//components/metrics:gpu",
+    "//components/metrics:net",
+    "//components/metrics:ui",
+    "//components/prefs",
+    "//components/version_info",
+    "//components/version_info/android:channel_getter",
+    "//content/public/browser",
+    "//services/resource_coordinator/public/cpp/memory_instrumentation:browser",
+  ]
+}
diff --git a/android_webview/browser/metrics/OWNERS b/android_webview/browser/metrics/OWNERS
new file mode 100644
index 0000000..bb91825
--- /dev/null
+++ b/android_webview/browser/metrics/OWNERS
@@ -0,0 +1,4 @@
+ntfschr@chromium.org
+
+# TEAM: android-webview-dev@chromium.org
+# COMPONENT: Mobile>WebView
diff --git a/android_webview/browser/aw_metrics_log_uploader.cc b/android_webview/browser/metrics/aw_metrics_log_uploader.cc
similarity index 96%
rename from android_webview/browser/aw_metrics_log_uploader.cc
rename to android_webview/browser/metrics/aw_metrics_log_uploader.cc
index 3230508..ec34e4e 100644
--- a/android_webview/browser/aw_metrics_log_uploader.cc
+++ b/android_webview/browser/metrics/aw_metrics_log_uploader.cc
@@ -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 "android_webview/browser/aw_metrics_log_uploader.h"
+#include "android_webview/browser/metrics/aw_metrics_log_uploader.h"
 
 #include "android_webview/browser_jni_headers/AwMetricsLogUploader_jni.h"
 #include "base/android/jni_array.h"
diff --git a/android_webview/browser/aw_metrics_log_uploader.h b/android_webview/browser/metrics/aw_metrics_log_uploader.h
similarity index 85%
rename from android_webview/browser/aw_metrics_log_uploader.h
rename to android_webview/browser/metrics/aw_metrics_log_uploader.h
index b57aedb..4a7e457d 100644
--- a/android_webview/browser/aw_metrics_log_uploader.h
+++ b/android_webview/browser/metrics/aw_metrics_log_uploader.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef ANDROID_WEBVIEW_BROWSER_AW_METRICS_LOG_UPLOADER_H_
-#define ANDROID_WEBVIEW_BROWSER_AW_METRICS_LOG_UPLOADER_H_
+#ifndef ANDROID_WEBVIEW_BROWSER_METRICS_AW_METRICS_LOG_UPLOADER_H_
+#define ANDROID_WEBVIEW_BROWSER_METRICS_AW_METRICS_LOG_UPLOADER_H_
 
 #include <jni.h>
 #include <string>
@@ -37,4 +37,4 @@
 
 }  // namespace android_webview
 
-#endif  // ANDROID_WEBVIEW_BROWSER_AW_METRICS_LOG_UPLOADER_H_
+#endif  // ANDROID_WEBVIEW_BROWSER_METRICS_AW_METRICS_LOG_UPLOADER_H_
diff --git a/android_webview/browser/aw_metrics_service_client.cc b/android_webview/browser/metrics/aw_metrics_service_client.cc
similarity index 98%
rename from android_webview/browser/aw_metrics_service_client.cc
rename to android_webview/browser/metrics/aw_metrics_service_client.cc
index 717a88a..e117d98 100644
--- a/android_webview/browser/aw_metrics_service_client.cc
+++ b/android_webview/browser/metrics/aw_metrics_service_client.cc
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "android_webview/browser/aw_metrics_service_client.h"
+#include "android_webview/browser/metrics/aw_metrics_service_client.h"
 
 #include <jni.h>
 #include <cstdint>
 #include <memory>
 
-#include "android_webview/browser/aw_metrics_log_uploader.h"
+#include "android_webview/browser/metrics/aw_metrics_log_uploader.h"
 #include "android_webview/browser_jni_headers/AwMetricsServiceClient_jni.h"
 #include "android_webview/common/aw_features.h"
 #include "base/android/jni_android.h"
diff --git a/android_webview/browser/aw_metrics_service_client.h b/android_webview/browser/metrics/aw_metrics_service_client.h
similarity index 95%
rename from android_webview/browser/aw_metrics_service_client.h
rename to android_webview/browser/metrics/aw_metrics_service_client.h
index 38ce133..1c8b4e1 100644
--- a/android_webview/browser/aw_metrics_service_client.h
+++ b/android_webview/browser/metrics/aw_metrics_service_client.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef ANDROID_WEBVIEW_BROWSER_AW_METRICS_SERVICE_CLIENT_H_
-#define ANDROID_WEBVIEW_BROWSER_AW_METRICS_SERVICE_CLIENT_H_
+#ifndef ANDROID_WEBVIEW_BROWSER_METRICS_AW_METRICS_SERVICE_CLIENT_H_
+#define ANDROID_WEBVIEW_BROWSER_METRICS_AW_METRICS_SERVICE_CLIENT_H_
 
 #include <memory>
 #include <string>
@@ -91,7 +91,7 @@
   void Initialize(PrefService* pref_service);
   void SetHaveMetricsConsent(bool user_consent, bool app_consent);
   std::unique_ptr<const base::FieldTrial::EntropyProvider>
-      CreateLowEntropyProvider();
+  CreateLowEntropyProvider();
 
   // metrics::EnabledStateProvider
   bool IsConsentGiven() const override;
@@ -141,4 +141,4 @@
 
 }  // namespace android_webview
 
-#endif  // ANDROID_WEBVIEW_BROWSER_AW_METRICS_SERVICE_CLIENT_H_
+#endif  // ANDROID_WEBVIEW_BROWSER_METRICS_AW_METRICS_SERVICE_CLIENT_H_
diff --git a/android_webview/browser/aw_metrics_service_client_unittest.cc b/android_webview/browser/metrics/aw_metrics_service_client_unittest.cc
similarity index 98%
rename from android_webview/browser/aw_metrics_service_client_unittest.cc
rename to android_webview/browser/metrics/aw_metrics_service_client_unittest.cc
index d75a5e0..cb937e9 100644
--- a/android_webview/browser/aw_metrics_service_client_unittest.cc
+++ b/android_webview/browser/metrics/aw_metrics_service_client_unittest.cc
@@ -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 "android_webview/browser/aw_metrics_service_client.h"
+#include "android_webview/browser/metrics/aw_metrics_service_client.h"
 
 #include "base/command_line.h"
 #include "base/macros.h"
diff --git a/android_webview/browser/memory_metrics_logger.cc b/android_webview/browser/metrics/memory_metrics_logger.cc
similarity index 98%
rename from android_webview/browser/memory_metrics_logger.cc
rename to android_webview/browser/metrics/memory_metrics_logger.cc
index ef1ec918..71a6930 100644
--- a/android_webview/browser/memory_metrics_logger.cc
+++ b/android_webview/browser/metrics/memory_metrics_logger.cc
@@ -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 "android_webview/browser/memory_metrics_logger.h"
+#include "android_webview/browser/metrics/memory_metrics_logger.h"
 
 #include "base/bind.h"
 #include "base/bind_helpers.h"
diff --git a/android_webview/browser/memory_metrics_logger.h b/android_webview/browser/metrics/memory_metrics_logger.h
similarity index 89%
rename from android_webview/browser/memory_metrics_logger.h
rename to android_webview/browser/metrics/memory_metrics_logger.h
index 33cf80a..0e8c198f 100644
--- a/android_webview/browser/memory_metrics_logger.h
+++ b/android_webview/browser/metrics/memory_metrics_logger.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef ANDROID_WEBVIEW_BROWSER_MEMORY_METRICS_LOGGER_H_
-#define ANDROID_WEBVIEW_BROWSER_MEMORY_METRICS_LOGGER_H_
+#ifndef ANDROID_WEBVIEW_BROWSER_METRICS_MEMORY_METRICS_LOGGER_H_
+#define ANDROID_WEBVIEW_BROWSER_METRICS_MEMORY_METRICS_LOGGER_H_
 
 #include <jni.h>
 #include <memory>
@@ -56,4 +56,4 @@
 
 }  // namespace android_webview
 
-#endif  // ANDROID_WEBVIEW_BROWSER_MEMORY_METRICS_LOGGER_H_
+#endif  // ANDROID_WEBVIEW_BROWSER_METRICS_MEMORY_METRICS_LOGGER_H_
diff --git a/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java b/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
index e3b8ace..82b16eb 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
@@ -17,6 +17,7 @@
 import org.chromium.android_webview.common.CommandLineUtil;
 import org.chromium.android_webview.common.PlatformServiceBridge;
 import org.chromium.android_webview.common.ServiceNames;
+import org.chromium.android_webview.metrics.AwMetricsServiceClient;
 import org.chromium.android_webview.policy.AwPolicyProvider;
 import org.chromium.android_webview.services.ICrashReceiverService;
 import org.chromium.base.CommandLine;
diff --git a/android_webview/java/src/org/chromium/android_webview/WebMessageListenerHolder.java b/android_webview/java/src/org/chromium/android_webview/WebMessageListenerHolder.java
index b730e16..abbdbad9 100644
--- a/android_webview/java/src/org/chromium/android_webview/WebMessageListenerHolder.java
+++ b/android_webview/java/src/org/chromium/android_webview/WebMessageListenerHolder.java
@@ -5,7 +5,8 @@
 package org.chromium.android_webview;
 
 import android.net.Uri;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
 
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
diff --git a/android_webview/java/src/org/chromium/android_webview/AwMetricsLogUploader.java b/android_webview/java/src/org/chromium/android_webview/metrics/AwMetricsLogUploader.java
similarity index 94%
rename from android_webview/java/src/org/chromium/android_webview/AwMetricsLogUploader.java
rename to android_webview/java/src/org/chromium/android_webview/metrics/AwMetricsLogUploader.java
index 43122da..b75f8edd 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwMetricsLogUploader.java
+++ b/android_webview/java/src/org/chromium/android_webview/metrics/AwMetricsLogUploader.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.android_webview;
+package org.chromium.android_webview.metrics;
 
 import org.chromium.android_webview.common.PlatformServiceBridge;
 import org.chromium.base.annotations.CalledByNative;
diff --git a/android_webview/java/src/org/chromium/android_webview/AwMetricsServiceClient.java b/android_webview/java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java
similarity index 98%
rename from android_webview/java/src/org/chromium/android_webview/AwMetricsServiceClient.java
rename to android_webview/java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java
index ce44aacf..02c9e85 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwMetricsServiceClient.java
+++ b/android_webview/java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.android_webview;
+package org.chromium.android_webview.metrics;
 
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
diff --git a/android_webview/java/src/org/chromium/android_webview/metrics/OWNERS b/android_webview/java/src/org/chromium/android_webview/metrics/OWNERS
new file mode 100644
index 0000000..f4b67ee
--- /dev/null
+++ b/android_webview/java/src/org/chromium/android_webview/metrics/OWNERS
@@ -0,0 +1 @@
+file://android_webview/browser/metrics/OWNERS
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/memory_metrics_logger_test.cc b/android_webview/javatests/src/org/chromium/android_webview/test/memory_metrics_logger_test.cc
index d9ae9e32..e97ad2d3 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/memory_metrics_logger_test.cc
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/memory_metrics_logger_test.cc
@@ -4,7 +4,7 @@
 
 #include "android_webview/test/webview_instrumentation_test_native_jni/MemoryMetricsLoggerTest_jni.h"
 
-#include "android_webview/browser/memory_metrics_logger.h"
+#include "android_webview/browser/metrics/memory_metrics_logger.h"
 #include "base/run_loop.h"
 #include "base/test/bind_test_util.h"
 #include "base/test/task_environment.h"
diff --git a/android_webview/test/BUILD.gn b/android_webview/test/BUILD.gn
index edcbb600..e810a83 100644
--- a/android_webview/test/BUILD.gn
+++ b/android_webview/test/BUILD.gn
@@ -337,6 +337,7 @@
 }
 
 generate_jni("webview_instrumentation_test_native_jni") {
+  testonly = true
   sources = [
     "../javatests/src/org/chromium/android_webview/test/MemoryMetricsLoggerTest.java",
   ]
@@ -350,6 +351,7 @@
   deps = [
     ":webview_instrumentation_test_native_jni",
     "//android_webview/browser",
+    "//android_webview/browser/metrics",
     "//base",
     "//base/test:test_support",
   ]
@@ -362,6 +364,7 @@
     ":android_webview_unittests_jni",
     "//android_webview/browser",
     "//android_webview/browser/gfx",
+    "//android_webview/browser/metrics",
     "//base/test:test_support",
     "//components/autofill/core/browser",
     "//components/metrics",
@@ -384,7 +387,6 @@
     "../browser/aw_contents_client_bridge_unittest.cc",
     "../browser/aw_form_database_service_unittest.cc",
     "../browser/aw_media_url_interceptor_unittest.cc",
-    "../browser/aw_metrics_service_client_unittest.cc",
     "../browser/aw_permission_manager_unittest.cc",
     "../browser/gfx/browser_view_renderer_unittest.cc",
     "../browser/gfx/test/fake_window.cc",
@@ -392,6 +394,7 @@
     "../browser/gfx/test/rendering_test.cc",
     "../browser/gfx/test/rendering_test.h",
     "../browser/input_stream_unittest.cc",
+    "../browser/metrics/aw_metrics_service_client_unittest.cc",
     "../browser/network_service/android_stream_reader_url_loader_unittest.cc",
     "../browser/network_service/input_stream_reader_unittest.cc",
     "../browser/permission/media_access_permission_request_unittest.cc",
@@ -424,6 +427,7 @@
 }
 
 generate_jni("android_webview_unittests_jni") {
+  testonly = true
   sources = [
     "../unittestjava/src/org/chromium/android_webview/unittest/InputStreamUnittest.java",
     "../unittestjava/src/org/chromium/android_webview/unittest/MockAwContentsClientBridge.java",
diff --git a/android_webview/test/embedded_test_server/BUILD.gn b/android_webview/test/embedded_test_server/BUILD.gn
index 297c3a8d..e6252b6 100644
--- a/android_webview/test/embedded_test_server/BUILD.gn
+++ b/android_webview/test/embedded_test_server/BUILD.gn
@@ -23,6 +23,7 @@
 }
 
 generate_jni("aw_net_jni_headers") {
+  testonly = true
   sources = [
     "java/src/org/chromium/android_webview/test/AwEmbeddedTestServerImpl.java",
   ]
diff --git a/ash/app_list/views/apps_container_view.cc b/ash/app_list/views/apps_container_view.cc
index e70eb96..b3b481c 100644
--- a/ash/app_list/views/apps_container_view.cc
+++ b/ash/app_list/views/apps_container_view.cc
@@ -213,6 +213,10 @@
   if (app_list_state == ash::AppListViewState::kClosed)
     return;
 
+  set_can_process_events_within_subtree(
+      app_list_state == ash::AppListViewState::kFullscreenAllApps ||
+      app_list_state == ash::AppListViewState::kPeeking);
+
   apps_grid_view_->UpdateControlVisibility(app_list_state, is_in_drag);
   page_switcher_->SetVisible(
       is_in_drag ||
diff --git a/ash/home_screen/home_launcher_gesture_handler.cc b/ash/home_screen/home_launcher_gesture_handler.cc
index 84c908aa..31df4476 100644
--- a/ash/home_screen/home_launcher_gesture_handler.cc
+++ b/ash/home_screen/home_launcher_gesture_handler.cc
@@ -32,6 +32,7 @@
 #include "base/metrics/user_metrics.h"
 #include "base/numerics/ranges.h"
 #include "ui/aura/client/window_types.h"
+#include "ui/aura/scoped_window_event_targeting_blocker.h"
 #include "ui/base/hit_test.h"
 #include "ui/compositor/scoped_layer_animation_settings.h"
 #include "ui/gfx/animation/tween.h"
@@ -228,15 +229,14 @@
  public:
   explicit ScopedWindowModifier(aura::Window* window) : window_(window) {
     DCHECK(window_);
-    original_event_targeting_policy_ = window_->event_targeting_policy();
-    window_->SetEventTargetingPolicy(aura::EventTargetingPolicy::kNone);
+    event_targeting_blocker_ =
+        std::make_unique<aura::ScopedWindowEventTargetingBlocker>(window_);
   }
   ~ScopedWindowModifier() override {
     for (const auto& descendant : transient_descendants_values_)
       descendant.first->RemoveObserver(this);
 
     ResetOpacityAndTransform();
-    window_->SetEventTargetingPolicy(original_event_targeting_policy_);
   }
 
   bool IsAnimating() const {
@@ -324,7 +324,8 @@
   // For the duration of this object |window_| event targeting policy will be
   // sent to kNone. Store the original so we can change it back when destroying
   // this object.
-  aura::EventTargetingPolicy original_event_targeting_policy_;
+  std::unique_ptr<aura::ScopedWindowEventTargetingBlocker>
+      event_targeting_blocker_;
 
   DISALLOW_COPY_AND_ASSIGN(ScopedWindowModifier);
 };
diff --git a/ash/wm/overview/overview_session.cc b/ash/wm/overview/overview_session.cc
index dff9bd9..4d13894 100644
--- a/ash/wm/overview/overview_session.cc
+++ b/ash/wm/overview/overview_session.cc
@@ -996,10 +996,9 @@
     grid->SetBoundsAndUpdatePositions(
         GetGridBoundsInScreen(const_cast<aura::Window*>(grid->root_window()),
                               /*divider_changed=*/true),
-        /*ignored_items=*/{}, /*animate=*/true);
+        /*ignored_items=*/{}, /*animate=*/false);
   }
-  PositionWindows(/*animate=*/false);
-  UpdateNoWindowsWidget();
+  RefreshNoWindowsWidgetBounds(/*animate=*/false);
 }
 
 void OverviewSession::ResetFocusRestoreWindow(bool focus) {
@@ -1084,7 +1083,7 @@
                               /*divider_changed=*/false),
         /*ignored_items=*/{}, /*animate=*/false);
   }
-  UpdateNoWindowsWidget();
+  RefreshNoWindowsWidgetBounds(/*animate=*/false);
 }
 
 void OverviewSession::UpdateNoWindowsWidget() {
diff --git a/ash/wm/overview/scoped_overview_transform_window.cc b/ash/wm/overview/scoped_overview_transform_window.cc
index b59cf355..25d4339 100644
--- a/ash/wm/overview/scoped_overview_transform_window.cc
+++ b/ash/wm/overview/scoped_overview_transform_window.cc
@@ -29,6 +29,7 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/client/transient_window_client.h"
+#include "ui/aura/scoped_window_event_targeting_blocker.h"
 #include "ui/aura/window.h"
 #include "ui/compositor/layer.h"
 #include "ui/compositor/layer_observer.h"
@@ -111,8 +112,9 @@
 
   std::vector<aura::Window*> transient_children_to_hide;
   for (auto* transient : GetTransientTreeIterator(window)) {
-    targeting_policy_map_[transient] = transient->event_targeting_policy();
-    transient->SetEventTargetingPolicy(aura::EventTargetingPolicy::kNone);
+    event_targeting_blocker_map_[transient] =
+        std::make_unique<aura::ScopedWindowEventTargetingBlocker>(transient);
+
     transient->SetProperty(kIsShowingInOverviewKey, true);
 
     // Hide transient children which have been specified to be hidden in
@@ -160,10 +162,8 @@
 ScopedOverviewTransformWindow::~ScopedOverviewTransformWindow() {
   for (auto* transient : GetTransientTreeIterator(window_)) {
     transient->ClearProperty(kIsShowingInOverviewKey);
-    DCHECK(targeting_policy_map_.contains(transient));
-    auto it = targeting_policy_map_.find(transient);
-    transient->SetEventTargetingPolicy(it->second);
-    targeting_policy_map_.erase(it);
+    DCHECK(event_targeting_blocker_map_.contains(transient));
+    event_targeting_blocker_map_.erase(transient);
   }
 
   // No need to update the clip since we're about to restore it to
@@ -425,10 +425,11 @@
   if (parent != window_ && !::wm::HasTransientAncestor(parent, window_))
     return;
 
-  DCHECK(!targeting_policy_map_.contains(transient_child));
-  targeting_policy_map_[transient_child] =
-      transient_child->event_targeting_policy();
-  transient_child->SetEventTargetingPolicy(aura::EventTargetingPolicy::kNone);
+  DCHECK(!event_targeting_blocker_map_.contains(transient_child));
+  event_targeting_blocker_map_[transient_child] =
+      std::make_unique<aura::ScopedWindowEventTargetingBlocker>(
+          transient_child);
+  transient_child->SetProperty(kIsShowingInOverviewKey, true);
 }
 
 void ScopedOverviewTransformWindow::OnTransientChildWindowRemoved(
@@ -437,10 +438,9 @@
   if (parent != window_ && !::wm::HasTransientAncestor(parent, window_))
     return;
 
-  DCHECK(targeting_policy_map_.contains(transient_child));
-  auto it = targeting_policy_map_.find(transient_child);
-  transient_child->SetEventTargetingPolicy(it->second);
-  targeting_policy_map_.erase(it);
+  transient_child->ClearProperty(kIsShowingInOverviewKey);
+  DCHECK(event_targeting_blocker_map_.contains(transient_child));
+  event_targeting_blocker_map_.erase(transient_child);
 }
 
 void ScopedOverviewTransformWindow::CloseWidget() {
diff --git a/ash/wm/overview/scoped_overview_transform_window.h b/ash/wm/overview/scoped_overview_transform_window.h
index d283d6b8..7f5827ec 100644
--- a/ash/wm/overview/scoped_overview_transform_window.h
+++ b/ash/wm/overview/scoped_overview_transform_window.h
@@ -21,9 +21,11 @@
 #include "ui/gfx/transform.h"
 
 namespace aura {
+
 class Window;
-enum class EventTargetingPolicy;
-}
+class ScopedWindowEventTargetingBlocker;
+
+}  // namespace aura
 
 namespace ui {
 class Layer;
@@ -182,8 +184,6 @@
   // The original opacity of the window before entering overview mode.
   float original_opacity_;
 
-  aura::EventTargetingPolicy original_event_targeting_policy_;
-
   // Specifies how the window is laid out in the grid.
   GridWindowFillMode type_ = GridWindowFillMode::kNormal;
 
@@ -200,8 +200,9 @@
   // For the duration of this object |window_| and its transient childrens'
   // event targeting policy will be sent to NONE. Store the originals so we can
   // change it back when destroying |this|.
-  base::flat_map<aura::Window*, aura::EventTargetingPolicy>
-      targeting_policy_map_;
+  base::flat_map<aura::Window*,
+                 std::unique_ptr<aura::ScopedWindowEventTargetingBlocker>>
+      event_targeting_blocker_map_;
 
   // The original mask layer of the window before entering overview mode.
   ui::Layer* original_mask_layer_ = nullptr;
diff --git a/base/android/java/templates/BuildConfig.template b/base/android/java/templates/BuildConfig.template
index 32bddbc..64dbe44a 100644
--- a/base/android/java/templates/BuildConfig.template
+++ b/base/android/java/templates/BuildConfig.template
@@ -68,4 +68,10 @@
 #else
     public static MAYBE_FINAL int MIN_SDK_VERSION = 1;
 #endif
+
+#if defined(_IS_BUNDLE)
+    public static MAYBE_FINAL boolean IS_BUNDLE = true;
+#else
+    public static MAYBE_FINAL boolean IS_BUNDLE MAYBE_FALSE;
+#endif
 }
diff --git a/base/file_version_info_win_unittest.cc b/base/file_version_info_win_unittest.cc
index 6c81bb7..0bab8568 100644
--- a/base/file_version_info_win_unittest.cc
+++ b/base/file_version_info_win_unittest.cc
@@ -16,6 +16,7 @@
 #include "base/path_service.h"
 #include "base/scoped_native_library.h"
 #include "base/strings/string_util.h"
+#include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 using base::FilePath;
@@ -157,6 +158,9 @@
             version_info_win->GetFileVersion());
 }
 
+#if defined(ARCH_CPU_64_BITS)
+// TODO(bug_1011439): Change no_version_info.dll to 32 bit, so this test will
+// work for 32-bit Windows as well.
 TYPED_TEST(FileVersionInfoTest, NoVersionInfo) {
   FilePath dll_path = GetTestDataPath();
   dll_path = dll_path.AppendASCII("no_version_info.dll");
@@ -164,3 +168,4 @@
   TypeParam factory(dll_path);
   ASSERT_FALSE(factory.Create());
 }
+#endif
diff --git a/base/test/BUILD.gn b/base/test/BUILD.gn
index ad5af73d..53ea803 100644
--- a/base/test/BUILD.gn
+++ b/base/test/BUILD.gn
@@ -456,6 +456,7 @@
 
 if (is_android) {
   generate_jni("base_unittests_jni_headers") {
+    testonly = true
     sources = [
       "android/java/src/org/chromium/base/ContentUriTestUtils.java",
       "android/java/src/org/chromium/base/JavaHandlerThreadHelpers.java",
@@ -463,6 +464,7 @@
   }
 
   generate_jni("test_support_jni_headers") {
+    testonly = true
     sources = [
       "android/java/src/org/chromium/base/MainReturnCodeResult.java",
       "android/java/src/org/chromium/base/MultiprocessTestClientLauncher.java",
diff --git a/build/android/BUILD.gn b/build/android/BUILD.gn
index 8abd1a72..4f36326 100644
--- a/build/android/BUILD.gn
+++ b/build/android/BUILD.gn
@@ -93,15 +93,11 @@
     data += [
       "//third_party/android_build_tools/bundletool/bundletool-all-0.10.3.jar",
     ]
-    data_deps += [
-      "//third_party/android_platform/development/scripts:stack_py",
-      "//tools/android/avd:avd_py",
-    ]
+    data_deps +=
+        [ "//third_party/android_platform/development/scripts:stack_py" ]
     if (is_asan) {
       data_deps += [ "//tools/android/asan/third_party:asan_device_setup" ]
     }
-  } else {
-    pydeps_sources_assignment_filters = [ "../../tools/android/*" ]
   }
 
   # Proguard is needed only when using apks (rather than native executables).
diff --git a/build/android/PRESUBMIT.py b/build/android/PRESUBMIT.py
index 32ccfac..8eb0792 100644
--- a/build/android/PRESUBMIT.py
+++ b/build/android/PRESUBMIT.py
@@ -10,8 +10,6 @@
 
 
 def CommonChecks(input_api, output_api):
-  output = []
-
   build_android_dir = input_api.PresubmitLocalPath()
 
   def J(*dirs):
@@ -19,32 +17,38 @@
     return input_api.os_path.join(build_android_dir, *dirs)
 
   build_pys = [
+      r'gn/.*\.py$',
       r'gyp/.*\.py$',
-      r'gn/.*\.py',
   ]
-  output.extend(input_api.canned_checks.RunPylint(
-      input_api,
-      output_api,
-      pylintrc='pylintrc',
-      black_list=build_pys,
-      extra_paths_list=[
-          J(),
-          J('gyp'),
-          J('buildbot'),
-          J('..', 'util', 'lib', 'common'),
-          J('..', '..', 'third_party', 'catapult', 'common', 'py_trace_event'),
-          J('..', '..', 'third_party', 'catapult', 'common', 'py_utils'),
-          J('..', '..', 'third_party', 'catapult', 'devil'),
-          J('..', '..', 'third_party', 'catapult', 'tracing'),
-          J('..', '..', 'third_party', 'depot_tools'),
-          J('..', '..', 'third_party', 'colorama', 'src'),
-          J('..', '..', 'third_party', 'pymock'),
-      ]))
-  output.extend(input_api.canned_checks.RunPylint(
-      input_api,
-      output_api,
-      white_list=build_pys,
-      extra_paths_list=[J('gyp'), J('gn')]))
+  tests = []
+  tests.extend(
+      input_api.canned_checks.GetPylint(
+          input_api,
+          output_api,
+          pylintrc='pylintrc',
+          black_list=[
+              r'.*_pb2\.py',
+          ] + build_pys,
+          extra_paths_list=[
+              J(),
+              J('gyp'),
+              J('buildbot'),
+              J('..', 'util', 'lib', 'common'),
+              J('..', '..', 'third_party', 'catapult', 'common',
+                'py_trace_event'),
+              J('..', '..', 'third_party', 'catapult', 'common', 'py_utils'),
+              J('..', '..', 'third_party', 'catapult', 'devil'),
+              J('..', '..', 'third_party', 'catapult', 'tracing'),
+              J('..', '..', 'third_party', 'depot_tools'),
+              J('..', '..', 'third_party', 'colorama', 'src'),
+              J('..', '..', 'third_party', 'pymock'),
+          ]))
+  tests.extend(
+      input_api.canned_checks.GetPylint(
+          input_api,
+          output_api,
+          white_list=build_pys,
+          extra_paths_list=[J('gyp'), J('gn')]))
 
   # Disabled due to http://crbug.com/410936
   #output.extend(input_api.canned_checks.RunUnitTestsInDirectory(
@@ -55,8 +59,8 @@
       'PYTHONPATH': build_android_dir,
       'PYTHONDONTWRITEBYTECODE': '1',
   })
-  output.extend(
-      input_api.canned_checks.RunUnitTests(
+  tests.extend(
+      input_api.canned_checks.GetUnitTests(
           input_api,
           output_api,
           unit_tests=[
@@ -88,7 +92,7 @@
           ],
           env=pylib_test_env))
 
-  return output
+  return input_api.RunTests(tests)
 
 
 def CheckChangeOnUpload(input_api, output_api):
diff --git a/build/android/pylib/local/emulator/avd.py b/build/android/pylib/local/emulator/avd.py
new file mode 100644
index 0000000..cbc72c48
--- /dev/null
+++ b/build/android/pylib/local/emulator/avd.py
@@ -0,0 +1,469 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import contextlib
+import json
+import logging
+import os
+import socket
+import stat
+import subprocess
+import threading
+
+from google.protobuf import text_format  # pylint: disable=import-error
+
+from devil.android import device_utils
+from devil.android.sdk import adb_wrapper
+from devil.utils import cmd_helper
+from devil.utils import timeout_retry
+from py_utils import tempfile_ext
+from pylib import constants
+from pylib.local.emulator.proto import avd_pb2
+
+_ALL_PACKAGES = object()
+_DEFAULT_AVDMANAGER_PATH = os.path.join(constants.ANDROID_SDK_ROOT, 'tools',
+                                        'bin', 'avdmanager')
+
+
+class AvdException(Exception):
+  """Raised when this module has a problem interacting with an AVD."""
+
+  def __init__(self, summary, command=None, stdout=None, stderr=None):
+    message_parts = [summary]
+    if command:
+      message_parts.append('  command: %s' % ' '.join(command))
+    if stdout:
+      message_parts.append('  stdout:')
+      message_parts.extend('    %s' % line for line in stdout.splitlines())
+    if stderr:
+      message_parts.append('  stderr:')
+      message_parts.extend('    %s' % line for line in stderr.splitlines())
+
+    super(AvdException, self).__init__('\n'.join(message_parts))
+
+
+def _Load(avd_proto_path):
+  """Loads an Avd proto from a textpb file at the given path.
+
+  Should not be called outside of this module.
+
+  Args:
+    avd_proto_path: path to a textpb file containing an Avd message.
+  """
+  with open(avd_proto_path) as avd_proto_file:
+    return text_format.Merge(avd_proto_file.read(), avd_pb2.Avd())
+
+
+class _AvdManagerAgent(object):
+  """Private utility for interacting with avdmanager."""
+
+  def __init__(self, avd_home, sdk_root):
+    """Create an _AvdManagerAgent.
+
+    Args:
+      avd_home: path to ANDROID_AVD_HOME directory.
+        Typically something like /path/to/dir/.android/avd
+      sdk_root: path to SDK root directory.
+    """
+    self._avd_home = avd_home
+    self._sdk_root = sdk_root
+
+    self._env = dict(os.environ)
+
+    # avdmanager, like many tools that have evolved from `android`
+    # (http://bit.ly/2m9JiTx), uses toolsdir to find the SDK root.
+    # Pass avdmanager a fake directory under the directory in which
+    # we install the system images s.t. avdmanager can find the
+    # system images.
+    fake_tools_dir = os.path.join(self._sdk_root, 'non-existent-tools')
+    self._env.update({
+        'ANDROID_AVD_HOME':
+        self._avd_home,
+        'AVDMANAGER_OPTS':
+        '-Dcom.android.sdkmanager.toolsdir=%s' % fake_tools_dir,
+    })
+
+  def Create(self, avd_name, system_image, force=False):
+    """Call `avdmanager create`.
+
+    Args:
+      avd_name: name of the AVD to create.
+      system_image: system image to use for the AVD.
+      force: whether to force creation, overwriting any existing
+        AVD with the same name.
+    """
+    create_cmd = [
+        _DEFAULT_AVDMANAGER_PATH,
+        '-v',
+        'create',
+        'avd',
+        '-n',
+        avd_name,
+        '-k',
+        system_image,
+    ]
+    if force:
+      create_cmd += ['--force']
+
+    create_proc = cmd_helper.Popen(
+        create_cmd,
+        stdin=subprocess.PIPE,
+        stdout=subprocess.PIPE,
+        stderr=subprocess.PIPE,
+        env=self._env)
+    output, error = create_proc.communicate(input='\n')
+    if create_proc.returncode != 0:
+      raise AvdException(
+          'AVD creation failed',
+          command=create_cmd,
+          stdout=output,
+          stderr=error)
+
+    for line in output.splitlines():
+      logging.info('  %s', line)
+
+  def Delete(self, avd_name):
+    """Call `avdmanager delete`.
+
+    Args:
+      avd_name: name of the AVD to delete.
+    """
+    delete_cmd = [
+        _DEFAULT_AVDMANAGER_PATH,
+        '-v',
+        'delete',
+        'avd',
+        '-n',
+        avd_name,
+    ]
+    try:
+      for line in cmd_helper.IterCmdOutputLines(delete_cmd, env=self._env):
+        logging.info('  %s', line)
+    except subprocess.CalledProcessError as e:
+      raise AvdException('AVD deletion failed: %s' % str(e), command=delete_cmd)
+
+
+class AvdConfig(object):
+  """Represents a particular AVD configuration.
+
+  This class supports creation, installation, and execution of an AVD
+  from a given Avd proto message, as defined in
+  //build/android/pylib/local/emulator/proto/avd.proto.
+  """
+
+  def __init__(self, avd_proto_path):
+    """Create an AvdConfig object.
+
+    Args:
+      avd_proto_path: path to a textpb file containing an Avd message.
+    """
+    self._config = _Load(avd_proto_path)
+
+    self._emulator_home = os.path.join(constants.DIR_SOURCE_ROOT,
+                                       self._config.avd_package.dest_path)
+    self._emulator_sdk_root = os.path.join(
+        constants.DIR_SOURCE_ROOT, self._config.emulator_package.dest_path)
+    self._emulator_path = os.path.join(self._emulator_sdk_root, 'emulator',
+                                       'emulator')
+
+    self._initialized = False
+    self._initializer_lock = threading.Lock()
+
+  def Create(self,
+             force=False,
+             snapshot=False,
+             keep=False,
+             cipd_json_output=None):
+    """Create an instance of the AVD CIPD package.
+
+    This method:
+     - installs the requisite system image
+     - creates the AVD
+     - modifies the AVD's ini files to support running chromium tests
+       in chromium infrastructure
+     - optionally starts & stops the AVD for snapshotting (default no)
+     - creates and uploads an instance of the AVD CIPD package
+     - optionally deletes the AVD (default yes)
+
+    Args:
+      force: bool indicating whether to force create the AVD.
+      snapshot: bool indicating whether to snapshot the AVD before creating
+        the CIPD package.
+      keep: bool indicating whether to keep the AVD after creating
+        the CIPD package.
+      cipd_json_output: string path to pass to `cipd create` via -json-output.
+    """
+    logging.info('Installing required packages.')
+    self.Install(packages=[
+        self._config.emulator_package,
+        self._config.system_image_package,
+    ])
+
+    android_avd_home = os.path.join(self._emulator_home, 'avd')
+
+    if not os.path.exists(android_avd_home):
+      os.makedirs(android_avd_home)
+
+    avd_manager = _AvdManagerAgent(
+        avd_home=android_avd_home, sdk_root=self._emulator_sdk_root)
+
+    logging.info('Creating AVD.')
+    avd_manager.Create(
+        avd_name=self._config.avd_name,
+        system_image=self._config.system_image_name,
+        force=force)
+
+    try:
+      logging.info('Modifying AVD configuration.')
+
+      root_ini = os.path.join(android_avd_home,
+                              '%s.ini' % self._config.avd_name)
+      avd_dir = os.path.join(android_avd_home, '%s.avd' % self._config.avd_name)
+      config_ini = os.path.join(avd_dir, 'config.ini')
+
+      with open(root_ini, 'a') as root_ini_file:
+        root_ini_file.write('path.rel=avd/%s.avd\n' % self._config.avd_name)
+
+      with open(config_ini, 'a') as config_ini_file:
+        config_ini_file.write('disk.dataPartition.size=4G\n')
+
+      # Start & stop the AVD.
+      self._Initialize()
+      instance = _AvdInstance(self._emulator_path, self._config.avd_name,
+                              self._emulator_home)
+      instance.Start(read_only=not snapshot)
+      device_utils.DeviceUtils(instance.serial).WaitUntilFullyBooted(
+          timeout=180, retries=0)
+      instance.Stop()
+
+      package_def_content = {
+          'package':
+          self._config.avd_package.package_name,
+          'root':
+          self._emulator_home,
+          'install_mode':
+          'copy',
+          'data': [
+              {
+                  'dir': os.path.relpath(avd_dir, self._emulator_home)
+              },
+              {
+                  'file': os.path.relpath(root_ini, self._emulator_home)
+              },
+          ],
+      }
+
+      logging.info('Creating AVD CIPD package.')
+      logging.debug('ensure file content: %s',
+                    json.dumps(package_def_content, indent=2))
+
+      with tempfile_ext.TemporaryFileName(suffix='.json') as package_def_path:
+        with open(package_def_path, 'w') as package_def_file:
+          json.dump(package_def_content, package_def_file)
+
+        logging.info('  %s', self._config.avd_package.package_name)
+        cipd_create_cmd = [
+            'cipd',
+            'create',
+            '-pkg-def',
+            package_def_path,
+        ]
+        if cipd_json_output:
+          cipd_create_cmd.extend([
+              '-json-output',
+              cipd_json_output,
+          ])
+        try:
+          for line in cmd_helper.IterCmdOutputLines(cipd_create_cmd):
+            logging.info('    %s', line)
+        except subprocess.CalledProcessError as e:
+          raise AvdException(
+              'CIPD package creation failed: %s' % str(e),
+              command=cipd_create_cmd)
+
+    finally:
+      if not keep:
+        logging.info('Deleting AVD.')
+        avd_manager.Delete(avd_name=self._config.avd_name)
+
+  def Install(self, packages=_ALL_PACKAGES):
+    """Installs the requested CIPD packages.
+
+    Returns: None
+    Raises: AvdException on failure to install.
+    """
+    pkgs_by_dir = {}
+    if packages is _ALL_PACKAGES:
+      packages = [
+          self._config.avd_package,
+          self._config.emulator_package,
+          self._config.system_image_package,
+      ]
+    for pkg in packages:
+      if not pkg.dest_path in pkgs_by_dir:
+        pkgs_by_dir[pkg.dest_path] = []
+      pkgs_by_dir[pkg.dest_path].append(pkg)
+
+    for pkg_dir, pkgs in pkgs_by_dir.iteritems():
+      logging.info('Installing packages in %s', pkg_dir)
+      cipd_root = os.path.join(constants.DIR_SOURCE_ROOT, pkg_dir)
+      if not os.path.exists(cipd_root):
+        os.makedirs(cipd_root)
+      ensure_path = os.path.join(cipd_root, '.ensure')
+      with open(ensure_path, 'w') as ensure_file:
+        # Make CIPD ensure that all files are present, even if
+        # it thinks the package is installed.
+        ensure_file.write('$ParanoidMode CheckPresence\n\n')
+        for pkg in pkgs:
+          ensure_file.write('%s %s\n' % (pkg.package_name, pkg.version))
+          logging.info('  %s %s', pkg.package_name, pkg.version)
+      ensure_cmd = [
+          'cipd',
+          'ensure',
+          '-ensure-file',
+          ensure_path,
+          '-root',
+          cipd_root,
+      ]
+      try:
+        for line in cmd_helper.IterCmdOutputLines(ensure_cmd):
+          logging.info('    %s', line)
+      except subprocess.CalledProcessError as e:
+        raise AvdException(
+            'Failed to install CIPD package %s: %s' % (pkg.package_name,
+                                                       str(e)),
+            command=ensure_cmd)
+
+    # The emulator requires that some files are writable.
+    for dirname, _, filenames in os.walk(self._emulator_home):
+      for f in filenames:
+        path = os.path.join(dirname, f)
+        if (os.lstat(path).st_mode &
+            (stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) == stat.S_IRUSR):
+          os.chmod(path, stat.S_IRUSR | stat.S_IWUSR)
+
+  def _Initialize(self):
+    if self._initialized:
+      return
+
+    with self._initializer_lock:
+      if self._initialized:
+        return
+
+      # Emulator start-up looks for the adb daemon. Make sure it's running.
+      adb_wrapper.AdbWrapper.StartServer()
+
+      # Emulator start-up tries to check for the SDK root by looking for
+      # platforms/ and platform-tools/. Ensure they exist.
+      # See http://bit.ly/2YAkyFE for context.
+      required_dirs = [
+          os.path.join(self._emulator_sdk_root, 'platforms'),
+          os.path.join(self._emulator_sdk_root, 'platform-tools'),
+      ]
+      for d in required_dirs:
+        if not os.path.exists(d):
+          os.makedirs(d)
+
+  def CreateInstance(self):
+    """Creates an AVD instance without starting it.
+
+    Returns:
+      An _AvdInstance.
+    """
+    self._Initialize()
+    return _AvdInstance(self._emulator_path, self._config.avd_name,
+                        self._emulator_home)
+
+  def StartInstance(self):
+    """Starts an AVD instance.
+
+    Returns:
+      An _AvdInstance.
+    """
+    instance = self.CreateInstance()
+    instance.Start()
+    return instance
+
+
+class _AvdInstance(object):
+  """Represents a single running instance of an AVD.
+
+  This class should only be created directly by AvdConfig.StartInstance,
+  but its other methods can be freely called.
+  """
+
+  def __init__(self, emulator_path, avd_name, emulator_home):
+    """Create an _AvdInstance object.
+
+    Args:
+      emulator_path: path to the emulator binary.
+      avd_name: name of the AVD to run.
+      emulator_home: path to the emulator home directory.
+    """
+    self._avd_name = avd_name
+    self._emulator_home = emulator_home
+    self._emulator_path = emulator_path
+    self._emulator_proc = None
+    self._emulator_serial = None
+    self._sink = None
+
+  def __str__(self):
+    return '%s|%s' % (self._avd_name, (self._emulator_serial or id(self)))
+
+  def Start(self, read_only=True):
+    """Starts the emulator running an instance of the given AVD."""
+    with tempfile_ext.TemporaryFileName() as socket_path, (contextlib.closing(
+        socket.socket(socket.AF_UNIX))) as sock:
+      sock.bind(socket_path)
+      emulator_cmd = [
+          self._emulator_path, '-avd', self._avd_name, '-report-console',
+          'unix:%s' % socket_path, '-no-window'
+      ]
+      if read_only:
+        emulator_cmd += [
+            '-read-only',
+        ]
+      emulator_env = {}
+      if self._emulator_home:
+        emulator_env['ANDROID_EMULATOR_HOME'] = self._emulator_home
+      sock.listen(1)
+
+      logging.info('Starting emulator.')
+
+      # TODO(jbudorick): Add support for logging emulator stdout & stderr at
+      # higher logging levels.
+      self._sink = open('/dev/null', 'w')
+      self._emulator_proc = cmd_helper.Popen(
+          emulator_cmd, stdout=self._sink, stderr=self._sink, env=emulator_env)
+
+      # Waits for the emulator to report its serial as requested via
+      # -report-console. See http://bit.ly/2lK3L18 for more.
+      def listen_for_serial(s):
+        logging.info('Waiting for connection from emulator.')
+        with contextlib.closing(s.accept()[0]) as conn:
+          val = conn.recv(1024)
+          return 'emulator-%d' % int(val)
+
+      try:
+        self._emulator_serial = timeout_retry.Run(
+            listen_for_serial, timeout=30, retries=0, args=[sock])
+        logging.info('%s started', self._emulator_serial)
+      except Exception as e:
+        self.Stop()
+        raise AvdException('Emulator failed to start: %s' % str(e))
+
+  def Stop(self):
+    """Stops the emulator process."""
+    if self._emulator_proc:
+      if self._emulator_proc.poll() is None:
+        self._emulator_proc.terminate()
+        self._emulator_proc.wait()
+      self._emulator_proc = None
+    if self._sink:
+      self._sink.close()
+      self._sink = None
+
+  @property
+  def serial(self):
+    return self._emulator_serial
diff --git a/build/android/pylib/local/emulator/local_emulator_environment.py b/build/android/pylib/local/emulator/local_emulator_environment.py
index c39827e..24eed16 100644
--- a/build/android/pylib/local/emulator/local_emulator_environment.py
+++ b/build/android/pylib/local/emulator/local_emulator_environment.py
@@ -3,17 +3,10 @@
 # found in the LICENSE file.
 
 import logging
-import os
 
 from devil.utils import parallelizer
-from pylib.constants import host_paths
 from pylib.local.device import local_device_environment
-
-AVD_DIR_PATH = os.path.join(host_paths.DIR_SOURCE_ROOT, 'tools', 'android',
-                            'avd')
-with host_paths.SysPath(AVD_DIR_PATH):
-  import avd  # pylint: disable=import-error
-
+from pylib.local.emulator import avd
 
 # Mirroring https://bit.ly/2OjuxcS#23
 _MAX_ANDROID_EMULATORS = 16
diff --git a/tools/android/avd/proto/__init__.py b/build/android/pylib/local/emulator/proto/__init__.py
similarity index 100%
rename from tools/android/avd/proto/__init__.py
rename to build/android/pylib/local/emulator/proto/__init__.py
diff --git a/tools/android/avd/proto/avd.proto b/build/android/pylib/local/emulator/proto/avd.proto
similarity index 100%
rename from tools/android/avd/proto/avd.proto
rename to build/android/pylib/local/emulator/proto/avd.proto
diff --git a/build/android/pylib/local/emulator/proto/avd_pb2.py b/build/android/pylib/local/emulator/proto/avd_pb2.py
new file mode 100644
index 0000000..c264e6d1
--- /dev/null
+++ b/build/android/pylib/local/emulator/proto/avd_pb2.py
@@ -0,0 +1,218 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: avd.proto
+
+import sys
+_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode('latin1'))
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+    name='avd.proto',
+    package='tools.android.avd.proto',
+    syntax='proto3',
+    serialized_pb=_b(
+        '\n\tavd.proto\x12\x17tools.android.avd.proto\"G\n\x0b\x43IPDPackage\x12\x14\n\x0cpackage_name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x11\n\tdest_path\x18\x03 \x01(\t\"\xf1\x01\n\x03\x41vd\x12>\n\x10\x65mulator_package\x18\x01 \x01(\x0b\x32$.tools.android.avd.proto.CIPDPackage\x12\x42\n\x14system_image_package\x18\x02 \x01(\x0b\x32$.tools.android.avd.proto.CIPDPackage\x12\x19\n\x11system_image_name\x18\x03 \x01(\t\x12\x39\n\x0b\x61vd_package\x18\x04 \x01(\x0b\x32$.tools.android.avd.proto.CIPDPackage\x12\x10\n\x08\x61vd_name\x18\x05 \x01(\tb\x06proto3'
+    ))
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+_CIPDPACKAGE = _descriptor.Descriptor(
+    name='CIPDPackage',
+    full_name='tools.android.avd.proto.CIPDPackage',
+    filename=None,
+    file=DESCRIPTOR,
+    containing_type=None,
+    fields=[
+        _descriptor.FieldDescriptor(
+            name='package_name',
+            full_name='tools.android.avd.proto.CIPDPackage.package_name',
+            index=0,
+            number=1,
+            type=9,
+            cpp_type=9,
+            label=1,
+            has_default_value=False,
+            default_value=_b("").decode('utf-8'),
+            message_type=None,
+            enum_type=None,
+            containing_type=None,
+            is_extension=False,
+            extension_scope=None,
+            options=None),
+        _descriptor.FieldDescriptor(
+            name='version',
+            full_name='tools.android.avd.proto.CIPDPackage.version',
+            index=1,
+            number=2,
+            type=9,
+            cpp_type=9,
+            label=1,
+            has_default_value=False,
+            default_value=_b("").decode('utf-8'),
+            message_type=None,
+            enum_type=None,
+            containing_type=None,
+            is_extension=False,
+            extension_scope=None,
+            options=None),
+        _descriptor.FieldDescriptor(
+            name='dest_path',
+            full_name='tools.android.avd.proto.CIPDPackage.dest_path',
+            index=2,
+            number=3,
+            type=9,
+            cpp_type=9,
+            label=1,
+            has_default_value=False,
+            default_value=_b("").decode('utf-8'),
+            message_type=None,
+            enum_type=None,
+            containing_type=None,
+            is_extension=False,
+            extension_scope=None,
+            options=None),
+    ],
+    extensions=[],
+    nested_types=[],
+    enum_types=[],
+    options=None,
+    is_extendable=False,
+    syntax='proto3',
+    extension_ranges=[],
+    oneofs=[],
+    serialized_start=38,
+    serialized_end=109,
+)
+
+_AVD = _descriptor.Descriptor(
+    name='Avd',
+    full_name='tools.android.avd.proto.Avd',
+    filename=None,
+    file=DESCRIPTOR,
+    containing_type=None,
+    fields=[
+        _descriptor.FieldDescriptor(
+            name='emulator_package',
+            full_name='tools.android.avd.proto.Avd.emulator_package',
+            index=0,
+            number=1,
+            type=11,
+            cpp_type=10,
+            label=1,
+            has_default_value=False,
+            default_value=None,
+            message_type=None,
+            enum_type=None,
+            containing_type=None,
+            is_extension=False,
+            extension_scope=None,
+            options=None),
+        _descriptor.FieldDescriptor(
+            name='system_image_package',
+            full_name='tools.android.avd.proto.Avd.system_image_package',
+            index=1,
+            number=2,
+            type=11,
+            cpp_type=10,
+            label=1,
+            has_default_value=False,
+            default_value=None,
+            message_type=None,
+            enum_type=None,
+            containing_type=None,
+            is_extension=False,
+            extension_scope=None,
+            options=None),
+        _descriptor.FieldDescriptor(
+            name='system_image_name',
+            full_name='tools.android.avd.proto.Avd.system_image_name',
+            index=2,
+            number=3,
+            type=9,
+            cpp_type=9,
+            label=1,
+            has_default_value=False,
+            default_value=_b("").decode('utf-8'),
+            message_type=None,
+            enum_type=None,
+            containing_type=None,
+            is_extension=False,
+            extension_scope=None,
+            options=None),
+        _descriptor.FieldDescriptor(
+            name='avd_package',
+            full_name='tools.android.avd.proto.Avd.avd_package',
+            index=3,
+            number=4,
+            type=11,
+            cpp_type=10,
+            label=1,
+            has_default_value=False,
+            default_value=None,
+            message_type=None,
+            enum_type=None,
+            containing_type=None,
+            is_extension=False,
+            extension_scope=None,
+            options=None),
+        _descriptor.FieldDescriptor(
+            name='avd_name',
+            full_name='tools.android.avd.proto.Avd.avd_name',
+            index=4,
+            number=5,
+            type=9,
+            cpp_type=9,
+            label=1,
+            has_default_value=False,
+            default_value=_b("").decode('utf-8'),
+            message_type=None,
+            enum_type=None,
+            containing_type=None,
+            is_extension=False,
+            extension_scope=None,
+            options=None),
+    ],
+    extensions=[],
+    nested_types=[],
+    enum_types=[],
+    options=None,
+    is_extendable=False,
+    syntax='proto3',
+    extension_ranges=[],
+    oneofs=[],
+    serialized_start=112,
+    serialized_end=353,
+)
+
+_AVD.fields_by_name['emulator_package'].message_type = _CIPDPACKAGE
+_AVD.fields_by_name['system_image_package'].message_type = _CIPDPACKAGE
+_AVD.fields_by_name['avd_package'].message_type = _CIPDPACKAGE
+DESCRIPTOR.message_types_by_name['CIPDPackage'] = _CIPDPACKAGE
+DESCRIPTOR.message_types_by_name['Avd'] = _AVD
+
+CIPDPackage = _reflection.GeneratedProtocolMessageType(
+    'CIPDPackage',
+    (_message.Message, ),
+    dict(
+        DESCRIPTOR=_CIPDPACKAGE,
+        __module__='avd_pb2'
+        # @@protoc_insertion_point(class_scope:tools.android.avd.proto.CIPDPackage)
+    ))
+_sym_db.RegisterMessage(CIPDPackage)
+
+Avd = _reflection.GeneratedProtocolMessageType(
+    'Avd',
+    (_message.Message, ),
+    dict(
+        DESCRIPTOR=_AVD,
+        __module__='avd_pb2'
+        # @@protoc_insertion_point(class_scope:tools.android.avd.proto.Avd)
+    ))
+_sym_db.RegisterMessage(Avd)
+
+# @@protoc_insertion_point(module_scope)
diff --git a/build/android/test_runner.pydeps b/build/android/test_runner.pydeps
index f19d9b9..e4b118c 100644
--- a/build/android/test_runner.pydeps
+++ b/build/android/test_runner.pydeps
@@ -118,9 +118,6 @@
 ../../third_party/markupsafe/__init__.py
 ../../third_party/markupsafe/_compat.py
 ../../third_party/markupsafe/_native.py
-../../tools/android/avd/avd.py
-../../tools/android/avd/proto/__init__.py
-../../tools/android/avd/proto/avd_pb2.py
 ../../tools/swarming_client/libs/__init__.py
 ../../tools/swarming_client/libs/logdog/__init__.py
 ../../tools/swarming_client/libs/logdog/bootstrap.py
@@ -172,7 +169,10 @@
 pylib/local/device/local_device_monkey_test_run.py
 pylib/local/device/local_device_test_run.py
 pylib/local/emulator/__init__.py
+pylib/local/emulator/avd.py
 pylib/local/emulator/local_emulator_environment.py
+pylib/local/emulator/proto/__init__.py
+pylib/local/emulator/proto/avd_pb2.py
 pylib/local/local_test_server_spawner.py
 pylib/local/machine/__init__.py
 pylib/local/machine/local_machine_environment.py
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index e74291a..0fa7024 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -1985,6 +1985,10 @@
         defines += [ "_IS_CHROME_BRANDED" ]
       }
 
+      if (defined(invoker.is_bundle_module) && invoker.is_bundle_module) {
+        defines += [ "_IS_BUNDLE" ]
+      }
+
       if (invoker.use_final_fields) {
         forward_variables_from(invoker,
                                [
@@ -2698,7 +2702,11 @@
 
     if (_generate_buildconfig_java) {
       generate_build_config_srcjar("${_template_name}__build_config_srcjar") {
-        forward_variables_from(invoker, [ "min_sdk_version" ])
+        forward_variables_from(invoker,
+                               [
+                                 "is_bundle_module",
+                                 "min_sdk_version",
+                               ])
         use_final_fields = true
         enable_multidex = _enable_multidex
         if (defined(invoker.product_version_resources_dep)) {
diff --git a/build/config/fuchsia/BUILD.gn b/build/config/fuchsia/BUILD.gn
index 888be8c..9a0ca69 100644
--- a/build/config/fuchsia/BUILD.gn
+++ b/build/config/fuchsia/BUILD.gn
@@ -3,7 +3,7 @@
 # found in the LICENSE file.
 
 import("//build/config/fuchsia/config.gni")
-import("//build/config/fuchsia/rules.gni")
+import("//build/config/fuchsia/generate_runner_scripts.gni")
 import("//build/config/sysroot.gni")
 
 assert(is_fuchsia)
diff --git a/build/config/fuchsia/generate_runner_scripts.gni b/build/config/fuchsia/generate_runner_scripts.gni
new file mode 100644
index 0000000..2a8bc0a6
--- /dev/null
+++ b/build/config/fuchsia/generate_runner_scripts.gni
@@ -0,0 +1,195 @@
+# Copyright 2018 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.
+
+assert(is_fuchsia)
+
+import("//build/config/chromecast_build.gni")
+import("//build/config/fuchsia/config.gni")
+import("//build/config/fuchsia/package.gni")
+import("//build/config/sysroot.gni")
+import("//build/util/generate_wrapper.gni")
+
+declare_args() {
+  # Sets the Fuchsia Amber repository which will be used by default by the
+  # generated installation scripts. If not specified, then no default directory
+  # will be used.
+  default_fuchsia_build_dir_for_installation = ""
+}
+
+# Generates a script which deploys and optionally executes a package on a
+# device.
+#
+# Parameters:
+#   package: The package() target which will be run.
+#   package_name_override: Specifies the name of the generated package, if its
+#       name is different than the |package| target name. This value must match
+#       package_name_override in the |package| target.
+#   package_deps: An array of [package, package_name_override] array pairs
+#       which specify additional dependency packages to be installed
+#       prior to execution.
+#   runner_script: The runner script implementation to use, relative to
+#       "build/fuchsia". Defaults to "test_runner.py".
+#   install_only: If true, executing the script will only install the package
+#       on the device, but not run it.
+template("fuchsia_package_runner") {
+  forward_variables_from(invoker, [ "runner_script" ])
+
+  if (defined(invoker.package_name_override)) {
+    _pkg_shortname = invoker.package_name_override
+  } else {
+    _pkg_shortname = get_label_info(invoker.package, "name")
+  }
+
+  _pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package, "dir") +
+             "/" + _pkg_shortname
+  _manifest_path = "$_pkg_dir/${_pkg_shortname}.archive_manifest"
+  _package_path = "$_pkg_dir/${_pkg_shortname}.far"
+
+  generated_run_pkg_script_path = "$root_build_dir/bin/run_${_pkg_shortname}"
+  generated_install_pkg_script_path =
+      "$root_build_dir/bin/install_$_pkg_shortname"
+
+  _generate_runner_target = "${target_name}__generate_runner"
+  _generate_installer_target = "${target_name}__generate_installer"
+
+  # Generates a script which installs and runs a test.
+  generate_wrapper(_generate_runner_target) {
+    forward_variables_from(invoker,
+                           [
+                             "target",
+                             "testonly",
+                           ])
+
+    if (defined(runner_script)) {
+      executable = rebase_path(runner_script)
+    } else {
+      executable = rebase_path("//build/fuchsia/test_runner.py")
+    }
+    wrapper_script = generated_run_pkg_script_path
+
+    deps = [
+      invoker.package,
+    ]
+    if (defined(invoker.deps)) {
+      deps += invoker.deps
+    }
+
+    data_deps = [
+      invoker.package,
+    ]
+
+    # Declares the files that are needed for test execution on the
+    # swarming test client.
+    data = [
+      _manifest_path,
+      "//build/fuchsia/",
+      "//build/util/lib/",
+      "//third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer",
+      "${qemu_root}/",
+      "${fuchsia_sdk}/tools/fvm",
+      "${fuchsia_sdk}/tools/pm",
+      "${fuchsia_sdk}/tools/symbolize",
+      "${fuchsia_sdk}/tools/zbi",
+      "${fuchsia_sdk}/.build-id/",
+      "${boot_image_root}/qemu/qemu-kernel.kernel",
+      "${boot_image_root}/qemu/storage-full.blk",
+      "${boot_image_root}/qemu/zircon-a.zbi",
+    ]
+
+    executable_args = []
+
+    package_paths = [ rebase_path(_package_path, root_build_dir) ]
+    if (defined(invoker.package_deps)) {
+      foreach(package_dep, invoker.package_deps) {
+        package_dep_target = package_dep[0]
+        package_dep_name = package_dep[1]
+
+        deps += [ package_dep_target ]
+        package_dep_path = rebase_path(
+                get_label_info(package_dep_target, "target_gen_dir") + "/" +
+                    package_dep_name + "/" + package_dep_name + ".far",
+                root_build_dir)
+        package_paths += [ package_dep_path ]
+      }
+    }
+
+    foreach(package_path, package_paths) {
+      executable_args += [
+        "--package",
+        "@WrappedPath(${package_path})",
+      ]
+    }
+
+    executable_args += [
+      "--output-directory",
+      "@WrappedPath(.)",
+      "--target-cpu",
+      target_cpu,
+      "--package-name",
+      _pkg_shortname,
+    ]
+
+    if (defined(invoker.use_test_server) && invoker.use_test_server) {
+      executable_args += [ "--enable-test-server" ]
+    }
+  }
+
+  # Produces a script which installs a package and its dependencies into the
+  # Amber repository of a pre-existing Fuchsia build directory.
+  generate_wrapper(_generate_installer_target) {
+    forward_variables_from(invoker, [ "testonly" ])
+
+    executable = rebase_path("//build/fuchsia/deploy_to_amber_repo.py")
+    wrapper_script = generated_install_pkg_script_path
+
+    deps = [
+      invoker.package,
+    ]
+    if (defined(invoker.deps)) {
+      deps += invoker.deps
+    }
+
+    # Build a list of all packages to install, and pass the list to the runner
+    # script.
+    package_paths = [ rebase_path(_package_path, root_build_dir) ]
+    if (defined(invoker.package_deps)) {
+      foreach(package_dep, invoker.package_deps) {
+        package_dep_target = package_dep[0]
+        package_dep_name = package_dep[1]
+
+        deps += [ package_dep_target ]
+        package_dep_path = rebase_path(
+                get_label_info(package_dep_target, "target_gen_dir") + "/" +
+                    package_dep_name + "/" + package_dep_name + ".far",
+                root_build_dir)
+        package_paths += [ package_dep_path ]
+      }
+    }
+    executable_args = []
+    foreach(package_path, package_paths) {
+      executable_args += [
+        "--package",
+        "@WrappedPath(${package_path})",
+      ]
+
+      if (default_fuchsia_build_dir_for_installation != "") {
+        executable_args += [
+          "--fuchsia-out-dir",
+          default_fuchsia_build_dir_for_installation,
+        ]
+      }
+    }
+  }
+
+  group(target_name) {
+    forward_variables_from(invoker, [ "testonly" ])
+    deps = [
+      ":${_generate_installer_target}",
+    ]
+
+    if (!defined(invoker.install_only) || invoker.install_only == false) {
+      deps += [ ":${_generate_runner_target}" ]
+    }
+  }
+}
diff --git a/build/config/fuchsia/rules.gni b/build/config/fuchsia/rules.gni
index f7edfdc..689e130b 100644
--- a/build/config/fuchsia/rules.gni
+++ b/build/config/fuchsia/rules.gni
@@ -1,163 +1,5 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
+# Copyright 2019 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.
 
-assert(is_fuchsia)
-
-import("//build/config/chromecast_build.gni")
-import("//build/config/fuchsia/config.gni")
-import("//build/config/fuchsia/package.gni")
-import("//build/config/sysroot.gni")
-import("//build/util/generate_wrapper.gni")
-
-# Generates a script which deploys and executes a package on a device.
-#
-# Parameters:
-#   package: The package() target which will be run.
-#   package_name_override: Specifies the name of the generated package, if its
-#       name is different than the |package| target name. This value must match
-#       package_name_override in the |package| target.
-#   package_deps: An array of [package, package_name_override] array pairs
-#       which specify additional dependency packages to be installed
-#       prior to execution.
-#   runner_script: The runner script implementation to use, relative to
-#       "build/fuchsia". Defaults to "exe_runner.py".
-#   install_only: If true, executing the script will only install the package
-#       on the device, but not run it.
-template("fuchsia_package_runner") {
-  forward_variables_from(invoker, [ "runner_script" ])
-
-  if (defined(invoker.package_name_override)) {
-    _pkg_shortname = invoker.package_name_override
-  } else {
-    _pkg_shortname = get_label_info(invoker.package, "name")
-  }
-
-  _pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package, "dir") +
-             "/" + _pkg_shortname
-  _manifest_path = "$_pkg_dir/${_pkg_shortname}.archive_manifest"
-  _package_path = "$_pkg_dir/${_pkg_shortname}.far"
-
-  if (!defined(runner_script)) {
-    runner_script = "//build/fuchsia/exe_runner.py"
-  }
-
-  generated_run_pkg_script_path = "$root_build_dir/bin/run_${_pkg_shortname}"
-  generated_install_pkg_script_path =
-      "$root_build_dir/bin/install_$_pkg_shortname"
-
-  _generate_runner_target = "${target_name}__generate_runner"
-  _generate_installer_target = "${target_name}__generate_installer"
-  _generate_template = "${target_name}__generate_template"
-
-  # Generates a script to install and optionally run a package.
-  #
-  # Parameters:
-  #   |install_only|: If true, builds a script that only installs a package.
-  #   |script_path|: The path of the script to generate.
-  template(_generate_template) {
-    generate_wrapper(target_name) {
-      forward_variables_from(invoker,
-                             [
-                               "install_only",
-                               "script_path",
-                               "target",
-                               "testonly",
-                             ])
-
-      executable = runner_script
-      wrapper_script = script_path
-
-      deps = [
-        invoker.package,
-      ]
-
-      if (defined(invoker.deps)) {
-        deps += invoker.deps
-      }
-
-      # Declares the files that are needed for test execution on the
-      # swarming test client.
-      data = [
-        _manifest_path,
-        "//build/fuchsia/",
-        "//build/util/lib/",
-        "//third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer",
-        "${qemu_root}/",
-        "${fuchsia_sdk}/tools/fvm",
-        "${fuchsia_sdk}/tools/pm",
-        "${fuchsia_sdk}/tools/symbolize",
-        "${fuchsia_sdk}/tools/zbi",
-        "${fuchsia_sdk}/.build-id/",
-        "${boot_image_root}/qemu/qemu-kernel.kernel",
-        "${boot_image_root}/qemu/storage-full.blk",
-        "${boot_image_root}/qemu/zircon-a.zbi",
-      ]
-
-      data_deps = [
-        invoker.package,
-      ]
-
-      executable_args = []
-
-      if (defined(invoker.package_deps)) {
-        foreach(cur_package, invoker.package_deps) {
-          deps += [ cur_package[0] ]
-          dep_package_path =
-              get_label_info(cur_package[0], "target_gen_dir") + "/" +
-              cur_package[1] + "/" + cur_package[1] + ".far"
-          _rebased_dep_package_path =
-              rebase_path(dep_package_path, root_build_dir)
-          executable_args += [
-            "--package-dep",
-            "@WrappedPath(${_rebased_dep_package_path})",
-          ]
-        }
-      }
-
-      _rebased_package_path = rebase_path(_package_path, root_build_dir)
-      executable_args += [
-        "--output-directory",
-        "@WrappedPath(.)",
-        "--target-cpu",
-        target_cpu,
-        "--package",
-        "@WrappedPath(${_rebased_package_path})",
-        "--package-name",
-        _pkg_shortname,
-      ]
-
-      if (defined(invoker.use_test_server) && invoker.use_test_server) {
-        executable_args += [ "--enable-test-server" ]
-      }
-
-      if (defined(install_only) && install_only) {
-        executable_args += [ "--install-only" ]
-      }
-    }
-  }
-
-  target(_generate_template, _generate_runner_target) {
-    forward_variables_from(invoker, "*")
-    script_path = generated_run_pkg_script_path
-  }
-
-  target(_generate_template, _generate_installer_target) {
-    forward_variables_from(invoker, "*")
-    script_path = generated_install_pkg_script_path
-    install_only = true
-  }
-
-  # Build the installer script, and the runner for non-|install_only| targets.
-  group(target_name) {
-    forward_variables_from(invoker, [ "testonly" ])
-    deps = [
-      ":${_generate_installer_target}",
-    ]
-
-    # Generate a runner script if the target is not install-only.
-    if (!defined(invoker.install_only)) {
-      deps += [ ":${_generate_runner_target}" ]
-    }
-  }
-}
+import("//build/config/fuchsia/generate_runner_scripts.gni")
diff --git a/build/config/python.gni b/build/config/python.gni
index 15c4574..0fb8bd4 100644
--- a/build/config/python.gni
+++ b/build/config/python.gni
@@ -22,9 +22,6 @@
 #
 # Variables
 #   pydeps_file: Path to .pydeps file to read sources from (optional).
-#   pydeps_sources_assignment_filters: Additional sources_assignment_filters to
-#     use when reading the contents of the pydeps file. Unused if pydeps_file
-#     isn't set. (optional)
 #   data: Additional files to include in data. E.g. non-.py files needed by the
 #         library, or .py files that are conditionally / lazily imported.
 #
@@ -47,12 +44,7 @@
       _py_files = read_file(invoker.pydeps_file, "list lines")
 
       # Filter out comments.
-      pydeps_sources_assignment_filters = [ "#*" ]
-      if (defined(invoker.pydeps_sources_assignment_filters)) {
-        pydeps_sources_assignment_filters +=
-            invoker.pydeps_sources_assignment_filters
-      }
-      set_sources_assignment_filter(pydeps_sources_assignment_filters)
+      set_sources_assignment_filter([ "#*" ])
       sources = _py_files
 
       # Dependencies are listed relative to the pydeps file directory, but data
diff --git a/build/fuchsia/common.py b/build/fuchsia/common.py
index b9ef6ae..7dd3d52c 100644
--- a/build/fuchsia/common.py
+++ b/build/fuchsia/common.py
@@ -15,6 +15,8 @@
 IMAGES_ROOT = os.path.join(DIR_SOURCE_ROOT, 'third_party', 'fuchsia-sdk',
                            'images')
 
+_PM = os.path.join(SDK_ROOT, 'tools', 'pm')
+
 def EnsurePathExists(path):
   """Checks that the file |path| exists on the filesystem and returns the path
   if it does, raising an exception otherwise."""
@@ -86,3 +88,11 @@
   port = sock.getsockname()[1]
   sock.close()
   return port
+
+
+def PublishPackage(package_path, tuf_root):
+  """Publishes a combined FAR package to a TUF repository root."""
+
+  subprocess.check_call(
+      [_PM, 'publish', '-a', '-f', package_path, '-r', tuf_root, '-vt', '-v'],
+      stderr=subprocess.STDOUT)
diff --git a/build/fuchsia/common_args.py b/build/fuchsia/common_args.py
index 4430182..7716771 100644
--- a/build/fuchsia/common_args.py
+++ b/build/fuchsia/common_args.py
@@ -15,16 +15,12 @@
   across test and executable target types."""
 
   common_args = arg_parser.add_argument_group('common', 'Common arguments')
-  common_args.add_argument('--package',
-                           type=os.path.realpath, required=True,
-                           help='Path to the package to execute.')
+  common_args.add_argument('--package', action='append', required=True,
+                           help='Paths of the packages to install, including '
+                                'all dependencies.')
   common_args.add_argument('--package-name', required=True,
                            help='Name of the package to execute, defined in ' +
                                 'package metadata.')
-  common_args.add_argument('--package-dep', action='append', default=[],
-                           help='Path to an additional package to install.')
-  common_args.add_argument('--install-only', action='store_true', default=False,
-                           help='Install the packages but do not run them.')
   common_args.add_argument('--output-directory',
                            type=os.path.realpath, required=True,
                            help=('Path to the directory in which build files '
diff --git a/build/fuchsia/deploy_to_amber_repo.py b/build/fuchsia/deploy_to_amber_repo.py
new file mode 100755
index 0000000..6f36e0a6
--- /dev/null
+++ b/build/fuchsia/deploy_to_amber_repo.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+#
+# Copyright 2019 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.
+
+"""Deploys Fuchsia packages to an Amber repository in a Fuchsia
+build output directory."""
+
+import argparse
+import os
+import sys
+
+from common import PublishPackage
+
+
+def main():
+  parser = argparse.ArgumentParser()
+  parser.add_argument('--package', action='append', required=True,
+                      help='Paths to packages to install.')
+  parser.add_argument('--fuchsia-out-dir', nargs='+',
+                      help='Path to a Fuchsia build output directory. '
+                           'If more than one outdir is supplied, the last one '
+                           'in the sequence will be used.')
+  args = parser.parse_args()
+  assert args.package
+
+  if not args.fuchsia_out_dir or len(args.fuchsia_out_dir) == 0:
+    sys.stderr.write('No Fuchsia build output directory was specified.\n' +
+                     'To resolve this, Use the commandline argument ' +
+                     '--fuchsia-out-dir\nor set the GN arg ' +
+                     '"default_fuchsia_build_dir_for_installation".\n')
+    return 1
+
+  fuchsia_out_dir = args.fuchsia_out_dir.pop()
+  tuf_root = os.path.join(fuchsia_out_dir, 'amber-files')
+  print('Installing packages in Amber repo %s...' % tuf_root)
+  for package in args.package:
+    PublishPackage(package, os.path.expanduser(tuf_root))
+
+  print('Installation success.')
+
+  return 0
+
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index d6cb689..5f30743 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-8900518552241941952
\ No newline at end of file
+8900492300904953840
\ No newline at end of file
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index 1faa8072..057cb8f 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-8900523953382962080
\ No newline at end of file
+8900493005257945968
\ No newline at end of file
diff --git a/build/fuchsia/run_package.py b/build/fuchsia/run_package.py
index 6e3a5d2..2e0846d 100644
--- a/build/fuchsia/run_package.py
+++ b/build/fuchsia/run_package.py
@@ -117,7 +117,6 @@
 class RunPackageArgs:
   """RunPackage() configuration arguments structure.
 
-  install_only: If set, skips the package execution step.
   symbolizer_config: A newline delimited list of source files contained
       in the package. Omitting this parameter will disable symbolization.
   system_logging: If set, connects a system log reader to the target.
@@ -125,7 +124,6 @@
       installation. Defaults to staging into '/data'.
   """
   def __init__(self):
-    self.install_only = False
     self.symbolizer_config = None
     self.system_logging = False
     self.target_staging_path = '/data'
@@ -133,7 +131,6 @@
   @staticmethod
   def FromCommonArgs(args):
     run_package_args = RunPackageArgs()
-    run_package_args.install_only = args.install_only
     run_package_args.system_logging = args.include_system_logs
     run_package_args.target_staging_path = args.target_staging_path
     return run_package_args
@@ -151,15 +148,15 @@
       print(line.rstrip())
 
 
-def RunPackage(output_dir, target, package_path, package_name,
-               package_deps, package_args, args):
+def RunPackage(output_dir, target, package_paths, package_name,
+               package_args, args):
   """Installs the Fuchsia package at |package_path| on the target,
   executes it with |package_args|, and symbolizes its output.
 
   output_dir: The path containing the build output files.
   target: The deployment Target object that will run the package.
-  package_path: The path to the .far package file.
-  package_name: The name of app specified by package metadata.
+  package_paths: The paths to the .far packages to be installed.
+  package_name: The name of the primary package to run.
   package_args: The arguments which will be passed to the Fuchsia process.
   args: Structure of arguments to configure how the package will be run.
 
@@ -178,16 +175,12 @@
       log_output_thread.daemon = True
       log_output_thread.start()
 
-    target.InstallPackage(package_path, package_name, package_deps)
+    target.InstallPackage(package_paths)
 
     if system_logger:
       log_output_quit_event.set()
       log_output_thread.join(timeout=_JOIN_TIMEOUT_SECS)
 
-    if args.install_only:
-      logging.info('Installation complete.')
-      return
-
     logging.info('Running application.')
     command = ['run', _GetComponentUri(package_name)] + package_args
     process = target.RunCommandPiped(command,
@@ -205,7 +198,7 @@
     build_ids_paths = map(
         lambda package_path: os.path.join(
             os.path.dirname(package_path), 'ids.txt'),
-        [package_path] + package_deps)
+        package_paths)
     output_stream = SymbolizerFilter(output_stream, build_ids_paths)
 
     for next_line in output_stream:
diff --git a/build/fuchsia/target.py b/build/fuchsia/target.py
index 0d29cd1b..b2e1505 100644
--- a/build/fuchsia/target.py
+++ b/build/fuchsia/target.py
@@ -40,14 +40,6 @@
   return (package_info['name'], package_info['version'])
 
 
-def _PublishPackage(tuf_root, package_path):
-  """Publishes a combined FAR package to a TUF repository root."""
-
-  subprocess.check_call(
-      [_PM, 'publish', '-a', '-f', package_path, '-r', tuf_root, '-vt', '-v'],
-      stderr=subprocess.STDOUT)
-
-
 class _MapIsolatedPathsForPackage:
   """Callable object which remaps /data and /tmp paths to their package-specific
      locations."""
@@ -266,15 +258,12 @@
       return 'x86_64'
     raise Exception('Unknown target_cpu %s:' % self._target_cpu)
 
-  def InstallPackage(self, package_path, package_name, package_deps):
+  def InstallPackage(self, package_paths):
     """Installs a package and it's dependencies on the device. If the package is
     already installed then it will be updated to the new version.
 
-    package_path: Path to the .far file to be installed.
-    package_name: Package name.
-    package_deps: List of .far files with the packages that the main package
-                  depends on. These packages are installed or updated as well.
-    """
+    package_paths: Paths to the .far files to install."""
+
     try:
       tuf_root = tempfile.mkdtemp()
       pm_serve_task = None
@@ -289,9 +278,8 @@
            ':%d' % serve_port, '-q'])
 
       # Publish all packages to the serving TUF repository under |tuf_root|.
-      all_packages = [package_path] + package_deps
-      for next_package_path in all_packages:
-        _PublishPackage(tuf_root, next_package_path)
+      for next_package_path in package_paths:
+        common.PublishPackage(next_package_path, tuf_root)
 
       _WaitForPmServeToBeReady(serve_port)
 
@@ -299,7 +287,7 @@
       self._RegisterAmberRepository(tuf_root, remote_port)
 
       # Install all packages.
-      for next_package_path in all_packages:
+      for next_package_path in package_paths:
         install_package_name, package_version = \
             _GetPackageInfo(next_package_path)
         logging.info('Installing %s version %s.' %
diff --git a/build/fuchsia/test_runner.py b/build/fuchsia/test_runner.py
index 669de83..6efa46f 100755
--- a/build/fuchsia/test_runner.py
+++ b/build/fuchsia/test_runner.py
@@ -123,7 +123,7 @@
     run_package_args = RunPackageArgs.FromCommonArgs(args)
     returncode = RunPackage(
         args.output_directory, target, args.package, args.package_name,
-        args.package_dep, child_args, run_package_args)
+        child_args, run_package_args)
 
     if test_server:
       test_server.Stop()
diff --git a/chrome/VERSION b/chrome/VERSION
index 311b0f3..1ae5797 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=79
 MINOR=0
-BUILD=3933
+BUILD=3934
 PATCH=0
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index c466072d8..1030494 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -738,9 +738,6 @@
     "//testing/buildbot/filters:chrome_junit_tests_filters",
   ]
 
-  srcjar_deps =
-      [ "//components/module_installer/android:module_installer_build_config" ]
-
   package_name = chrome_public_manifest_package
 }
 
@@ -1531,6 +1528,7 @@
 ]
 
 generate_jni("test_support_jni_headers") {
+  testonly = true
   sources = [
     "javatests/src/org/chromium/chrome/browser/ServicificationBackgroundService.java",
     "javatests/src/org/chromium/chrome/browser/offlinepages/OfflineTestUtil.java",
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni
index 17797eb..1023e174 100644
--- a/chrome/android/chrome_public_apk_tmpl.gni
+++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -232,24 +232,18 @@
       }
     }
 
-    # Only bundles can install modules. Therefore, include stub implementation
-    # for all other targets to save some binary size.
-    if (_target_type == "android_app_bundle_module") {
-      srcjar_deps = [ "//components/module_installer/android:module_installer_bundle_build_config" ]
-    } else {  # |_target_type| is "android_apk" or "instrumentation_test_apk".
-      if (dfmify_dev_ui) {
-        # Native resource split moves resources out of resources.pak, but this
-        # is a DFM feature, which APKs don't use. To make the resources split
-        # available for APKs, add dependencies to (1) Java classes, (2)
-        # resources of the resource split's DFM (e.g., DevUI DFM). The Java
-        # classes tells Chrome that the DFM is installed, which then causes the
-        # included resources to be loaded when needed.
-        deps += [
-          "//chrome/android/features/dev_ui:java",  # (1) from above.
-          "//chrome/android/features/dev_ui:pak_assets",  # (2) from above.
-        ]
-      }
-      srcjar_deps = [ "//components/module_installer/android:module_installer_apk_build_config" ]
+    if (dfmify_dev_ui && (_target_type == "android_apk" ||
+                          _target_type == "instrumentation_test_apk")) {
+      # Native resource split moves resources out of resources.pak, but this
+      # is a DFM feature, which APKs don't use. To make the resources split
+      # available for APKs, add dependencies to (1) Java classes, (2)
+      # resources of the resource split's DFM (e.g., DevUI DFM). The Java
+      # classes tells Chrome that the DFM is installed, which then causes the
+      # included resources to be loaded when needed.
+      deps += [
+        "//chrome/android/features/dev_ui:java",  # (1) from above.
+        "//chrome/android/features/dev_ui:pak_assets",  # (2) from above.
+      ]
     }
 
     if (!is_java_debug) {
diff --git a/chrome/android/features/autofill_assistant/BUILD.gn b/chrome/android/features/autofill_assistant/BUILD.gn
index 49c8c00..8e62f8e 100644
--- a/chrome/android/features/autofill_assistant/BUILD.gn
+++ b/chrome/android/features/autofill_assistant/BUILD.gn
@@ -164,6 +164,7 @@
 }
 
 generate_jni("test_support_jni_headers") {
+  testonly = true
   sources = [
     "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantTestService.java",
   ]
diff --git a/chrome/android/features/keyboard_accessory/BUILD.gn b/chrome/android/features/keyboard_accessory/BUILD.gn
index bad4404..8170c50 100644
--- a/chrome/android/features/keyboard_accessory/BUILD.gn
+++ b/chrome/android/features/keyboard_accessory/BUILD.gn
@@ -102,7 +102,4 @@
     "//third_party/junit",
     "//third_party/mockito:mockito_java",
   ]
-
-  srcjar_deps =
-      [ "//components/module_installer/android:module_installer_build_config" ]
 }
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
index 74db206..1eb2e558 100644
--- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
+++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.features.start_surface;
 
 import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_FAKE_SEARCH_BOX_VISIBLE;
+import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_INCOGNITO;
 import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MORE_TABS_CLICK_LISTENER;
 import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE;
 import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.BOTTOM_BAR_CLICKLISTENER;
@@ -123,6 +124,7 @@
                     updateIncognitoMode(newModel.isIncognito());
                 }
             });
+            mPropertyModel.set(IS_INCOGNITO, mIsIncognito);
 
             mPropertyModel.set(
                     BOTTOM_BAR_CLICKLISTENER, new StartSurfaceProperties.BottomBarClickListener() {
@@ -193,6 +195,7 @@
 
     void setSecondaryTasksSurfacePropertyModel(PropertyModel propertyModel) {
         mSecondaryTasksSurfacePropertyModel = propertyModel;
+        mSecondaryTasksSurfacePropertyModel.set(IS_INCOGNITO, mIsIncognito);
 
         // Secondary tasks surface is used for more Tabs or incognito mode single pane, where MV
         // tiles should be invisible.
@@ -395,6 +398,11 @@
             if (mIsIncognito) setExploreSurfaceVisibility(false);
         }
 
+        mPropertyModel.set(IS_INCOGNITO, mIsIncognito);
+        if (mSecondaryTasksSurfacePropertyModel != null) {
+            mSecondaryTasksSurfacePropertyModel.set(IS_INCOGNITO, mIsIncognito);
+        }
+
         notifyStateChange();
     }
 
diff --git a/chrome/android/features/tab_ui/java/res/drawable-v21/fake_search_box_bg_incognito.xml b/chrome/android/features/tab_ui/java/res/drawable-v21/fake_search_box_bg_incognito.xml
new file mode 100644
index 0000000..895fb81
--- /dev/null
+++ b/chrome/android/features/tab_ui/java/res/drawable-v21/fake_search_box_bg_incognito.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright 2019 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.
+-->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="@color/toolbar_text_box_background_incognito" >
+
+    <item
+        android:drawable="@drawable/fake_search_box_text_box_bg_incognito"/>
+
+</ripple>
diff --git a/chrome/android/features/tab_ui/java/res/drawable/fake_search_box_text_box_bg_incognito.xml b/chrome/android/features/tab_ui/java/res/drawable/fake_search_box_text_box_bg_incognito.xml
new file mode 100644
index 0000000..737f4ee
--- /dev/null
+++ b/chrome/android/features/tab_ui/java/res/drawable/fake_search_box_text_box_bg_incognito.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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. -->
+
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle" >
+    <solid android:color="@color/toolbar_text_box_background_incognito" />
+    <size
+        android:width="@dimen/modern_toolbar_background_size"
+        android:height="@dimen/modern_toolbar_background_size" />
+    <corners android:radius="@dimen/modern_toolbar_background_corner_radius" />
+</shape>
diff --git a/chrome/android/features/tab_ui/java/res/values/drawables.xml b/chrome/android/features/tab_ui/java/res/values/drawables.xml
new file mode 100644
index 0000000..5edf473
--- /dev/null
+++ b/chrome/android/features/tab_ui/java/res/values/drawables.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2019 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. -->
+
+<resources>
+    <drawable name="fake_search_box_bg_incognito">@drawable/fake_search_box_text_box_bg_incognito</drawable>
+</resources>
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceMediator.java
index e0c2a9f..d52ebc6d4 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceMediator.java
@@ -43,6 +43,6 @@
 
         // TODO(crbug.com/982018): Enable voice recognition button in the fake search box.
         // TODO(crbug.com/982018): Enable long press and paste search in the fake search box.
-        // TODO(crbug.com/982018): Change the fake search box in incognito and dark mode.
+        // TODO(crbug.com/982018): Change the fake search box in dark mode.
     }
 }
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceProperties.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceProperties.java
index 826ff36..6cc4c9e 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceProperties.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceProperties.java
@@ -17,6 +17,8 @@
 
     public static final PropertyModel.WritableBooleanPropertyKey IS_FAKE_SEARCH_BOX_VISIBLE =
             new PropertyModel.WritableBooleanPropertyKey();
+    public static final PropertyModel.WritableBooleanPropertyKey IS_INCOGNITO =
+            new PropertyModel.WritableBooleanPropertyKey();
     public static final PropertyModel.WritableBooleanPropertyKey IS_TAB_CAROUSEL =
             new PropertyModel.WritableBooleanPropertyKey();
     public static final PropertyModel
@@ -30,6 +32,6 @@
             new PropertyModel.WritableObjectPropertyKey<View.OnClickListener>();
     public static final PropertyModel.WritableBooleanPropertyKey MV_TILES_VISIBLE = IS_VISIBLE;
     public static final PropertyKey[] ALL_KEYS = new PropertyKey[] {IS_FAKE_SEARCH_BOX_VISIBLE,
-            IS_TAB_CAROUSEL, IS_VOICE_RECOGNITION_BUTTON_VISIBLE, FAKE_SEARCH_BOX_CLICK_LISTENER,
-            MORE_TABS_CLICK_LISTENER, MV_TILES_VISIBLE};
+            IS_INCOGNITO, IS_TAB_CAROUSEL, IS_VOICE_RECOGNITION_BUTTON_VISIBLE,
+            FAKE_SEARCH_BOX_CLICK_LISTENER, MORE_TABS_CLICK_LISTENER, MV_TILES_VISIBLE};
 }
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksView.java
index f1809a9..24a083d 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksView.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksView.java
@@ -5,21 +5,27 @@
 package org.chromium.chrome.browser.tasks;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.support.v4.view.MarginLayoutParamsCompat;
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 import android.widget.LinearLayout;
+import android.widget.TextView;
 
 import androidx.annotation.Nullable;
 
+import org.chromium.base.ApiCompatibilityUtils;
+import org.chromium.chrome.browser.util.ColorUtils;
 import org.chromium.chrome.tab_ui.R;
 
 // The view of the tasks surface.
 class TasksView extends LinearLayout {
     private final Context mContext;
     private FrameLayout mTabSwitcherContainer;
+    private View mSearchBox;
+    private TextView mSearchBoxText;
 
     /** Default constructor needed to inflate via XML. */
     public TasksView(Context context, AttributeSet attrs) {
@@ -32,6 +38,8 @@
         super.onFinishInflate();
 
         mTabSwitcherContainer = (FrameLayout) findViewById(R.id.tab_switcher_container);
+        mSearchBox = findViewById(R.id.search_box);
+        mSearchBoxText = (TextView) mSearchBox.findViewById(R.id.search_box_text);
     }
 
     ViewGroup getTabSwitcherContainer() {
@@ -64,7 +72,7 @@
      * @param listener The given listener.
      */
     void setFakeSearchBoxClickListener(@Nullable View.OnClickListener listener) {
-        findViewById(R.id.search_box_text).setOnClickListener(listener);
+        mSearchBoxText.setOnClickListener(listener);
     }
 
     /**
@@ -72,7 +80,7 @@
      * @param isVisible Whether it's visible.
      */
     void setFakeSearchBoxVisibility(boolean isVisible) {
-        findViewById(R.id.search_box).setVisibility(isVisible ? View.VISIBLE : View.GONE);
+        mSearchBox.setVisibility(isVisible ? View.VISIBLE : View.GONE);
     }
 
     /**
@@ -96,4 +104,19 @@
     void setMoreTabsOnClickListener(@Nullable View.OnClickListener listener) {
         findViewById(R.id.more_tabs).setOnClickListener(listener);
     }
-}
\ No newline at end of file
+
+    /**
+     * Set the incognito state.
+     * @param isIncognito Whether it's in incognito mode.
+     */
+    void setIncognitoMode(boolean isIncognito) {
+        Resources resources = mContext.getResources();
+        setBackgroundColor(ColorUtils.getPrimaryBackgroundColor(resources, isIncognito));
+        mSearchBox.setBackgroundResource(
+                isIncognito ? R.drawable.fake_search_box_bg_incognito : R.drawable.ntp_search_box);
+        int hintTextColor = isIncognito
+                ? ApiCompatibilityUtils.getColor(resources, R.color.locationbar_light_hint_text)
+                : ApiCompatibilityUtils.getColor(resources, R.color.locationbar_dark_hint_text);
+        mSearchBoxText.setHintTextColor(hintTextColor);
+    }
+}
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksViewBinder.java
index fb2b2d5e..8c2becd 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksViewBinder.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksViewBinder.java
@@ -6,6 +6,7 @@
 
 import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEARCH_BOX_CLICK_LISTENER;
 import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_FAKE_SEARCH_BOX_VISIBLE;
+import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_INCOGNITO;
 import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL;
 import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
 import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MORE_TABS_CLICK_LISTENER;
@@ -23,6 +24,8 @@
             view.setFakeSearchBoxClickListener(model.get(FAKE_SEARCH_BOX_CLICK_LISTENER));
         } else if (propertyKey == IS_FAKE_SEARCH_BOX_VISIBLE) {
             view.setFakeSearchBoxVisibility(model.get(IS_FAKE_SEARCH_BOX_VISIBLE));
+        } else if (propertyKey == IS_INCOGNITO) {
+            view.setIncognitoMode(model.get(IS_INCOGNITO));
         } else if (propertyKey == IS_TAB_CAROUSEL) {
             view.setIsTabCarousel(model.get(IS_TAB_CAROUSEL));
         } else if (propertyKey == IS_VOICE_RECOGNITION_BUTTON_VISIBLE) {
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedConfiguration.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedConfiguration.java
index f78447f..058b01e 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedConfiguration.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedConfiguration.java
@@ -37,6 +37,10 @@
     /** Default value for whether to consumer synthetic tokens on restore. */
     public static final boolean CONSUME_SYNTHETIC_TOKENS_WHILE_RESTORING_DEFAULT = false;
 
+    private static final String DEFAULT_ACTION_TTL_SECONDS = "default_action_ttl_seconds";
+    /** Default value for the TTL of default action (3 days). */
+    public static final long DEFAULT_ACTION_TTL_SECONDS_DEFAULT = 259200;
+
     private static final String FEED_ACTION_SERVER_ENDPOINT = "feed_action_server_endpoint";
     /** Default value for the endpoint used for recording uploaded actions to the server. */
     public static final String FEED_ACTION_SERVER_ENDPOINT_DEFAULT =
@@ -185,6 +189,14 @@
                 CONSUME_SYNTHETIC_TOKENS_WHILE_RESTORING_DEFAULT);
     }
 
+    /** @return The TTL (in seconds) for the default action. */
+    @VisibleForTesting
+    static long getDefaultActionTtlSeconds() {
+        return ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
+                ChromeFeatureList.INTEREST_FEED_CONTENT_SUGGESTIONS, DEFAULT_ACTION_TTL_SECONDS,
+                (int) DEFAULT_ACTION_TTL_SECONDS_DEFAULT);
+    }
+
     /** @return The endpoint used for recording uploaded actions to the server. */
     @VisibleForTesting
     static String getFeedActionServerEndpoint() {
@@ -418,6 +430,8 @@
                         FeedConfiguration.getConsumeSyntheticTokens())
                 .put(ConfigKey.CONSUME_SYNTHETIC_TOKENS_WHILE_RESTORING,
                         FeedConfiguration.getConsumeSyntheticTokensWhileRestoring())
+                .put(ConfigKey.DEFAULT_ACTION_TTL_SECONDS,
+                        FeedConfiguration.getDefaultActionTtlSeconds())
                 .put(ConfigKey.FEED_ACTION_SERVER_ENDPOINT,
                         FeedConfiguration.getFeedActionServerEndpoint())
                 .put(ConfigKey.FEED_ACTION_SERVER_MAX_ACTIONS_PER_REQUEST,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
index daca55a..d81b4075 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -2016,6 +2016,10 @@
 
         TextBubble.dismissBubbles();
         if (VrModuleProvider.getDelegate().onBackPressed()) return;
+
+        ArDelegate arDelegate = ArDelegateProvider.getDelegate();
+        if (arDelegate != null && arDelegate.onBackPressed()) return;
+
         if (mCompositorViewHolder != null) {
             LayoutManager layoutManager = mCompositorViewHolder.getLayoutManager();
             if (layoutManager != null && layoutManager.onBackPressed()) return;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/banners/AppBannerUiDelegateAndroid.java b/chrome/android/java/src/org/chromium/chrome/browser/banners/AppBannerUiDelegateAndroid.java
index 1c27991..ba4518c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/banners/AppBannerUiDelegateAndroid.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/banners/AppBannerUiDelegateAndroid.java
@@ -16,6 +16,7 @@
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.annotations.NativeMethods;
+import org.chromium.chrome.browser.ShortcutHelper;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.webapps.addtohomescreen.AddToHomescreenDialogView;
 import org.chromium.chrome.browser.webapps.addtohomescreen.AddToHomescreenProperties;
@@ -137,13 +138,22 @@
     }
 
     @CalledByNative
-    private boolean showWebAppDialog(String title, Bitmap iconBitmap, String url) {
+    private boolean showWebAppDialog(
+            String title, Bitmap iconBitmap, String url, boolean maskable) {
         mViewModel = createViewModel();
         mViewModel.set(AddToHomescreenProperties.TITLE, title);
-        mViewModel.set(AddToHomescreenProperties.ICON, new Pair<>(iconBitmap, false));
         mViewModel.set(AddToHomescreenProperties.TYPE, AddToHomescreenProperties.AppType.WEB_APK);
         mViewModel.set(AddToHomescreenProperties.CAN_SUBMIT, true);
         mViewModel.set(AddToHomescreenProperties.URL, url);
+
+        // Because web standards specify the circular mask's radius to be 40% of icon dimension,
+        // while Android specifies it to be around 30%, we can't simply let Android mask it. We'll
+        // need to mask the bitmap ourselves and pass it as a non-maskable icon.
+        boolean shouldMaskIcon = maskable && ShortcutHelper.doesAndroidSupportMaskableIcons();
+        if (shouldMaskIcon) {
+            iconBitmap = ShortcutHelper.createHomeScreenIconFromWebIcon(iconBitmap, shouldMaskIcon);
+        }
+        mViewModel.set(AddToHomescreenProperties.ICON, new Pair<>(iconBitmap, shouldMaskIcon));
         return true;
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
index 481391a..3fe71bf 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
@@ -344,6 +344,16 @@
         // We do know that if we do get one, then it will be for the surface that we just requested.
     }
 
+    /**
+     * Enables/disables immersive AR overlay mode, a variant of overlay video mode.
+     * @param enabled Whether to enter or leave overlay immersive ar mode.
+     */
+    public void setOverlayImmersiveArMode(boolean enabled) {
+        setOverlayVideoMode(enabled);
+        CompositorViewJni.get().setOverlayImmersiveArMode(
+                mNativeCompositorView, CompositorView.this, enabled);
+    }
+
     private int getSurfacePixelFormat() {
         if (mOverlayVideoEnabled || mAlwaysTranslucent) {
             return PixelFormat.TRANSLUCENT;
@@ -620,6 +630,8 @@
         void setNeedsComposite(long nativeCompositorView, CompositorView caller);
         void setLayoutBounds(long nativeCompositorView, CompositorView caller);
         void setOverlayVideoMode(long nativeCompositorView, CompositorView caller, boolean enabled);
+        void setOverlayImmersiveArMode(
+                long nativeCompositorView, CompositorView caller, boolean enabled);
         void setSceneLayer(long nativeCompositorView, CompositorView caller, SceneLayer sceneLayer);
         void setCompositorWindow(
                 long nativeCompositorView, CompositorView caller, WindowAndroid window);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java
index 1b1cced..b725dec 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java
@@ -13,6 +13,7 @@
 import org.chromium.chrome.browser.download.home.DownloadManagerCoordinator;
 import org.chromium.chrome.browser.download.home.DownloadManagerCoordinatorFactory;
 import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig;
+import org.chromium.chrome.browser.download.home.filter.Filters;
 import org.chromium.chrome.browser.download.items.OfflineContentAggregatorNotificationBridgeUiFactory;
 import org.chromium.chrome.browser.modaldialog.AppModalPresenter;
 import org.chromium.chrome.browser.util.IntentUtils;
@@ -74,8 +75,8 @@
         mCurrentUrl = savedInstanceState == null
                 ? UrlConstants.DOWNLOADS_URL
                 : savedInstanceState.getString(BUNDLE_KEY_CURRENT_URL);
+        if (showPrefetchContent) mCurrentUrl = Filters.toUrl(Filters.FilterType.PREFETCHED);
         mDownloadCoordinator.updateForUrl(mCurrentUrl);
-        if (showPrefetchContent) mDownloadCoordinator.showPrefetchSection();
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinator.java
index c2b57d5..3f3f6ad 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinator.java
@@ -37,12 +37,6 @@
     /** To be called to push the url containing internal state to the coordinator. */
     void updateForUrl(String url);
 
-    /**
-     * To be called to automatically show the prefetched content section of the download manager.
-     * TODO(dtrainor): This should be deprecated in place of {@link #updateForUrl(String)}.
-     */
-    void showPrefetchSection();
-
     /** Adds {@code observer} to be notified of url state changes. */
     void addObserver(Observer observer);
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinatorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinatorImpl.java
index 9a0ca517..e4d3e896 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinatorImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinatorImpl.java
@@ -141,11 +141,6 @@
     }
 
     @Override
-    public void showPrefetchSection() {
-        updateForUrl(Filters.toUrl(Filters.FilterType.PREFETCHED));
-    }
-
-    @Override
     public void addObserver(Observer observer) {
         mObservers.addObserver(observer);
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstallableAmbientBadgeInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstallableAmbientBadgeInfoBar.java
index 43f833a..47f02f6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstallableAmbientBadgeInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstallableAmbientBadgeInfoBar.java
@@ -6,18 +6,25 @@
 
 import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO;
 
+import android.annotation.TargetApi;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.drawable.AdaptiveIconDrawable;
+import android.graphics.drawable.Icon;
+import android.os.Build;
 import android.view.Gravity;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
 import org.chromium.base.ApiCompatibilityUtils;
+import org.chromium.base.ContextUtils;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ResourceId;
+import org.chromium.chrome.browser.ShortcutHelper;
 import org.chromium.chrome.browser.ui.widget.text.AccessibleTextView;
 
 /**
@@ -29,10 +36,33 @@
     private boolean mIsHiding;
 
     @CalledByNative
-    private static InfoBar show(
-            int enumeratedIconId, Bitmap iconBitmap, String messageText, String url) {
+    private static InfoBar show(int enumeratedIconId, Bitmap iconBitmap, String messageText,
+            String url, boolean isIconAdaptive) {
         int drawableId = ResourceId.mapToDrawableId(enumeratedIconId);
-        return new InstallableAmbientBadgeInfoBar(drawableId, iconBitmap, messageText, url);
+
+        Bitmap iconBitmapToUse = iconBitmap;
+        if (isIconAdaptive && ShortcutHelper.doesAndroidSupportMaskableIcons()) {
+            iconBitmapToUse = fetchAdaptiveIconBitmap(iconBitmap);
+        }
+
+        return new InstallableAmbientBadgeInfoBar(drawableId, iconBitmapToUse, messageText, url);
+    }
+
+    @TargetApi(Build.VERSION_CODES.O)
+    private static Bitmap fetchAdaptiveIconBitmap(Bitmap bitmap) {
+        Bitmap padded = ShortcutHelper.createHomeScreenIconFromWebIcon(bitmap, true);
+        Icon adaptiveIcon = Icon.createWithAdaptiveBitmap(padded);
+        AdaptiveIconDrawable adaptiveIconDrawable =
+                (AdaptiveIconDrawable) adaptiveIcon.loadDrawable(
+                        ContextUtils.getApplicationContext());
+
+        Bitmap result = Bitmap.createBitmap(adaptiveIconDrawable.getIntrinsicWidth(),
+                adaptiveIconDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
+        Canvas canvas = new Canvas(result);
+        adaptiveIconDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+        adaptiveIconDrawable.draw(canvas);
+
+        return result;
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
index 8b49fee..e7f9b5d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
@@ -1116,7 +1116,7 @@
 
     private void forceOnTextChanged() {
         String textWithoutAutocomplete = mUrlCoordinator.getTextWithoutAutocomplete();
-        String textWithAutocomplete = mUrlCoordinator.getTextWithoutAutocomplete();
+        String textWithAutocomplete = mUrlCoordinator.getTextWithAutocomplete();
         mAutocompleteCoordinator.onTextChanged(textWithoutAutocomplete, textWithAutocomplete);
         mStatusViewCoordinator.onTextChanged(textWithoutAutocomplete, textWithAutocomplete);
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreJavaUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreJavaUtils.java
index 512cc6f..90b0c25 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreJavaUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreJavaUtils.java
@@ -20,6 +20,9 @@
 
 /**
  * Provides ARCore classes access to java-related app functionality.
+ *
+ * <p>This class provides static methods called by ArDelegateImpl via ArDelegateProvider,
+ * and provides JNI interfaces to/from the C++ AR code.</p>
  */
 @JNINamespace("vr")
 public class ArCoreJavaUtils {
@@ -28,8 +31,19 @@
 
     private long mNativeArCoreJavaUtils;
 
+    // The native ArCoreDevice runtime creates a ArCoreJavaUtils instance in its constructor,
+    // and keeps a strong reference to it for the lifetime of the device. It creates and
+    // owns an ArImmersiveOverlay for the duration of an immersive-ar session, which in
+    // turn contains a reference to ArCoreJavaUtils for making JNI calls back to the device.
     private ArImmersiveOverlay mArImmersiveOverlay;
 
+    // ArDelegateImpl needs to know if there's an active immersive session so that it can handle
+    // back button presses from ChromeActivity's onBackPressed(). It's only set while a session is
+    // in progress, and reset to null on session end. The ArImmersiveOverlay member has a strong
+    // reference to the ChromeActivity, and that shouldn't be retained beyond the duration of a
+    // session.
+    private static ArCoreJavaUtils sActiveSessionInstance;
+
     @CalledByNative
     private static ArCoreJavaUtils create(long nativeArCoreJavaUtils) {
         ThreadUtils.assertOnUiThread();
@@ -60,18 +74,33 @@
     }
 
     @CalledByNative
-    private void startSession(final Tab tab) {
+    private void startSession(final Tab tab, boolean useOverlay) {
         if (DEBUG_LOGS) Log.i(TAG, "startSession");
         mArImmersiveOverlay = new ArImmersiveOverlay();
-        mArImmersiveOverlay.show(tab.getActivity(), this);
+        sActiveSessionInstance = this;
+        mArImmersiveOverlay.show(tab.getActivity(), this, useOverlay);
     }
 
     @CalledByNative
     private void endSession() {
         if (DEBUG_LOGS) Log.i(TAG, "endSession");
-        if (mArImmersiveOverlay != null) {
-            mArImmersiveOverlay.cleanupAndExit();
+        if (mArImmersiveOverlay == null) return;
+
+        mArImmersiveOverlay.cleanupAndExit();
+        mArImmersiveOverlay = null;
+        sActiveSessionInstance = null;
+    }
+
+    // Called from ArDelegateImpl
+    public static boolean onBackPressed() {
+        if (DEBUG_LOGS) Log.i(TAG, "onBackPressed");
+        // If there's an active immersive session, consume the "back" press and shut down the
+        // session.
+        if (sActiveSessionInstance != null) {
+            sActiveSessionInstance.endSession();
+            return true;
         }
+        return false;
     }
 
     public void onDrawingSurfaceReady(Surface surface, int rotation, int width, int height) {
@@ -91,13 +120,16 @@
     public void onDrawingSurfaceDestroyed() {
         if (DEBUG_LOGS) Log.i(TAG, "onDrawingSurfaceDestroyed");
         if (mNativeArCoreJavaUtils == 0) return;
-        mArImmersiveOverlay = null;
         ArCoreJavaUtilsJni.get().onDrawingSurfaceDestroyed(
                 mNativeArCoreJavaUtils, ArCoreJavaUtils.this);
     }
 
     @CalledByNative
     private void onNativeDestroy() {
+        // ArCoreDevice's destructor ends sessions before destroying its native ArCoreSessionUtils
+        // object.
+        assert sActiveSessionInstance == null : "unexpected active session in onNativeDestroy";
+
         mNativeArCoreJavaUtils = 0;
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArDelegate.java
index 6e7015e..2b30786 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArDelegate.java
@@ -21,4 +21,9 @@
      * to notify AR that the activity was resumed.
      **/
     public void registerOnResumeActivity(Activity activity);
+
+    /**
+     * Used to let AR immersive mode intercept the Back button to exit immersive mode.
+     */
+    public boolean onBackPressed();
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArDelegateImpl.java
index 500cb1c..b3bc916 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArDelegateImpl.java
@@ -26,4 +26,9 @@
     public void registerOnResumeActivity(Activity activity) {
         ArCoreInstallUtils.onResumeActivityWithNative(activity);
     }
+
+    @Override
+    public boolean onBackPressed() {
+        return ArCoreJavaUtils.onBackPressed();
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArImmersiveOverlay.java b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArImmersiveOverlay.java
index 0b8f550..c3eda20 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArImmersiveOverlay.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArImmersiveOverlay.java
@@ -8,9 +8,13 @@
 import android.app.Dialog;
 import android.content.DialogInterface;
 import android.content.pm.ActivityInfo;
+import android.graphics.PixelFormat;
+import android.graphics.Point;
+import android.view.Display;
 import android.view.Gravity;
 import android.view.MotionEvent;
 import android.view.SurfaceHolder;
+import android.view.SurfaceView;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -19,6 +23,9 @@
 import org.chromium.base.Log;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
+import org.chromium.chrome.browser.compositor.CompositorView;
+import org.chromium.chrome.browser.tab.EmptyTabObserver;
+import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.content_public.browser.ScreenOrientationDelegate;
 import org.chromium.content_public.browser.ScreenOrientationProvider;
 import org.chromium.ui.widget.Toast;
@@ -38,14 +45,19 @@
     private boolean mCleanupInProgress;
     private SurfaceUiWrapper mSurfaceUi;
 
-    public void show(@NonNull ChromeActivity activity, @NonNull ArCoreJavaUtils caller) {
+    public void show(
+            @NonNull ChromeActivity activity, @NonNull ArCoreJavaUtils caller, boolean useOverlay) {
         if (DEBUG_LOGS) Log.i(TAG, "constructor");
         mArCoreJavaUtils = caller;
         mActivity = activity;
 
         // Choose a concrete implementation to create a drawable Surface and make it fullscreen.
         // It forwards SurfaceHolder callbacks and touch events to this ArImmersiveOverlay object.
-        mSurfaceUi = new SurfaceUiDialog(this);
+        if (useOverlay) {
+            mSurfaceUi = new SurfaceUiCompositor();
+        } else {
+            mSurfaceUi = new SurfaceUiDialog();
+        }
     }
 
     private interface SurfaceUiWrapper {
@@ -64,14 +76,14 @@
                 | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                 | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
 
-        public SurfaceUiDialog(ArImmersiveOverlay parent) {
+        public SurfaceUiDialog() {
             // Create a fullscreen dialog and use its backing Surface for drawing.
             mDialog = new Dialog(mActivity, android.R.style.Theme_NoTitleBar_Fullscreen);
             mDialog.getWindow().setBackgroundDrawable(null);
-            mDialog.getWindow().takeSurface(parent);
+            mDialog.getWindow().takeSurface(ArImmersiveOverlay.this);
             View view = mDialog.getWindow().getDecorView();
             view.setSystemUiVisibility(VISIBILITY_FLAGS_IMMERSIVE);
-            view.setOnTouchListener(parent);
+            view.setOnTouchListener(ArImmersiveOverlay.this);
             mDialog.setOnCancelListener(this);
             mDialog.getWindow().setLayout(
                     ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
@@ -103,6 +115,52 @@
         }
     }
 
+    private class SurfaceUiCompositor extends EmptyTabObserver implements SurfaceUiWrapper {
+        private SurfaceView mSurfaceView;
+        private CompositorView mCompositorView;
+
+        public SurfaceUiCompositor() {
+            mSurfaceView = new SurfaceView(mActivity);
+            // Keep the camera layer at "default" Z order. Chrome's compositor SurfaceView is in
+            // OverlayVideoMode, putting it in front of that, but behind other non-SurfaceView UI.
+            mSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
+            mSurfaceView.getHolder().addCallback(ArImmersiveOverlay.this);
+
+            View content = mActivity.getWindow().findViewById(android.R.id.content);
+            ViewGroup group = (ViewGroup) content.getParent();
+            group.addView(mSurfaceView);
+
+            mCompositorView = mActivity.getCompositorViewHolder().getCompositorView();
+
+            // Enable alpha channel for the compositor and make the background
+            // transparent. (A variant of CompositorView::SetOverlayVideoMode.)
+            if (DEBUG_LOGS) Log.i(TAG, "calling mCompositorView.setOverlayImmersiveArMode(true)");
+            mCompositorView.setOverlayImmersiveArMode(true);
+
+            // Watch for fullscreen exit triggered from JS, this needs to end the session.
+            mActivity.getActivityTab().addObserver(this);
+        }
+
+        @Override // SurfaceUiWrapper
+        public void onSurfaceVisible() {}
+
+        @Override // SurfaceUiWrapper
+        public void destroy() {
+            mActivity.getActivityTab().removeObserver(this);
+            View content = mActivity.getWindow().findViewById(android.R.id.content);
+            ViewGroup group = (ViewGroup) content.getParent();
+            group.removeView(mSurfaceView);
+            mSurfaceView = null;
+            mCompositorView.setOverlayImmersiveArMode(false);
+        }
+
+        @Override // TabObserver
+        public void onExitFullscreenMode(Tab tab) {
+            if (DEBUG_LOGS) Log.i(TAG, "onExitFullscreenMode");
+            cleanupAndExit();
+        }
+    }
+
     @Override // View.OnTouchListener
     public boolean onTouch(View v, MotionEvent ev) {
         // Only forward primary actions, ignore more complex events such as secondary pointer
@@ -143,32 +201,70 @@
 
     @Override // SurfaceHolder.Callback2
     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
-        // WebXR immersive sessions don't support resize, so use the first reported size.
-        // We shouldn't get resize events since we're using FLAG_LAYOUT_STABLE and are
-        // locking screen orientation.
+        // The surface may not immediately start out at the expected fullscreen size due to
+        // animations or not-yet-hidden navigation bars. WebXR immersive sessions use a fixed-size
+        // frame transport that can't be resized, so we need to pick a single size and stick with it
+        // for the duration of the session. Use the expected fullscreen size for WebXR frame
+        // transport even if the currently-visible part in the surface view is smaller than this. We
+        // shouldn't get resize events since we're using FLAG_LAYOUT_STABLE and are locking screen
+        // orientation.
         if (mSurfaceReportedReady) {
             int rotation = mActivity.getWindowManager().getDefaultDisplay().getRotation();
-            if (DEBUG_LOGS)
+            if (DEBUG_LOGS) {
                 Log.i(TAG,
                         "surfaceChanged ignoring change to width=" + width + " height=" + height
                                 + " rotation=" + rotation);
+            }
             return;
         }
 
-        // Save current orientation mode, and then lock current orientation.
+        // Need to ensure orientation is locked at this point to avoid race conditions. Save current
+        // orientation mode, and then lock current orientation. It's unclear if there's still a risk
+        // of races, for example if an orientation change was already in progress at this point but
+        // wasn't fully processed yet. In that case the user may need to exit and re-enter the
+        // session to get the intended layout.
         ScreenOrientationProvider.getInstance().setOrientationDelegate(this);
         if (mRestoreOrientation == null) {
             mRestoreOrientation = mActivity.getRequestedOrientation();
         }
         mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
 
+        // Display.getRealSize "gets the real size of the display without subtracting any window
+        // decor or applying any compatibility scale factors", and "the size is adjusted based on
+        // the current rotation of the display". This is what we want since the surface and WebXR
+        // frame sizes also use the same current rotation which is now locked, so there's no need to
+        // separately adjust for portrait vs landscape modes.
+        //
+        // While it would be preferable to wait until the surface is at the desired fullscreen
+        // resolution, i.e. via mActivity.getFullscreenManager().getPersistentFullscreenMode(), that
+        // causes a chicken-and-egg problem for SurfaceUiCompositor mode as used for DOM overlay.
+        // Chrome's fullscreen mode is triggered by the Blink side setting an element fullscreen
+        // after the session starts, but the session doesn't start until we report the drawing
+        // surface being ready (including a configured size), so we use this reported size assuming
+        // that's what the fullscreen mode will use.
+        Display display = mActivity.getWindowManager().getDefaultDisplay();
+        Point size = new Point();
+        display.getRealSize(size);
+
+        if (width < size.x || height < size.y) {
+            if (DEBUG_LOGS) {
+                Log.i(TAG,
+                        "surfaceChanged adjusting size from " + width + "x" + height + " to "
+                                + size.x + "x" + size.y);
+            }
+            width = size.x;
+            height = size.y;
+        }
+
         int rotation = mActivity.getWindowManager().getDefaultDisplay().getRotation();
-        if (DEBUG_LOGS)
+        if (DEBUG_LOGS) {
             Log.i(TAG, "surfaceChanged size=" + width + "x" + height + " rotation=" + rotation);
+        }
         mArCoreJavaUtils.onDrawingSurfaceReady(holder.getSurface(), rotation, width, height);
         mSurfaceReportedReady = true;
 
-        // Show a toast with instructions how to exit fullscreen mode now if necessary.
+        // Show the toast with instructions how to exit fullscreen mode now if necessary.
+        // Not needed in DOM overlay mode which uses FullscreenHtmlApiHandler to do so.
         mSurfaceUi.onSurfaceVisible();
     }
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/feed/FeedConfigurationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/feed/FeedConfigurationTest.java
index 2f504c1..dddde2a5 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/feed/FeedConfigurationTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/feed/FeedConfigurationTest.java
@@ -42,6 +42,8 @@
                 FeedConfiguration.getConsumeSyntheticTokens());
         Assert.assertEquals(FeedConfiguration.CONSUME_SYNTHETIC_TOKENS_WHILE_RESTORING_DEFAULT,
                 FeedConfiguration.getConsumeSyntheticTokensWhileRestoring());
+        Assert.assertEquals(FeedConfiguration.DEFAULT_ACTION_TTL_SECONDS_DEFAULT,
+                FeedConfiguration.getDefaultActionTtlSeconds());
         Assert.assertEquals(FeedConfiguration.FEED_ACTION_SERVER_ENDPOINT_DEFAULT,
                 FeedConfiguration.getFeedActionServerEndpoint());
         Assert.assertEquals(FeedConfiguration.FEED_ACTION_SERVER_MAX_ACTIONS_PER_REQUEST_DEFAULT,
@@ -139,6 +141,16 @@
     @Feature({"Feed"})
     @CommandLineFlags.
     Add({"enable-features=InterestFeedContentSuggestions<Trial", "force-fieldtrials=Trial/Group",
+            "force-fieldtrial-params=Trial.Group:default_action_ttl_seconds/42"})
+    public void
+    testDefaultActionTTLSeconds() {
+        Assert.assertEquals(42, FeedConfiguration.getDefaultActionTtlSeconds());
+    }
+
+    @Test
+    @Feature({"Feed"})
+    @CommandLineFlags.
+    Add({"enable-features=InterestFeedContentSuggestions<Trial", "force-fieldtrials=Trial/Group",
             "force-fieldtrial-params=Trial.Group:feed_action_server_endpoint/"
                     + "https%3A%2F%2Ffeed%2Egoogle%2Ecom%2Fpath"})
     public void
@@ -401,6 +413,8 @@
                 configuration.getValueOrDefault(ConfigKey.CONSUME_SYNTHETIC_TOKENS, true));
         Assert.assertFalse(configuration.getValueOrDefault(
                 ConfigKey.CONSUME_SYNTHETIC_TOKENS_WHILE_RESTORING, true));
+        Assert.assertEquals((long) FeedConfiguration.DEFAULT_ACTION_TTL_SECONDS_DEFAULT,
+                configuration.getValueOrDefault(ConfigKey.DEFAULT_ACTION_TTL_SECONDS, 0));
         Assert.assertEquals(FeedConfiguration.FEED_ACTION_SERVER_ENDPOINT_DEFAULT,
                 configuration.getValueOrDefault(ConfigKey.FEED_ACTION_SERVER_ENDPOINT, ""));
         Assert.assertEquals(
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp
index 16fc89eb..d15eb8d 100644
--- a/chrome/app/chromeos_strings.grdp
+++ b/chrome/app/chromeos_strings.grdp
@@ -3100,7 +3100,7 @@
     Related info
   </message>
   <message name="IDS_ASSISTANT_SCREEN_CONTEXT_DESC" desc="Description for assistant screen context optin. This is also used as the sub label for context-enable toggle in Assistant settings page.">
-    Let the Assistant show you info related to what's on your screen
+    Let your Assistant show you info related to what's on your screen
   </message>
   <message name="IDS_ASSISTANT_READY_SCREEN_TITLE" desc="Title for assistant ready screen.">
     Your Assistant is ready
diff --git a/chrome/app/os_settings_strings.grdp b/chrome/app/os_settings_strings.grdp
index 09818d4..ad44b29 100644
--- a/chrome/app/os_settings_strings.grdp
+++ b/chrome/app/os_settings_strings.grdp
@@ -2,6 +2,11 @@
 <!-- Settings-specific strings (included from generated_resources.grd). -->
 <grit-part>
 <if expr="chromeos">
+  <!-- About (OS Settings) -->
+  <message name="IDS_OS_SETTINGS_ABOUT_PAGE_BUILD_DETAILS" desc="Label of the row button that clicks into Build details">
+    Build Details
+  </message>
+
   <!-- People (OS settings) -->
   <message name="IDS_OS_SETTINGS_PROFILE_LABEL" desc="Label underneath the profile's real name, listing the email address and optionally the number of additional accounts">
     {COUNT, plural,
diff --git a/chrome/app/printing_strings.grdp b/chrome/app/printing_strings.grdp
index c7533c1..498470ec 100644
--- a/chrome/app/printing_strings.grdp
+++ b/chrome/app/printing_strings.grdp
@@ -88,10 +88,10 @@
     <message name="IDS_PRINT_PREVIEW_SCALING_LABEL" desc="Scaling option label.">
       Scale
     </message>
-    <message name="IDS_PRINT_PREVIEW_OPTION_DEFAULT_SCALING" desc="Option to print with default (100%) scaling.">
+    <message name="IDS_PRINT_PREVIEW_OPTION_DEFAULT_SCALING" desc="Dropdown option to print with default (100%) scaling.">
       Default
     </message>
-    <message name="IDS_PRINT_PREVIEW_OPTION_CUSTOM_SCALING" desc="Option to print with custom scaling.">
+    <message name="IDS_PRINT_PREVIEW_OPTION_CUSTOM_SCALING" desc="Dropdown option to print with custom scaling.">
       Custom
     </message>
     <message name="IDS_PRINT_PREVIEW_PAGES_PER_SHEET_LABEL" desc="Pages per sheet option label.">
@@ -147,9 +147,12 @@
     <message name="IDS_PRINT_PREVIEW_OPTION_HEADER_FOOTER" desc="Checkbox label that provides a choice to print the headers and footers.">
       Headers and footers
     </message>
-    <message name="IDS_PRINT_PREVIEW_OPTION_FIT_TO_PAGE" desc="Checkbox label shown in print preview page to auto fit the PDF page.">
+    <message name="IDS_PRINT_PREVIEW_OPTION_FIT_TO_PAGE" desc="Dropdown option shown in print preview page to auto fit the PDF page to the paper's printable area.">
       Fit to page
     </message>
+    <message name="IDS_PRINT_PREVIEW_OPTION_FIT_TO_PAPER" desc="Dropdown option shown in print preview page to auto fit the PDF page to the paper size.">
+      Fit to paper size
+    </message>
     <message name="IDS_PRINT_PREVIEW_OPTION_BACKGROUND_COLORS_AND_IMAGES" desc="Checkbox label shown in print preview page to print webpage backgrounds.">
       Background graphics
     </message>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
index a85099a..ab5e2dc 100644
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -27,10 +27,7 @@
   </message>
   <if expr="chromeos">
     <message name="IDS_SETTINGS_ABOUT_PAGE_DETAILED_BUILD_INFO" desc="Label describing the section that shows detailed information about the current Chrome build.">
-      Detailed build information
-    </message>
-    <message name="IDS_SETTINGS_ABOUT_PAGE_ARC_VERSION" desc="Label for ARC version">
-      ARC Version
+      Additional details
     </message>
     <message name="IDS_SETTINGS_ABOUT_PAGE_CHANNEL" desc="The channel label under Detailed build info.">
       Channel
@@ -62,12 +59,6 @@
         Learn more
       <ph name="LINK_END">&lt;/a&gt;</ph>
     </message>
-    <message name="IDS_SETTINGS_ABOUT_PAGE_FIRMWARE" desc="Label used for Chrome OS BIOS firmware version.">
-      Firmware
-    </message>
-    <message name="IDS_SETTINGS_ABOUT_PAGE_PLATFORM" desc="Label for Platform">
-      Platform
-    </message>
     <message name="IDS_SETTINGS_ABOUT_PAGE_RELAUNCH" desc="The label for the relaunch button that relaunches the browser once update is complete">
       Restart
     </message>
@@ -3152,10 +3143,10 @@
     "Ok Google"
   </message>
   <message name="IDS_SETTINGS_GOOGLE_ASSISTANT_ENABLE_HOTWORD_DESCRIPTION" desc="Sub label for hotword-enable toggle.">
-    Access your Assistant any time you say "Ok Google"
+    Access your Assistant when you say "Ok Google."
   </message>
   <message name="IDS_SETTINGS_GOOGLE_ASSISTANT_ENABLE_HOTWORD_WITHOUT_DSP_DESCRIPTION" desc="Sub label for hotword-enable dropdown without DSP support.">
-    Activate the Assistant when anyone says “Ok Google”. To save battery, “Ok Google” is on only when your device is connected to a power source.
+    Access your Assistant when you say "Ok Google." To save battery, choose “On (Recommended.)” Your Assistant will respond only when your device is plugged in or charging.
   </message>
   <message name="IDS_SETTINGS_GOOGLE_ASSISTANT_ENABLE_HOTWORD_WITHOUT_DSP_RECOMMENDED" desc="Default label for hotword-enable dropdown without DSP support.">
     On (Recommended)
@@ -3271,6 +3262,12 @@
   <message name="IDS_SETTINGS_SITE_SETTINGS_IMAGES" desc="Label for the images site settings.">
     Images
   </message>
+  <message name="IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT" desc="Label for the insecure content site settings. This setting controls whether HTTP content will be displayed on HTTPS sites.">
+    Insecure content
+  </message>
+  <message name="IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT_BLOCK" desc="Label explaining that insecure content is blocked by default in secure sites. Insecure content refers to content served over HTTP, secure sites refers to sites served over HTTPS.">
+    Insecure content is blocked by default on secure sites
+  </message>
   <message name="IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT" desc="Label for the javascript site settings.">
     JavaScript
   </message>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 54b17eb..c6f80ac 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -5381,6 +5381,7 @@
 
   if (is_win || is_mac || is_desktop_linux || is_chromeos) {
     deps += [
+      "//chrome/browser/resources/management:polymer3_elements",
       "//chrome/browser/resources/discards:discards_resources_gen",
       "//chrome/browser/ui/webui/discards:mojo_bindings_js",
       "//services/resource_coordinator/public/mojom:mojom_js",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 9b7f081..46c5fa3 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2207,6 +2207,9 @@
     {"webxr-ar-module", flag_descriptions::kWebXrArModuleName,
      flag_descriptions::kWebXrArModuleDescription, kOsAll,
      FEATURE_VALUE_TYPE(features::kWebXrArModule)},
+    {"webxr-ar-dom-overlay", flag_descriptions::kWebXrArDOMOverlayName,
+     flag_descriptions::kWebXrArDOMOverlayDescription, kOsAndroid,
+     FEATURE_VALUE_TYPE(features::kWebXrArDOMOverlay)},
     {"webxr-hit-test", flag_descriptions::kWebXrHitTestName,
      flag_descriptions::kWebXrHitTestDescription, kOsAll,
      FEATURE_VALUE_TYPE(features::kWebXrHitTest)},
@@ -2347,6 +2350,12 @@
      flag_descriptions::kCrosRegionsModeDescription, kOsCrOS,
      MULTI_VALUE_TYPE(kCrosRegionsModeChoices)},
 #endif  // OS_CHROMEOS
+#if defined(OS_WIN)
+    {"enable-aura-tooltips-on-windows",
+     flag_descriptions::kEnableAuraTooltipsOnWindowsName,
+     flag_descriptions::kEnableAuraTooltipsOnWindowsDescription, kOsWin,
+     FEATURE_VALUE_TYPE(views::features::kEnableAuraTooltipsOnWindows)},
+#endif  // OS_WIN
 #if defined(TOOLKIT_VIEWS) || defined(OS_ANDROID)
     {"enable-autofill-credit-card-upload",
      flag_descriptions::kAutofillCreditCardUploadName,
diff --git a/chrome/browser/android/compositor/compositor_view.cc b/chrome/browser/android/compositor/compositor_view.cc
index 0366163..6dca5748 100644
--- a/chrome/browser/android/compositor/compositor_view.cc
+++ b/chrome/browser/android/compositor/compositor_view.cc
@@ -83,7 +83,8 @@
       current_surface_format_(0),
       content_width_(0),
       content_height_(0),
-      overlay_video_mode_(false) {
+      overlay_video_mode_(false),
+      overlay_immersive_ar_mode_(false) {
   content::BrowserChildProcessObserver::Add(this);
   obj_.Reset(env, obj);
   compositor_.reset(content::Compositor::Create(this, window_android));
@@ -224,6 +225,24 @@
   SetNeedsComposite(env, object);
 }
 
+void CompositorView::SetOverlayImmersiveArMode(
+    JNIEnv* env,
+    const JavaParamRef<jobject>& object,
+    bool enabled) {
+  // This mode is a variant of overlay video mode, the Java code is responsible
+  // for calling SetOverlayVideoMode(enabled) first to ensure consistent state.
+  // Check to make sure this didn't get bypassed.
+  DCHECK_EQ(enabled, overlay_video_mode_) << "missing SetOverlayVideoMode call";
+
+  overlay_immersive_ar_mode_ = enabled;
+  // This mode needs a transparent background color.
+  // ContentViewRenderView::SetOverlayVideoMode applies this, but the
+  // CompositorView::SetOverlayVideoMode version in this file doesn't.
+  compositor_->SetBackgroundColor(enabled ? SK_ColorTRANSPARENT
+                                          : SK_ColorWHITE);
+  compositor_->SetNeedsComposite();
+}
+
 void CompositorView::SetSceneLayer(JNIEnv* env,
                                    const JavaParamRef<jobject>& object,
                                    const JavaParamRef<jobject>& jscene_layer) {
@@ -248,7 +267,21 @@
     root_layer_->InsertChild(scene_layer->layer(), 0);
   }
 
-  if (scene_layer) {
+  if (overlay_immersive_ar_mode_) {
+    // Suppress the scene background's default background which breaks
+    // transparency. TODO(https://crbug.com/1002270): Remove this workaround
+    // once the issue with StaticTabSceneLayer's unexpected background is
+    // resolved.
+    bool should_show_background = scene_layer->ShouldShowBackground();
+    SkColor color = scene_layer->GetBackgroundColor();
+    if (should_show_background && color != SK_ColorTRANSPARENT) {
+      DVLOG(1) << "override non-transparent background 0x" << std::hex << color;
+      SetBackground(false, SK_ColorTRANSPARENT);
+    } else {
+      // No override needed, scene doesn't provide an opaque background.
+      SetBackground(should_show_background, color);
+    }
+  } else if (scene_layer) {
     SetBackground(scene_layer->ShouldShowBackground(),
                   scene_layer->GetBackgroundColor());
   } else {
diff --git a/chrome/browser/android/compositor/compositor_view.h b/chrome/browser/android/compositor/compositor_view.h
index 6552a86..35f261a 100644
--- a/chrome/browser/android/compositor/compositor_view.h
+++ b/chrome/browser/android/compositor/compositor_view.h
@@ -80,6 +80,10 @@
   void SetOverlayVideoMode(JNIEnv* env,
                            const base::android::JavaParamRef<jobject>& object,
                            bool enabled);
+  void SetOverlayImmersiveArMode(
+      JNIEnv* env,
+      const base::android::JavaParamRef<jobject>& object,
+      bool enabled);
   void SetSceneLayer(JNIEnv* env,
                      const base::android::JavaParamRef<jobject>& object,
                      const base::android::JavaParamRef<jobject>& jscene_layer);
@@ -124,6 +128,7 @@
   int content_width_;
   int content_height_;
   bool overlay_video_mode_;
+  bool overlay_immersive_ar_mode_;
 
   base::WeakPtrFactory<CompositorView> weak_factory_{this};
 
diff --git a/chrome/browser/android/metrics/BUILD.gn b/chrome/browser/android/metrics/BUILD.gn
index cdb8fca..97f500d 100644
--- a/chrome/browser/android/metrics/BUILD.gn
+++ b/chrome/browser/android/metrics/BUILD.gn
@@ -19,6 +19,7 @@
   }
 
   generate_jni("jni_headers") {
+    testonly = true
     sources = [
       "../../../android/java/src/org/chromium/chrome/browser/metrics/UkmUtilsForTest.java",
     ]
diff --git a/chrome/browser/android/vr/arcore_device/arcore_device.cc b/chrome/browser/android/vr/arcore_device/arcore_device.cc
index 5f78246..62edd69 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_device.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_device.cc
@@ -4,6 +4,8 @@
 
 #include "chrome/browser/android/vr/arcore_device/arcore_device.h"
 
+#include <algorithm>
+
 #include "base/bind.h"
 #include "base/numerics/math_constants.h"
 #include "base/optional.h"
@@ -101,7 +103,16 @@
                    std::make_unique<vr::ArCoreJavaUtils>()) {}
 
 ArCoreDevice::~ArCoreDevice() {
+  // If there's still a pending session request, reject it.
   CallDeferredRequestSessionCallback(/*success=*/false);
+
+  // Ensure that any active sessions are terminated. Terminating the GL thread
+  // would normally do so via its session_shutdown_callback_, but that happens
+  // asynchronously via CreateMainThreadCallback, and it doesn't seem safe to
+  // depend on all posted tasks being handled before the thread is shut down.
+  // Repeated EndSession calls are a no-op, so it's OK to do this redundantly.
+  OnSessionEnded();
+
   // The GL thread must be terminated since it uses our members. For example,
   // there might still be a posted Initialize() call in flight that uses
   // arcore_session_utils_ and arcore_factory_. Ensure that the thread is
@@ -151,10 +162,14 @@
   }
   session_state_->pending_request_session_callback_ = std::move(callback);
 
+  bool use_dom_overlay = base::Contains(
+      options->enabled_features,
+      device::mojom::XRSessionFeature::DOM_OVERLAY_FOR_HANDHELD_AR);
+
   if (session_state_->is_arcore_gl_thread_initialized_) {
     // First session on a new ArCoreDevice, and it's ready to proceed now.
-    RequestSessionAfterInitialization(options->render_process_id,
-                                      options->render_frame_id);
+    RequestSessionAfterInitialization(
+        options->render_process_id, options->render_frame_id, use_dom_overlay);
   } else {
     if (mailbox_bridge_) {
       // This is a new ArCoreDevice, but its mailbox_bridge_ hasn't finished
@@ -173,12 +188,13 @@
     session_state_->pending_request_session_after_gl_thread_initialized_ =
         base::BindOnce(&ArCoreDevice::RequestSessionAfterInitialization,
                        GetWeakPtr(), options->render_process_id,
-                       options->render_frame_id);
+                       options->render_frame_id, use_dom_overlay);
   }
 }
 
 void ArCoreDevice::RequestSessionAfterInitialization(int render_process_id,
-                                                     int render_frame_id) {
+                                                     int render_frame_id,
+                                                     bool use_overlay) {
   auto ready_callback =
       base::BindRepeating(&ArCoreDevice::OnDrawingSurfaceReady, GetWeakPtr());
   auto touch_callback =
@@ -187,8 +203,9 @@
       base::BindOnce(&ArCoreDevice::OnDrawingSurfaceDestroyed, GetWeakPtr());
 
   arcore_session_utils_->RequestArSession(
-      render_process_id, render_frame_id, std::move(ready_callback),
-      std::move(touch_callback), std::move(destroyed_callback));
+      render_process_id, render_frame_id, use_overlay,
+      std::move(ready_callback), std::move(touch_callback),
+      std::move(destroyed_callback));
 }
 
 void ArCoreDevice::OnDrawingSurfaceReady(gfx::AcceleratedWidget window,
diff --git a/chrome/browser/android/vr/arcore_device/arcore_device.h b/chrome/browser/android/vr/arcore_device/arcore_device.h
index 81b01fb..ef7cd4d 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_device.h
+++ b/chrome/browser/android/vr/arcore_device/arcore_device.h
@@ -85,7 +85,8 @@
   bool IsOnMainThread();
 
   void RequestSessionAfterInitialization(int render_process_id,
-                                         int render_frame_id);
+                                         int render_frame_id,
+                                         bool use_overlay);
   void CallDeferredRequestSessionCallback(bool success);
   void RequestArCoreGlInitialization(gfx::AcceleratedWidget window,
                                      int rotation,
diff --git a/chrome/browser/android/vr/arcore_device/arcore_device_unittest.cc b/chrome/browser/android/vr/arcore_device/arcore_device_unittest.cc
index 738403a..63974d1 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_device_unittest.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_device_unittest.cc
@@ -89,6 +89,7 @@
   void RequestArSession(
       int render_process_id,
       int render_frame_id,
+      bool use_overlay,
       vr::SurfaceReadyCallback ready_callback,
       vr::SurfaceTouchCallback touch_callback,
       vr::SurfaceDestroyedCallback destroyed_callback) override {
diff --git a/chrome/browser/android/vr/arcore_device/arcore_java_utils.cc b/chrome/browser/android/vr/arcore_device/arcore_java_utils.cc
index e8f1dc0..dce5c25 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_java_utils.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_java_utils.cc
@@ -42,6 +42,7 @@
 void ArCoreJavaUtils::RequestArSession(
     int render_process_id,
     int render_frame_id,
+    bool use_overlay,
     SurfaceReadyCallback ready_callback,
     SurfaceTouchCallback touch_callback,
     SurfaceDestroyedCallback destroyed_callback) {
@@ -54,7 +55,7 @@
 
   Java_ArCoreJavaUtils_startSession(
       env, j_arcore_java_utils_,
-      getTabFromRenderer(render_process_id, render_frame_id));
+      getTabFromRenderer(render_process_id, render_frame_id), use_overlay);
 }
 
 void ArCoreJavaUtils::EndSession() {
diff --git a/chrome/browser/android/vr/arcore_device/arcore_java_utils.h b/chrome/browser/android/vr/arcore_device/arcore_java_utils.h
index ecd5e2d6..0f47db4 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_java_utils.h
+++ b/chrome/browser/android/vr/arcore_device/arcore_java_utils.h
@@ -23,6 +23,7 @@
   // ArCoreSessionUtils:
   void RequestArSession(int render_process_id,
                         int render_frame_id,
+                        bool use_overlay,
                         SurfaceReadyCallback ready_callback,
                         SurfaceTouchCallback touch_callback,
                         SurfaceDestroyedCallback destroyed_callback) override;
diff --git a/chrome/browser/android/vr/arcore_device/arcore_session_utils.h b/chrome/browser/android/vr/arcore_device/arcore_session_utils.h
index e22027f..37d52d48 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_session_utils.h
+++ b/chrome/browser/android/vr/arcore_device/arcore_session_utils.h
@@ -39,6 +39,7 @@
   virtual void RequestArSession(
       int render_process_id,
       int render_frame_id,
+      bool use_overlay,
       SurfaceReadyCallback ready_callback,
       SurfaceTouchCallback touch_callback,
       SurfaceDestroyedCallback destroyed_callback) = 0;
diff --git a/chrome/browser/banners/app_banner_manager_android.cc b/chrome/browser/banners/app_banner_manager_android.cc
index c274203..34abf55 100644
--- a/chrome/browser/banners/app_banner_manager_android.cc
+++ b/chrome/browser/banners/app_banner_manager_android.cc
@@ -370,7 +370,7 @@
   if (GetVisibleAmbientBadgeInfoBar(infobar_service) == nullptr) {
     InstallableAmbientBadgeInfoBarDelegate::Create(
         web_contents(), weak_factory_.GetWeakPtr(), GetAppName(), primary_icon_,
-        manifest_.start_url);
+        has_maskable_primary_icon_, manifest_.start_url);
   }
 }
 
diff --git a/chrome/browser/banners/app_banner_ui_delegate_android.cc b/chrome/browser/banners/app_banner_ui_delegate_android.cc
index accd879..a733b0c 100644
--- a/chrome/browser/banners/app_banner_ui_delegate_android.cc
+++ b/chrome/browser/banners/app_banner_ui_delegate_android.cc
@@ -209,7 +209,8 @@
                    url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC));
 
   return Java_AppBannerUiDelegateAndroid_showWebAppDialog(
-      env, java_delegate_, java_app_title, java_bitmap, java_app_url);
+      env, java_delegate_, java_app_title, java_bitmap, java_app_url,
+      has_primary_maskable_icon_);
 }
 
 bool AppBannerUiDelegateAndroid::ShowNativeAppDetails() {
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
index d2d42ae..5f864a3b 100644
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -324,11 +324,9 @@
       <include name="IDR_POLICY_JS" file="resources\policy\policy.js" type="BINDATA" compress="gzip" />
       <if expr="not is_android">
         <include name="IDR_MANAGEMENT_HTML" file="resources\management\management.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" compress="gzip" />
-        <include name="IDR_MANAGEMENT_UI_HTML" file="resources\management\management_ui.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" compress="gzip" />
-        <include name="IDR_MANAGEMENT_UI_JS" file="resources\management\management_ui.js" type="BINDATA" compress="gzip" preprocess="true" />
-        <include name="IDR_MANAGEMENT_BROWSER_PROXY_HTML" file="resources\management\management_browser_proxy.html" allowexternalscript="true" type="BINDATA" compress="gzip" />
+        <include name="IDR_MANAGEMENT_UI_JS" file="${root_gen_dir}/chrome/browser/resources/management/management_ui.js" use_base_dir="false" type="BINDATA" compress="gzip" preprocess="true" />
         <include name="IDR_MANAGEMENT_BROWSER_PROXY_JS" file="resources\management\management_browser_proxy.js" type="BINDATA" compress="gzip" preprocess="true" />
-        <include name="IDR_MANAGEMENT_ICONS_HTML" file="resources\management\icons.html" type="BINDATA" compress="gzip" preprocess="true" />
+        <include name="IDR_MANAGEMENT_ICONS_JS" file="${root_gen_dir}/chrome/browser/resources/management/icons.js" use_base_dir="false" type="BINDATA" compress="gzip" preprocess="true" />
       </if>
       <include name="IDR_SITE_ENGAGEMENT_HTML" file="resources\engagement\site_engagement.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" compress="gzip" />
       <include name="IDR_SITE_ENGAGEMENT_JS" file="resources\engagement\site_engagement.js" flattenhtml="true" type="BINDATA" compress="gzip" />
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index b6733d9d..489eeb22 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -451,12 +451,6 @@
     "arc/arc_migration_guide_notification.h",
     "arc/arc_optin_uma.cc",
     "arc/arc_optin_uma.h",
-    "arc/arc_play_store_enabled_preference_handler.cc",
-    "arc/arc_play_store_enabled_preference_handler.h",
-    "arc/arc_service_launcher.cc",
-    "arc/arc_service_launcher.h",
-    "arc/arc_session_manager.cc",
-    "arc/arc_session_manager.h",
     "arc/arc_support_host.cc",
     "arc/arc_support_host.h",
     "arc/arc_util.cc",
@@ -618,6 +612,12 @@
     "arc/screen_capture/arc_screen_capture_bridge.h",
     "arc/screen_capture/arc_screen_capture_session.cc",
     "arc/screen_capture/arc_screen_capture_session.h",
+    "arc/session/arc_play_store_enabled_preference_handler.cc",
+    "arc/session/arc_play_store_enabled_preference_handler.h",
+    "arc/session/arc_service_launcher.cc",
+    "arc/session/arc_service_launcher.h",
+    "arc/session/arc_session_manager.cc",
+    "arc/session/arc_session_manager.h",
     "arc/tracing/arc_app_performance_tracing.cc",
     "arc/tracing/arc_app_performance_tracing.h",
     "arc/tracing/arc_app_performance_tracing_session.cc",
@@ -2432,8 +2432,6 @@
     "arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc",
     "arc/app_shortcuts/arc_app_shortcuts_request_unittest.cc",
     "arc/arc_migration_guide_notification_unittest.cc",
-    "arc/arc_play_store_enabled_preference_handler_unittest.cc",
-    "arc/arc_session_manager_unittest.cc",
     "arc/arc_support_host_unittest.cc",
     "arc/arc_util_unittest.cc",
     "arc/bluetooth/arc_bluetooth_bridge_unittest.cc",
@@ -2474,6 +2472,8 @@
     "arc/pip/arc_pip_bridge_unittest.cc",
     "arc/policy/arc_policy_bridge_unittest.cc",
     "arc/process/arc_process_unittest.cc",
+    "arc/session/arc_play_store_enabled_preference_handler_unittest.cc",
+    "arc/session/arc_session_manager_unittest.cc",
     "arc/tracing/arc_app_performance_tracing_unittest.cc",
     "arc/tracing/arc_cpu_event_unittest.cc",
     "arc/tracing/arc_graphics_jank_detector_unittest.cc",
diff --git a/chrome/browser/chromeos/account_manager/account_manager_migrator.cc b/chrome/browser/chromeos/account_manager/account_manager_migrator.cc
index 9ec5f9c..a3d51e6b 100644
--- a/chrome/browser/chromeos/account_manager/account_manager_migrator.cc
+++ b/chrome/browser/chromeos/account_manager/account_manager_migrator.cc
@@ -21,9 +21,9 @@
 #include "base/timer/timer.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/chromeos/account_manager/account_manager_util.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
 #include "chrome/browser/chromeos/arc/auth/arc_auth_service.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/signin/account_reconcilor_factory.h"
diff --git a/chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_service.h b/chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_service.h
index 2586309..d4e2780a 100644
--- a/chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_service.h
+++ b/chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_service.h
@@ -10,9 +10,9 @@
 #include "base/timer/timer.h"
 #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_launcher.h"
 #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/kiosk/arc_kiosk_bridge.h"
 #include "chrome/browser/chromeos/arc/policy/arc_policy_bridge.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_icon.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
 #include "components/keyed_service/core/keyed_service.h"
diff --git a/chrome/browser/chromeos/apps/apk_web_app_installer_browsertest.cc b/chrome/browser/chromeos/apps/apk_web_app_installer_browsertest.cc
index 1b7cc04..c4c8d79 100644
--- a/chrome/browser/chromeos/apps/apk_web_app_installer_browsertest.cc
+++ b/chrome/browser/chromeos/apps/apk_web_app_installer_browsertest.cc
@@ -16,8 +16,8 @@
 #include "base/test/bind_test_util.h"
 #include "chrome/browser/chromeos/apps/apk_web_app_installer.h"
 #include "chrome/browser/chromeos/apps/apk_web_app_service.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/extensions/extension_service.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_test.h"
diff --git a/chrome/browser/chromeos/arc/arc_app_id_provider_impl.cc b/chrome/browser/chromeos/arc/arc_app_id_provider_impl.cc
index caf9ae44..fbcbfef 100644
--- a/chrome/browser/chromeos/arc/arc_app_id_provider_impl.cc
+++ b/chrome/browser/chromeos/arc/arc_app_id_provider_impl.cc
@@ -4,7 +4,7 @@
 
 #include "chrome/browser/chromeos/arc/arc_app_id_provider_impl.h"
 
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
 
diff --git a/chrome/browser/chromeos/arc/arc_util.cc b/chrome/browser/chromeos/arc/arc_util.cc
index e2d2006..55b2380 100644
--- a/chrome/browser/chromeos/arc/arc_util.cc
+++ b/chrome/browser/chromeos/arc/arc_util.cc
@@ -22,9 +22,9 @@
 #include "base/system/sys_info.h"
 #include "base/task/post_task.h"
 #include "base/threading/scoped_blocking_call.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_web_contents_data.h"
 #include "chrome/browser/chromeos/arc/policy/arc_policy_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/configuration_keys.h"
 #include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
 #include "chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h"
diff --git a/chrome/browser/chromeos/arc/arc_util_unittest.cc b/chrome/browser/chromeos/arc/arc_util_unittest.cc
index 7c4e8b8..16bb25b 100644
--- a/chrome/browser/chromeos/arc/arc_util_unittest.cc
+++ b/chrome/browser/chromeos/arc/arc_util_unittest.cc
@@ -14,7 +14,7 @@
 #include "base/test/scoped_feature_list.h"
 #include "base/values.h"
 #include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
 #include "chrome/browser/chromeos/login/oobe_configuration.h"
 #include "chrome/browser/chromeos/login/ui/fake_login_display_host.h"
diff --git a/chrome/browser/chromeos/arc/auth/arc_auth_service.cc b/chrome/browser/chromeos/arc/auth/arc_auth_service.cc
index ec92827f..340c263 100644
--- a/chrome/browser/chromeos/arc/auth/arc_auth_service.cc
+++ b/chrome/browser/chromeos/arc/auth/arc_auth_service.cc
@@ -16,11 +16,11 @@
 #include "chrome/browser/chromeos/account_manager/account_manager_migrator.h"
 #include "chrome/browser/chromeos/account_manager/account_manager_util.h"
 #include "chrome/browser/chromeos/arc/arc_optin_uma.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
 #include "chrome/browser/chromeos/arc/auth/arc_background_auth_code_fetcher.h"
 #include "chrome/browser/chromeos/arc/auth/arc_robot_auth_code_fetcher.h"
 #include "chrome/browser/chromeos/arc/policy/arc_policy_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "chrome/browser/lifetime/application_lifetime.h"
diff --git a/chrome/browser/chromeos/arc/auth/arc_auth_service.h b/chrome/browser/chromeos/arc/auth/arc_auth_service.h
index d66eb89..f7f8adb 100644
--- a/chrome/browser/chromeos/arc/auth/arc_auth_service.h
+++ b/chrome/browser/chromeos/arc/auth/arc_auth_service.h
@@ -14,8 +14,8 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
 #include "base/optional.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/auth/arc_active_directory_enrollment_token_fetcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "components/arc/mojom/auth.mojom.h"
 #include "components/arc/session/connection_observer.h"
 #include "components/keyed_service/core/keyed_service.h"
diff --git a/chrome/browser/chromeos/arc/auth/arc_auth_service_browsertest.cc b/chrome/browser/chromeos/arc/auth/arc_auth_service_browsertest.cc
index becec50..d6d594b 100644
--- a/chrome/browser/chromeos/arc/auth/arc_auth_service_browsertest.cc
+++ b/chrome/browser/chromeos/arc/auth/arc_auth_service_browsertest.cc
@@ -19,12 +19,12 @@
 #include "base/test/bind_test_util.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
 #include "chrome/browser/chromeos/arc/auth/arc_auth_context.h"
 #include "chrome/browser/chromeos/arc/auth/arc_auth_service.h"
 #include "chrome/browser/chromeos/arc/auth/arc_background_auth_code_fetcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/certificate_provider/certificate_provider_service.h"
 #include "chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h"
 #include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
diff --git a/chrome/browser/chromeos/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc b/chrome/browser/chromeos/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc
index a22e6c8..585ef94 100644
--- a/chrome/browser/chromeos/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc
+++ b/chrome/browser/chromeos/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc
@@ -13,9 +13,9 @@
 #include "base/task/post_task.h"
 #include "base/test/bind_test_util.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/auth/arc_auth_service.h"
 #include "chrome/browser/chromeos/arc/auth/arc_robot_auth_code_fetcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
 #include "chrome/test/base/in_process_browser_test.h"
diff --git a/chrome/browser/chromeos/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge.h b/chrome/browser/chromeos/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge.h
index 1d92912..8b96b5d 100644
--- a/chrome/browser/chromeos/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge.h
+++ b/chrome/browser/chromeos/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge.h
@@ -13,7 +13,7 @@
 #include "base/observer_list_types.h"
 #include "base/threading/thread_checker.h"
 #include "base/time/time.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/sessions/session_restore_observer.h"
 #include "components/account_id/account_id.h"
 #include "components/arc/arc_browser_context_keyed_service_factory_base.h"
diff --git a/chrome/browser/chromeos/arc/enterprise/arc_enterprise_reporting_service.cc b/chrome/browser/chromeos/arc/enterprise/arc_enterprise_reporting_service.cc
index 31b73a2..35c05f3 100644
--- a/chrome/browser/chromeos/arc/enterprise/arc_enterprise_reporting_service.cc
+++ b/chrome/browser/chromeos/arc/enterprise/arc_enterprise_reporting_service.cc
@@ -9,7 +9,7 @@
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/memory/singleton.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "components/arc/arc_browser_context_keyed_service_factory_base.h"
 #include "components/arc/arc_service_manager.h"
 #include "components/arc/session/arc_bridge_service.h"
diff --git a/chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_store_bridge_browsertest.cc b/chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_store_bridge_browsertest.cc
index b0134b1..7df6808 100644
--- a/chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_store_bridge_browsertest.cc
+++ b/chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_store_bridge_browsertest.cc
@@ -12,8 +12,8 @@
 #include "base/json/json_writer.h"
 #include "base/run_loop.h"
 #include "base/threading/thread_restrictions.h"
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
 #include "chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_store_bridge.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
 #include "chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h"
 #include "chrome/browser/chromeos/platform_keys/key_permissions.h"
 #include "chrome/browser/chromeos/platform_keys/platform_keys.h"
diff --git a/chrome/browser/chromeos/arc/extensions/arc_support_message_host.cc b/chrome/browser/chromeos/arc/extensions/arc_support_message_host.cc
index 64c16803..9c5d9c10 100644
--- a/chrome/browser/chromeos/arc/extensions/arc_support_message_host.cc
+++ b/chrome/browser/chromeos/arc/extensions/arc_support_message_host.cc
@@ -10,8 +10,8 @@
 #include "base/json/json_writer.h"
 #include "base/single_thread_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_support_host.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 
 namespace arc {
 
diff --git a/chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner.h b/chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner.h
index aa561d7e..f3d3bfc 100644
--- a/chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner.h
+++ b/chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner.h
@@ -16,8 +16,8 @@
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/fileapi/arc_file_system_bridge.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "components/arc/mojom/file_system.mojom.h"
 #include "components/arc/session/connection_observer.h"
 #include "components/keyed_service/core/keyed_service.h"
diff --git a/chrome/browser/chromeos/arc/instance_throttle/arc_boot_phase_throttle_observer.h b/chrome/browser/chromeos/arc/instance_throttle/arc_boot_phase_throttle_observer.h
index 0947e6f..f823869 100644
--- a/chrome/browser/chromeos/arc/instance_throttle/arc_boot_phase_throttle_observer.h
+++ b/chrome/browser/chromeos/arc/instance_throttle/arc_boot_phase_throttle_observer.h
@@ -6,8 +6,8 @@
 #define CHROME_BROWSER_CHROMEOS_ARC_INSTANCE_THROTTLE_ARC_BOOT_PHASE_THROTTLE_OBSERVER_H_
 
 #include "base/macros.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/throttle_observer.h"
 #include "chrome/browser/sessions/session_restore_observer.h"
 
diff --git a/chrome/browser/chromeos/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc b/chrome/browser/chromeos/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc
index b932992..b2afccbb 100644
--- a/chrome/browser/chromeos/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc
+++ b/chrome/browser/chromeos/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc
@@ -8,8 +8,8 @@
 
 #include "base/command_line.h"
 #include "base/values.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/arc/arc_prefs.h"
diff --git a/chrome/browser/chromeos/arc/instance_throttle/arc_instance_throttle_unittest.cc b/chrome/browser/chromeos/arc/instance_throttle/arc_instance_throttle_unittest.cc
index a075646..27c5f24 100644
--- a/chrome/browser/chromeos/arc/instance_throttle/arc_instance_throttle_unittest.cc
+++ b/chrome/browser/chromeos/arc/instance_throttle/arc_instance_throttle_unittest.cc
@@ -11,8 +11,8 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/test/task_environment.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/throttle_observer.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/arc/arc_prefs.h"
diff --git a/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.h b/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.h
index 63b9fff..026de17 100644
--- a/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.h
+++ b/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.h
@@ -8,7 +8,7 @@
 #include <memory>
 
 #include "base/macros.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "components/arc/mojom/intent_helper.mojom.h"
 #include "components/arc/session/connection_observer.h"
 #include "components/keyed_service/core/keyed_service.h"
diff --git a/chrome/browser/chromeos/arc/intent_helper/arc_settings_service_unittest.cc b/chrome/browser/chromeos/arc/intent_helper/arc_settings_service_unittest.cc
index e1715b9..32a02c2 100644
--- a/chrome/browser/chromeos/arc/intent_helper/arc_settings_service_unittest.cc
+++ b/chrome/browser/chromeos/arc/intent_helper/arc_settings_service_unittest.cc
@@ -10,7 +10,7 @@
 #include "base/command_line.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/chromeos/arc/arc_optin_uma.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/browser/chromeos/settings/stats_reporting_controller.h"
 #include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h"
diff --git a/chrome/browser/chromeos/arc/notification/arc_boot_error_notification.h b/chrome/browser/chromeos/arc/notification/arc_boot_error_notification.h
index 12ab395..1a25116 100644
--- a/chrome/browser/chromeos/arc/notification/arc_boot_error_notification.h
+++ b/chrome/browser/chromeos/arc/notification/arc_boot_error_notification.h
@@ -6,7 +6,7 @@
 #define CHROME_BROWSER_CHROMEOS_ARC_NOTIFICATION_ARC_BOOT_ERROR_NOTIFICATION_H_
 
 #include "base/macros.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "components/keyed_service/core/keyed_service.h"
 
 namespace content {
diff --git a/chrome/browser/chromeos/arc/notification/arc_provision_notification_service.h b/chrome/browser/chromeos/arc/notification/arc_provision_notification_service.h
index 6a50843..1465edff 100644
--- a/chrome/browser/chromeos/arc/notification/arc_provision_notification_service.h
+++ b/chrome/browser/chromeos/arc/notification/arc_provision_notification_service.h
@@ -8,7 +8,7 @@
 #include <memory>
 
 #include "base/macros.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "components/keyed_service/core/keyed_service.h"
 
 namespace content {
diff --git a/chrome/browser/chromeos/arc/notification/arc_provision_notification_service_unittest.cc b/chrome/browser/chromeos/arc/notification/arc_provision_notification_service_unittest.cc
index bed021a..be2cc07 100644
--- a/chrome/browser/chromeos/arc/notification/arc_provision_notification_service_unittest.cc
+++ b/chrome/browser/chromeos/arc/notification/arc_provision_notification_service_unittest.cc
@@ -11,8 +11,8 @@
 #include "base/command_line.h"
 #include "base/values.h"
 #include "chrome/browser/chromeos/arc/arc_optin_uma.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/ui/fake_login_display_host.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/browser/notifications/notification_display_service_tester.h"
diff --git a/chrome/browser/chromeos/arc/notification/arc_supervision_transition_notification.cc b/chrome/browser/chromeos/arc/notification/arc_supervision_transition_notification.cc
index ee7286f..28dd2f0 100644
--- a/chrome/browser/chromeos/arc/notification/arc_supervision_transition_notification.cc
+++ b/chrome/browser/chromeos/arc/notification/arc_supervision_transition_notification.cc
@@ -8,8 +8,8 @@
 #include "base/bind.h"
 #include "base/macros.h"
 #include "chrome/app/vector_icons/vector_icons.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/notifications/notification_display_service.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
diff --git a/chrome/browser/chromeos/arc/policy/arc_policy_bridge.cc b/chrome/browser/chromeos/arc/policy/arc_policy_bridge.cc
index 778b2ce..d0ce31b 100644
--- a/chrome/browser/chromeos/arc/policy/arc_policy_bridge.cc
+++ b/chrome/browser/chromeos/arc/policy/arc_policy_bridge.cc
@@ -17,8 +17,8 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/values.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "chrome/browser/policy/developer_tools_policy_handler.h"
 #include "chrome/browser/policy/profile_policy_connector.h"
diff --git a/chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler.cc b/chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler.cc
similarity index 97%
rename from chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler.cc
rename to chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler.cc
index 0f087b2..972f133 100644
--- a/chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler.cc
+++ b/chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler.cc
@@ -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 "chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler.h"
+#include "chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler.h"
 
 #include <string>
 
@@ -10,8 +10,8 @@
 #include "base/command_line.h"
 #include "base/logging.h"
 #include "chrome/browser/chromeos/arc/arc_optin_uma.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/consent_auditor/consent_auditor_factory.h"
 #include "chrome/browser/prefs/pref_service_syncable_util.h"
 #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler.h b/chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler.h
similarity index 85%
rename from chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler.h
rename to chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler.h
index 91e8329..e655e67 100644
--- a/chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler.h
+++ b/chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_CHROMEOS_ARC_ARC_PLAY_STORE_ENABLED_PREFERENCE_HANDLER_H_
-#define CHROME_BROWSER_CHROMEOS_ARC_ARC_PLAY_STORE_ENABLED_PREFERENCE_HANDLER_H_
+#ifndef CHROME_BROWSER_CHROMEOS_ARC_SESSION_ARC_PLAY_STORE_ENABLED_PREFERENCE_HANDLER_H_
+#define CHROME_BROWSER_CHROMEOS_ARC_SESSION_ARC_PLAY_STORE_ENABLED_PREFERENCE_HANDLER_H_
 
 #include <memory>
 
@@ -55,4 +55,4 @@
 
 }  // namespace arc
 
-#endif  // CHROME_BROWSER_CHROMEOS_ARC_ARC_PLAY_STORE_ENABLED_PREFERENCE_HANDLER_H_
+#endif  // CHROME_BROWSER_CHROMEOS_ARC_SESSION_ARC_PLAY_STORE_ENABLED_PREFERENCE_HANDLER_H_
diff --git a/chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler_unittest.cc b/chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler_unittest.cc
similarity index 97%
rename from chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler_unittest.cc
rename to chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler_unittest.cc
index 406f831..b1b31bcc 100644
--- a/chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler_unittest.cc
+++ b/chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler_unittest.cc
@@ -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 "chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler.h"
+#include "chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler.h"
 
 #include <memory>
 #include <string>
@@ -11,8 +11,8 @@
 #include "base/command_line.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/run_loop.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/test/arc_data_removed_waiter.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/browser/consent_auditor/consent_auditor_factory.h"
diff --git a/chrome/browser/chromeos/arc/arc_service_launcher.cc b/chrome/browser/chromeos/arc/session/arc_service_launcher.cc
similarity index 97%
rename from chrome/browser/chromeos/arc/arc_service_launcher.cc
rename to chrome/browser/chromeos/arc/session/arc_service_launcher.cc
index 7b52e7f..ad709ae 100644
--- a/chrome/browser/chromeos/arc/arc_service_launcher.cc
+++ b/chrome/browser/chromeos/arc/session/arc_service_launcher.cc
@@ -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 "chrome/browser/chromeos/arc/arc_service_launcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
 
 #include <utility>
 
@@ -14,8 +14,6 @@
 #include "chrome/browser/apps/app_service/arc_apps_factory.h"
 #include "chrome/browser/chromeos/apps/apk_web_app_service.h"
 #include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h"
-#include "chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
 #include "chrome/browser/chromeos/arc/auth/arc_auth_service.h"
 #include "chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.h"
@@ -41,6 +39,8 @@
 #include "chrome/browser/chromeos/arc/print_spooler/arc_print_spooler_bridge.h"
 #include "chrome/browser/chromeos/arc/process/arc_process_service.h"
 #include "chrome/browser/chromeos/arc/screen_capture/arc_screen_capture_bridge.h"
+#include "chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/tracing/arc_app_performance_tracing.h"
 #include "chrome/browser/chromeos/arc/tracing/arc_tracing_bridge.h"
 #include "chrome/browser/chromeos/arc/tts/arc_tts_service.h"
diff --git a/chrome/browser/chromeos/arc/arc_service_launcher.h b/chrome/browser/chromeos/arc/session/arc_service_launcher.h
similarity index 91%
rename from chrome/browser/chromeos/arc/arc_service_launcher.h
rename to chrome/browser/chromeos/arc/session/arc_service_launcher.h
index 02660cb..d9251e05 100644
--- a/chrome/browser/chromeos/arc/arc_service_launcher.h
+++ b/chrome/browser/chromeos/arc/session/arc_service_launcher.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_CHROMEOS_ARC_ARC_SERVICE_LAUNCHER_H_
-#define CHROME_BROWSER_CHROMEOS_ARC_ARC_SERVICE_LAUNCHER_H_
+#ifndef CHROME_BROWSER_CHROMEOS_ARC_SESSION_ARC_SERVICE_LAUNCHER_H_
+#define CHROME_BROWSER_CHROMEOS_ARC_SESSION_ARC_SERVICE_LAUNCHER_H_
 
 #include <memory>
 
@@ -70,4 +70,4 @@
 
 }  // namespace arc
 
-#endif  // CHROME_BROWSER_CHROMEOS_ARC_ARC_SERVICE_LAUNCHER_H_
+#endif  // CHROME_BROWSER_CHROMEOS_ARC_SESSION_ARC_SERVICE_LAUNCHER_H_
diff --git a/chrome/browser/chromeos/arc/arc_session_manager.cc b/chrome/browser/chromeos/arc/session/arc_session_manager.cc
similarity index 99%
rename from chrome/browser/chromeos/arc/arc_session_manager.cc
rename to chrome/browser/chromeos/arc/session/arc_session_manager.cc
index 9f9db38..2742271 100644
--- a/chrome/browser/chromeos/arc/arc_session_manager.cc
+++ b/chrome/browser/chromeos/arc/session/arc_session_manager.cc
@@ -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 "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 
 #include <string>
 #include <utility>
diff --git a/chrome/browser/chromeos/arc/arc_session_manager.h b/chrome/browser/chromeos/arc/session/arc_session_manager.h
similarity index 98%
rename from chrome/browser/chromeos/arc/arc_session_manager.h
rename to chrome/browser/chromeos/arc/session/arc_session_manager.h
index d002e682..5ad9eb0 100644
--- a/chrome/browser/chromeos/arc/arc_session_manager.h
+++ b/chrome/browser/chromeos/arc/session/arc_session_manager.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_CHROMEOS_ARC_ARC_SESSION_MANAGER_H_
-#define CHROME_BROWSER_CHROMEOS_ARC_ARC_SESSION_MANAGER_H_
+#ifndef CHROME_BROWSER_CHROMEOS_ARC_SESSION_ARC_SESSION_MANAGER_H_
+#define CHROME_BROWSER_CHROMEOS_ARC_SESSION_ARC_SESSION_MANAGER_H_
 
 #include <memory>
 #include <ostream>
@@ -396,4 +396,4 @@
 
 }  // namespace arc
 
-#endif  // CHROME_BROWSER_CHROMEOS_ARC_ARC_SESSION_MANAGER_H_
+#endif  // CHROME_BROWSER_CHROMEOS_ARC_SESSION_ARC_SESSION_MANAGER_H_
diff --git a/chrome/browser/chromeos/arc/arc_session_manager_browsertest.cc b/chrome/browser/chromeos/arc/session/arc_session_manager_browsertest.cc
similarity index 98%
rename from chrome/browser/chromeos/arc/arc_session_manager_browsertest.cc
rename to chrome/browser/chromeos/arc/session/arc_session_manager_browsertest.cc
index a0800fee6..43c457b 100644
--- a/chrome/browser/chromeos/arc/arc_session_manager_browsertest.cc
+++ b/chrome/browser/chromeos/arc/session/arc_session_manager_browsertest.cc
@@ -16,9 +16,9 @@
 #include "base/strings/stringprintf.h"
 #include "base/time/time.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/test/arc_data_removed_waiter.h"
 #include "chrome/browser/chromeos/certificate_provider/certificate_provider_service.h"
 #include "chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h"
diff --git a/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc b/chrome/browser/chromeos/arc/session/arc_session_manager_unittest.cc
similarity index 99%
rename from chrome/browser/chromeos/arc/arc_session_manager_unittest.cc
rename to chrome/browser/chromeos/arc/session/arc_session_manager_unittest.cc
index 2b05ed9f..12bd43a 100644
--- a/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc
+++ b/chrome/browser/chromeos/arc/session/arc_session_manager_unittest.cc
@@ -20,10 +20,10 @@
 #include "base/test/scoped_feature_list.h"
 #include "base/values.h"
 #include "chrome/browser/chromeos/arc/arc_optin_uma.h"
-#include "chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
 #include "chrome/browser/chromeos/arc/optin/arc_terms_of_service_oobe_negotiator.h"
+#include "chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/test/arc_data_removed_waiter.h"
 #include "chrome/browser/chromeos/login/ui/fake_login_display_host.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
diff --git a/chrome/browser/chromeos/arc/test/arc_data_removed_waiter.h b/chrome/browser/chromeos/arc/test/arc_data_removed_waiter.h
index 2dfd804d..6e85601a 100644
--- a/chrome/browser/chromeos/arc/test/arc_data_removed_waiter.h
+++ b/chrome/browser/chromeos/arc/test/arc_data_removed_waiter.h
@@ -8,7 +8,7 @@
 #include <memory>
 
 #include "base/macros.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 
 namespace base {
 class RunLoop;
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index 573dc08..ea21add 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -40,7 +40,7 @@
 #include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h"
 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
 #include "chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.h"
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
 #include "chrome/browser/chromeos/boot_times_recorder.h"
 #include "chrome/browser/chromeos/crostini/crostini_unsupported_action_notifier.h"
 #include "chrome/browser/chromeos/crostini/crosvm_metrics.h"
diff --git a/chrome/browser/chromeos/dbus/libvda_service_provider.cc b/chrome/browser/chromeos/dbus/libvda_service_provider.cc
index ad05658..855acc7 100644
--- a/chrome/browser/chromeos/dbus/libvda_service_provider.cc
+++ b/chrome/browser/chromeos/dbus/libvda_service_provider.cc
@@ -8,7 +8,7 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/video/gpu_arc_video_service_host.h"
 #include "chrome/browser/profiles/profile.h"
 #include "dbus/bus.h"
diff --git a/chrome/browser/chromeos/dbus/virtual_file_request_service_provider.cc b/chrome/browser/chromeos/dbus/virtual_file_request_service_provider.cc
index 43f7481..137ef9f 100644
--- a/chrome/browser/chromeos/dbus/virtual_file_request_service_provider.cc
+++ b/chrome/browser/chromeos/dbus/virtual_file_request_service_provider.cc
@@ -12,8 +12,8 @@
 
 #include "base/bind.h"
 #include "base/files/scoped_file.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/fileapi/arc_file_system_bridge.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "dbus/message.h"
 #include "third_party/cros_system_api/dbus/service_constants.h"
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
index 0fc0d91..8bc59f0d 100644
--- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
+++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -41,8 +41,8 @@
 #include "chrome/browser/apps/app_service/app_service_proxy.h"
 #include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/assistant/assistant_util.h"
 #include "chrome/browser/chromeos/crostini/crostini_export_import.h"
 #include "chrome/browser/chromeos/crostini/crostini_installer.h"
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc
index 9dbea84..3ac9eb4 100644
--- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc
+++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc
@@ -5,8 +5,8 @@
 #include "base/macros.h"
 
 #include "build/build_config.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h"
 #include "chrome/browser/extensions/extension_apitest.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
diff --git a/chrome/browser/chromeos/file_manager/volume_manager.h b/chrome/browser/chromeos/file_manager/volume_manager.h
index 4587bd1..fecd3cb 100644
--- a/chrome/browser/chromeos/file_manager/volume_manager.h
+++ b/chrome/browser/chromeos/file_manager/volume_manager.h
@@ -16,7 +16,7 @@
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/drive/drive_integration_service.h"
 #include "chrome/browser/chromeos/file_manager/documents_provider_root_manager.h"
 #include "chrome/browser/chromeos/file_system_provider/icon_set.h"
diff --git a/chrome/browser/chromeos/lock_screen_apps/app_manager_impl_unittest.cc b/chrome/browser/chromeos/lock_screen_apps/app_manager_impl_unittest.cc
index f05b659..fabb7ae 100644
--- a/chrome/browser/chromeos/lock_screen_apps/app_manager_impl_unittest.cc
+++ b/chrome/browser/chromeos/lock_screen_apps/app_manager_impl_unittest.cc
@@ -18,7 +18,7 @@
 #include "base/test/scoped_command_line.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/values.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/lock_screen_apps/fake_lock_screen_profile_creator.h"
 #include "chrome/browser/chromeos/login/users/scoped_test_user_manager.h"
 #include "chrome/browser/chromeos/note_taking_helper.h"
diff --git a/chrome/browser/chromeos/lock_screen_apps/lock_screen_profile_creator_impl_unittest.cc b/chrome/browser/chromeos/lock_screen_apps/lock_screen_profile_creator_impl_unittest.cc
index 8d7943b6..ccd7410 100644
--- a/chrome/browser/chromeos/lock_screen_apps/lock_screen_profile_creator_impl_unittest.cc
+++ b/chrome/browser/chromeos/lock_screen_apps/lock_screen_profile_creator_impl_unittest.cc
@@ -17,7 +17,7 @@
 #include "base/run_loop.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/simple_test_tick_clock.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/users/scoped_test_user_manager.h"
 #include "chrome/browser/chromeos/note_taking_helper.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
diff --git a/chrome/browser/chromeos/lock_screen_apps/state_controller_unittest.cc b/chrome/browser/chromeos/lock_screen_apps/state_controller_unittest.cc
index ab0e18f..1bfe869 100644
--- a/chrome/browser/chromeos/lock_screen_apps/state_controller_unittest.cc
+++ b/chrome/browser/chromeos/lock_screen_apps/state_controller_unittest.cc
@@ -20,7 +20,7 @@
 #include "base/test/scoped_command_line.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/time/time.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/lock_screen_apps/app_manager.h"
 #include "chrome/browser/chromeos/lock_screen_apps/fake_lock_screen_profile_creator.h"
 #include "chrome/browser/chromeos/lock_screen_apps/first_app_run_toast_manager.h"
diff --git a/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc b/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc
index ba917309..5052c5a 100644
--- a/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc
+++ b/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc
@@ -6,8 +6,8 @@
 #include "base/command_line.h"
 #include "base/guid.h"
 #include "base/hash/sha1.h"
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
 #include "chrome/browser/chromeos/login/login_wizard.h"
 #include "chrome/browser/chromeos/login/oobe_screen.h"
 #include "chrome/browser/chromeos/login/screens/arc_terms_of_service_screen.h"
diff --git a/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc b/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc
index 81c5b5b4..bbdeb7a 100644
--- a/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc
+++ b/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc
@@ -17,8 +17,8 @@
 #include "build/buildflag.h"
 #include "chrome/browser/chrome_browser_main.h"
 #include "chrome/browser/chrome_browser_main_extra_parts.h"
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api.h"
 #include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h"
 #include "chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.h"
diff --git a/chrome/browser/chromeos/login/screens/supervision_transition_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/supervision_transition_screen_browsertest.cc
index cc75e327..aec86c5 100644
--- a/chrome/browser/chromeos/login/screens/supervision_transition_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/supervision_transition_screen_browsertest.cc
@@ -8,9 +8,9 @@
 #include "ash/public/cpp/login_screen_test_api.h"
 #include "base/run_loop.h"
 #include "base/timer/timer.h"
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/test/js_checker.h"
 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
diff --git a/chrome/browser/chromeos/login/session/chrome_session_manager.cc b/chrome/browser/chromeos/login/session/chrome_session_manager.cc
index a72a50c9..a309d33 100644
--- a/chrome/browser/chromeos/login/session/chrome_session_manager.cc
+++ b/chrome/browser/chromeos/login/session/chrome_session_manager.cc
@@ -15,7 +15,7 @@
 #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.h"
 #include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h"
 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
 #include "chrome/browser/chromeos/boot_times_recorder.h"
 #include "chrome/browser/chromeos/child_accounts/consumer_status_reporting_service_factory.h"
 #include "chrome/browser/chromeos/child_accounts/screen_time_controller_factory.h"
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc
index c9bfbb2..0075785 100644
--- a/chrome/browser/chromeos/login/session/user_session_manager.cc
+++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
@@ -39,8 +39,8 @@
 #include "chrome/browser/chromeos/account_manager/account_manager_migrator.h"
 #include "chrome/browser/chromeos/account_manager/account_manager_util.h"
 #include "chrome/browser/chromeos/arc/arc_migration_guide_notification.h"
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
 #include "chrome/browser/chromeos/base/locale_util.h"
 #include "chrome/browser/chromeos/boot_times_recorder.h"
 #include "chrome/browser/chromeos/child_accounts/child_policy_observer.h"
diff --git a/chrome/browser/chromeos/note_taking_helper.h b/chrome/browser/chromeos/note_taking_helper.h
index 489980f..e2f087c5 100644
--- a/chrome/browser/chromeos/note_taking_helper.h
+++ b/chrome/browser/chromeos/note_taking_helper.h
@@ -15,7 +15,7 @@
 #include "base/observer_list.h"
 #include "base/optional.h"
 #include "base/scoped_observer.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/profiles/profile_manager_observer.h"
 #include "components/arc/intent_helper/arc_intent_helper_observer.h"
 #include "components/arc/mojom/intent_helper.mojom.h"
diff --git a/chrome/browser/chromeos/policy/external_data_handlers/device_native_printers_external_data_handler.cc b/chrome/browser/chromeos/policy/external_data_handlers/device_native_printers_external_data_handler.cc
index 46cad2a..84a5e6a 100644
--- a/chrome/browser/chromeos/policy/external_data_handlers/device_native_printers_external_data_handler.cc
+++ b/chrome/browser/chromeos/policy/external_data_handlers/device_native_printers_external_data_handler.cc
@@ -16,8 +16,7 @@
 namespace {
 
 base::WeakPtr<chromeos::BulkPrintersCalculator> GetBulkPrintersCalculator() {
-  return chromeos::BulkPrintersCalculatorFactory::Get()->GetForDevice(
-      /*create_if_not_exists=*/true);
+  return chromeos::BulkPrintersCalculatorFactory::Get()->GetForDevice();
 }
 
 }  // namespace
diff --git a/chrome/browser/chromeos/policy/external_data_handlers/device_native_printers_external_data_handler_unittest.cc b/chrome/browser/chromeos/policy/external_data_handlers/device_native_printers_external_data_handler_unittest.cc
index 5e3893e..7e2ca52 100644
--- a/chrome/browser/chromeos/policy/external_data_handlers/device_native_printers_external_data_handler_unittest.cc
+++ b/chrome/browser/chromeos/policy/external_data_handlers/device_native_printers_external_data_handler_unittest.cc
@@ -74,7 +74,7 @@
         std::make_unique<DeviceNativePrintersExternalDataHandler>(
             &policy_service_);
     external_printers_ =
-        chromeos::BulkPrintersCalculatorFactory::Get()->GetForDevice(true);
+        chromeos::BulkPrintersCalculatorFactory::Get()->GetForDevice();
     external_printers_->SetAccessMode(
         chromeos::BulkPrintersCalculator::ALL_ACCESS);
   }
diff --git a/chrome/browser/chromeos/policy/external_data_handlers/native_printers_external_data_handler.cc b/chrome/browser/chromeos/policy/external_data_handlers/native_printers_external_data_handler.cc
index c6a1734..db5ed4c 100644
--- a/chrome/browser/chromeos/policy/external_data_handlers/native_printers_external_data_handler.cc
+++ b/chrome/browser/chromeos/policy/external_data_handlers/native_printers_external_data_handler.cc
@@ -19,8 +19,7 @@
 base::WeakPtr<chromeos::BulkPrintersCalculator> GetBulkPrintersCalculator(
     const std::string& user_id) {
   return chromeos::BulkPrintersCalculatorFactory::Get()->GetForAccountId(
-      CloudExternalDataPolicyHandler::GetAccountId(user_id),
-      /*create_if_not_exists=*/true);
+      CloudExternalDataPolicyHandler::GetAccountId(user_id));
 }
 
 }  // namespace
diff --git a/chrome/browser/chromeos/policy/lock_to_single_user_manager.h b/chrome/browser/chromeos/policy/lock_to_single_user_manager.h
index cb41811..e8ee289 100644
--- a/chrome/browser/chromeos/policy/lock_to_single_user_manager.h
+++ b/chrome/browser/chromeos/policy/lock_to_single_user_manager.h
@@ -9,7 +9,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/optional.h"
 #include "base/scoped_observer.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chromeos/dbus/cryptohome/rpc.pb.h"
 #include "components/user_manager/user_manager.h"
 
diff --git a/chrome/browser/chromeos/policy/lock_to_single_user_manager_unittest.cc b/chrome/browser/chromeos/policy/lock_to_single_user_manager_unittest.cc
index 9ce6bf7..3ea9100 100644
--- a/chrome/browser/chromeos/policy/lock_to_single_user_manager_unittest.cc
+++ b/chrome/browser/chromeos/policy/lock_to_single_user_manager_unittest.cc
@@ -8,7 +8,7 @@
 
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/browser/chromeos/settings/device_settings_service.h"
 #include "chrome/browser/chromeos/settings/scoped_testing_cros_settings.h"
diff --git a/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc b/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc
index d34d10c0..501c3fe 100644
--- a/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc
+++ b/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc
@@ -9,8 +9,8 @@
 #include "base/macros.h"
 #include "base/run_loop.h"
 #include "base/threading/thread_task_runner_handle.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
 #include "chrome/browser/chromeos/policy/affiliation_test_helper.h"
 #include "chrome/browser/chromeos/policy/device_policy_builder.h"
diff --git a/chrome/browser/chromeos/printing/bulk_printers_calculator_factory.cc b/chrome/browser/chromeos/printing/bulk_printers_calculator_factory.cc
index d0d2283..fd0fbba 100644
--- a/chrome/browser/chromeos/printing/bulk_printers_calculator_factory.cc
+++ b/chrome/browser/chromeos/printing/bulk_printers_calculator_factory.cc
@@ -20,27 +20,23 @@
 }
 
 base::WeakPtr<BulkPrintersCalculator>
-BulkPrintersCalculatorFactory::GetForAccountId(const AccountId& account_id,
-                                               bool create_if_not_exists) {
+BulkPrintersCalculatorFactory::GetForAccountId(const AccountId& account_id) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   auto it = printers_by_user_.find(account_id);
   if (it != printers_by_user_.end())
     return it->second->AsWeakPtr();
-  if (!create_if_not_exists)
-    return nullptr;
   printers_by_user_.emplace(account_id, BulkPrintersCalculator::Create());
   return printers_by_user_[account_id]->AsWeakPtr();
 }
 
 base::WeakPtr<BulkPrintersCalculator>
-BulkPrintersCalculatorFactory::GetForProfile(Profile* profile,
-                                             bool create_if_not_exists) {
+BulkPrintersCalculatorFactory::GetForProfile(Profile* profile) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   const user_manager::User* user =
       ProfileHelper::Get()->GetUserByProfile(profile);
   if (!user)
     return nullptr;
-  return GetForAccountId(user->GetAccountId(), create_if_not_exists);
+  return GetForAccountId(user->GetAccountId());
 }
 
 void BulkPrintersCalculatorFactory::RemoveForUserId(
@@ -50,12 +46,10 @@
 }
 
 base::WeakPtr<BulkPrintersCalculator>
-BulkPrintersCalculatorFactory::GetForDevice(bool create_if_not_exists) {
+BulkPrintersCalculatorFactory::GetForDevice() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (device_printers_)
     return device_printers_->AsWeakPtr();
-  if (!create_if_not_exists)
-    return nullptr;
   device_printers_ = BulkPrintersCalculator::Create();
   return device_printers_->AsWeakPtr();
 }
diff --git a/chrome/browser/chromeos/printing/bulk_printers_calculator_factory.h b/chrome/browser/chromeos/printing/bulk_printers_calculator_factory.h
index 00af1c1..a30cc0a 100644
--- a/chrome/browser/chromeos/printing/bulk_printers_calculator_factory.h
+++ b/chrome/browser/chromeos/printing/bulk_printers_calculator_factory.h
@@ -30,32 +30,24 @@
 
   // Returns a WeakPtr to the BulkPrintersCalculator registered for
   // |account_id|.
-  // If requested BulkPrintersCalculator does not exist, the output depends on
-  // the given parameter |create_if_not_exists|. If it is true, the object is
-  // created and registered, otherwise nullptr is returned.
-  // The returned object remains valid until RemoveForUserId or Shutdown is
-  // called.
+  // If requested BulkPrintersCalculator does not exist, the object is
+  // created and registered. The returned object remains valid until
+  // RemoveForUserId or Shutdown is called.
   base::WeakPtr<BulkPrintersCalculator> GetForAccountId(
-      const AccountId& account_id,
-      bool create_if_not_exists);
+      const AccountId& account_id);
 
   // Returns a WeakPtr to the BulkPrintersCalculator registered for |profile|
   // which could be nullptr if |profile| does not map to a valid AccountId.
-  // If requested BulkPrintersCalculator does not exist, the output depends on
-  // the given parameter |create_if_not_exists|. If it is true, the object is
-  // created and registered, otherwise nullptr is returned.
-  // The returned object remains valid until RemoveForUserId or Shutdown is
-  // called.
-  base::WeakPtr<BulkPrintersCalculator> GetForProfile(
-      Profile* profile,
-      bool create_if_not_exists);
+  // If requested BulkPrintersCalculator does not exist, the object is
+  // created and registered. The returned object remains valid until
+  // RemoveForUserId or Shutdown is called.
+  base::WeakPtr<BulkPrintersCalculator> GetForProfile(Profile* profile);
 
   // Returns a WeakPtr to the BulkPrintersCalculator registered for the device.
-  // If requested BulkPrintersCalculator does not exist, the output depends on
-  // the given parameter |create_if_not_exists|. If it is true, the object is
-  // created and registered, otherwise nullptr is returned.
-  // The returned object remains valid until Shutdown is called.
-  base::WeakPtr<BulkPrintersCalculator> GetForDevice(bool create_if_not_exists);
+  // If requested BulkPrintersCalculator does not exist, the object is
+  // created and registered. The returned object remains valid until Shutdown is
+  // called.
+  base::WeakPtr<BulkPrintersCalculator> GetForDevice();
 
   // Deletes the BulkPrintersCalculator registered for |account_id|.
   void RemoveForUserId(const AccountId& account_id);
diff --git a/chrome/browser/chromeos/printing/calculators_policies_binder.cc b/chrome/browser/chromeos/printing/calculators_policies_binder.cc
index 3577ed92..8a5f474 100644
--- a/chrome/browser/chromeos/printing/calculators_policies_binder.cc
+++ b/chrome/browser/chromeos/printing/calculators_policies_binder.cc
@@ -60,8 +60,7 @@
       : settings_(settings), profile_(profile) {
     pref_change_registrar_.Init(profile->GetPrefs());
     // Bind device policies to corresponding instance of BulkPrintersCalculator.
-    device_printers_ = BulkPrintersCalculatorFactory::Get()->GetForDevice(
-        /*create_if_not_exists=*/false);
+    device_printers_ = BulkPrintersCalculatorFactory::Get()->GetForDevice();
     if (device_printers_ && ++(BindingsCount()[device_printers_.get()]) == 1) {
       BindSettings(kDeviceNativePrintersAccessMode,
                    &CalculatorsPoliciesBinderImpl::UpdateDeviceAccessMode);
@@ -71,9 +70,8 @@
                    &CalculatorsPoliciesBinderImpl::UpdateDeviceWhitelist);
     }
     // Bind user policies to corresponding instance of BulkPrintersCalculator.
-    user_printers_ = BulkPrintersCalculatorFactory::Get()->GetForProfile(
-        profile,
-        /*create_if_not_exists=*/false);
+    user_printers_ =
+        BulkPrintersCalculatorFactory::Get()->GetForProfile(profile);
     if (user_printers_ && ++(BindingsCount()[user_printers_.get()]) == 1) {
       BindPref(prefs::kRecommendedNativePrintersAccessMode,
                &CalculatorsPoliciesBinderImpl::UpdateUserAccessMode);
diff --git a/chrome/browser/chromeos/printing/enterprise_printers_provider.cc b/chrome/browser/chromeos/printing/enterprise_printers_provider.cc
index 9610922..d96fb78 100644
--- a/chrome/browser/chromeos/printing/enterprise_printers_provider.cc
+++ b/chrome/browser/chromeos/printing/enterprise_printers_provider.cc
@@ -49,16 +49,14 @@
     // Binds instances of BulkPrintersCalculator to policies.
     policies_binder_ = CalculatorsPoliciesBinder::Create(settings, profile);
     // Get instance of BulkPrintersCalculator for device policies.
-    device_printers_ = BulkPrintersCalculatorFactory::Get()->GetForDevice(
-        /*create_if_not_exists=*/false);
+    device_printers_ = BulkPrintersCalculatorFactory::Get()->GetForDevice();
     if (device_printers_) {
       device_printers_->AddObserver(this);
       RecalculateCompleteFlagForDevicePrinters();
     }
     // Get instance of BulkPrintersCalculator for user policies.
-    user_printers_ = BulkPrintersCalculatorFactory::Get()->GetForProfile(
-        profile,
-        /*create_if_not_exists=*/false);
+    user_printers_ =
+        BulkPrintersCalculatorFactory::Get()->GetForProfile(profile);
     if (user_printers_) {
       user_printers_->AddObserver(this);
       RecalculateCompleteFlagForUserPrinters();
diff --git a/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_api_unittest.cc b/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_api_unittest.cc
index bafb52e..fdbd0c3 100644
--- a/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_api_unittest.cc
+++ b/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_api_unittest.cc
@@ -101,7 +101,7 @@
   TestingBrowserProcess::GetGlobal()->SetSafeBrowsingService(
       safe_browsing_service);
   g_browser_process->safe_browsing_service()->Initialize();
-  safe_browsing_service->AddPrefService(profile()->GetPrefs());
+  safe_browsing_service->OnProfileAdded(profile());
 }
 
 void SafeBrowsingPrivateApiUnitTest::TearDown() {
diff --git a/chrome/browser/extensions/api/tabs/tabs_util_chromeos.cc b/chrome/browser/extensions/api/tabs/tabs_util_chromeos.cc
index 34f303f..9a4b177 100644
--- a/chrome/browser/extensions/api/tabs/tabs_util_chromeos.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_util_chromeos.cc
@@ -9,8 +9,8 @@
 #include "ash/public/cpp/window_properties.h"
 #include "base/metrics/histogram_macros.h"
 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/assistant/assistant_util.h"
 #include "chrome/browser/ui/ash/chrome_screenshot_grabber.h"
 #include "chrome/browser/ui/browser.h"
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index b4a42dd..ba1e866 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -944,6 +944,11 @@
     "expiry_milestone": 76
   },
   {
+    "name": "enable-aura-tooltips-on-windows",
+    "owners": [ "cliffsmo" ],
+    "expiry_milestone": 78
+  },
+  {
     "name": "enable-autofill-account-wallet-storage",
     "owners": [ "treib", "jsaul@google.com", "butter-team@google.com" ],
     "expiry_milestone": 81
@@ -3449,6 +3454,11 @@
     "expiry_milestone": 82
   },
   {
+    "name": "webxr-ar-dom-overlay",
+    "owners": [ "//third_party/blink/renderer/modules/xr/OWNERS", "xr-dev@chromium.org" ],
+    "expiry_milestone": 81
+  },
+  {
     "name": "webxr-ar-module",
     "owners": [ "//third_party/blink/renderer/modules/xr/OWNERS", "xr-dev@chromium.org" ],
     "expiry_milestone": 82
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 64bf5c2..bfdf7fd 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -2266,6 +2266,10 @@
     "Enables access to Augmented Reality features defined in the WebXR AR "
     "Module";
 
+const char kWebXrArDOMOverlayName[] = "WebXR AR DOM Overlay";
+const char kWebXrArDOMOverlayDescription[] =
+    "Enables experimental use of a DOM overlay in WebXR AR sessions";
+
 const char kWebXrAnchorsName[] = "WebXR Anchors";
 const char kWebXrAnchorsDescription[] =
     "Enables access to anchors via WebXR API.";
@@ -3010,6 +3014,11 @@
 const char kD3D11VideoDecoderDescription[] =
     "Enables D3D11VideoDecoder for hardware accelerated video decoding.";
 
+const char kEnableAuraTooltipsOnWindowsName[] =
+    "Enable aura tooltips on Windows";
+const char kEnableAuraTooltipsOnWindowsDescription[] =
+    "Enables aura tooltips instead of the native comctl32 tooltips on Windows.";
+
 const char kEnableGpuAppcontainerName[] = "Enable GPU AppContainer Lockdown.";
 const char kEnableGpuAppcontainerDescription[] =
     "Enables the use of an AppContainer for the GPU sandboxed processes to "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 39689454..6079115 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1333,6 +1333,9 @@
 extern const char kWebXrArModuleName[];
 extern const char kWebXrArModuleDescription[];
 
+extern const char kWebXrArDOMOverlayName[];
+extern const char kWebXrArDOMOverlayDescription[];
+
 extern const char kWebXrHitTestName[];
 extern const char kWebXrHitTestDescription[];
 
@@ -1765,6 +1768,9 @@
 extern const char kD3D11VideoDecoderName[];
 extern const char kD3D11VideoDecoderDescription[];
 
+extern const char kEnableAuraTooltipsOnWindowsName[];
+extern const char kEnableAuraTooltipsOnWindowsDescription[];
+
 extern const char kEnableGpuAppcontainerName[];
 extern const char kEnableGpuAppcontainerDescription[];
 
diff --git a/chrome/browser/installable/installable_ambient_badge_infobar_delegate.cc b/chrome/browser/installable/installable_ambient_badge_infobar_delegate.cc
index d973b28e..0ec1864 100644
--- a/chrome/browser/installable/installable_ambient_badge_infobar_delegate.cc
+++ b/chrome/browser/installable/installable_ambient_badge_infobar_delegate.cc
@@ -23,12 +23,14 @@
     base::WeakPtr<Client> weak_client,
     const base::string16& app_name,
     const SkBitmap& primary_icon,
+    const bool is_primary_icon_maskable,
     const GURL& start_url) {
   InfoBarService::FromWebContents(web_contents)
       ->AddInfoBar(std::make_unique<InstallableAmbientBadgeInfoBar>(
           std::unique_ptr<InstallableAmbientBadgeInfoBarDelegate>(
               new InstallableAmbientBadgeInfoBarDelegate(
-                  weak_client, app_name, primary_icon, start_url))));
+                  weak_client, app_name, primary_icon, is_primary_icon_maskable,
+                  start_url))));
 }
 
 void InstallableAmbientBadgeInfoBarDelegate::AddToHomescreen() {
@@ -58,15 +60,21 @@
   return primary_icon_;
 }
 
+bool InstallableAmbientBadgeInfoBarDelegate::GetIsPrimaryIconMaskable() const {
+  return is_primary_icon_maskable_;
+}
+
 InstallableAmbientBadgeInfoBarDelegate::InstallableAmbientBadgeInfoBarDelegate(
     base::WeakPtr<Client> weak_client,
     const base::string16& app_name,
     const SkBitmap& primary_icon,
+    const bool is_primary_icon_maskable,
     const GURL& start_url)
     : infobars::InfoBarDelegate(),
       weak_client_(weak_client),
       app_name_(app_name),
       primary_icon_(primary_icon),
+      is_primary_icon_maskable_(is_primary_icon_maskable),
       start_url_(start_url) {}
 
 infobars::InfoBarDelegate::InfoBarIdentifier
diff --git a/chrome/browser/installable/installable_ambient_badge_infobar_delegate.h b/chrome/browser/installable/installable_ambient_badge_infobar_delegate.h
index c78da41..9263cd1 100644
--- a/chrome/browser/installable/installable_ambient_badge_infobar_delegate.h
+++ b/chrome/browser/installable/installable_ambient_badge_infobar_delegate.h
@@ -39,17 +39,21 @@
                      base::WeakPtr<Client> weak_client,
                      const base::string16& app_name,
                      const SkBitmap& primary_icon,
+                     const bool is_primary_icon_maskable,
+
                      const GURL& start_url);
 
   void AddToHomescreen();
   const base::string16 GetMessageText() const;
   const SkBitmap& GetPrimaryIcon() const;
+  bool GetIsPrimaryIconMaskable() const;
   const GURL& GetUrl() const { return start_url_; }
 
  private:
   InstallableAmbientBadgeInfoBarDelegate(base::WeakPtr<Client> weak_client,
                                          const base::string16& app_name,
                                          const SkBitmap& primary_icon,
+                                         const bool is_primary_icon_maskable,
                                          const GURL& start_url);
 
   // InfoBarDelegate overrides:
@@ -59,6 +63,7 @@
   base::WeakPtr<Client> weak_client_;
   const base::string16 app_name_;
   const SkBitmap primary_icon_;
+  const bool is_primary_icon_maskable_;
   const GURL& start_url_;
 
   DISALLOW_COPY_AND_ASSIGN(InstallableAmbientBadgeInfoBarDelegate);
diff --git a/chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.cc b/chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.cc
index 2ef9247..24c87d33 100644
--- a/chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.cc
+++ b/chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.cc
@@ -44,6 +44,9 @@
       action_suffix = "DismissWithIgnore";
       warning_dismissed = true;
       break;
+    case safety_tips::SafetyTipInteraction::kLearnMore:
+      action_suffix = "LearnMore";
+      break;
   }
   if (warning_dismissed) {
     base::UmaHistogramCustomTimes(
diff --git a/chrome/browser/lookalikes/safety_tips/safety_tip_infobar_delegate.cc b/chrome/browser/lookalikes/safety_tips/safety_tip_infobar_delegate.cc
index 28147b3..89fb95d 100644
--- a/chrome/browser/lookalikes/safety_tips/safety_tip_infobar_delegate.cc
+++ b/chrome/browser/lookalikes/safety_tips/safety_tip_infobar_delegate.cc
@@ -119,6 +119,5 @@
 }
 
 base::string16 SafetyTipInfoBarDelegate::GetDescriptionText() const {
-  return l10n_util::GetStringUTF16(
-      GetSafetyTipDescriptionId(safety_tip_status_));
+  return GetSafetyTipDescription(safety_tip_status_, suggested_url_);
 }
diff --git a/chrome/browser/lookalikes/safety_tips/safety_tip_ui.h b/chrome/browser/lookalikes/safety_tips/safety_tip_ui.h
index baa3260..f34a9518 100644
--- a/chrome/browser/lookalikes/safety_tips/safety_tip_ui.h
+++ b/chrome/browser/lookalikes/safety_tips/safety_tip_ui.h
@@ -19,7 +19,7 @@
 // Represents the different user interactions with a Safety Tip dialog.
 //
 // These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
+// numeric values should never be reused. Keep in sync with SafetyTipStatus.
 enum class SafetyTipInteraction {
   // The user dismissed the safety tip. Every time the user dismisses the
   // dialog, a histogram will be recorded once with this value, and again with a
@@ -33,7 +33,9 @@
   kDismissWithEsc = 3,
   kDismissWithClose = 4,
   kDismissWithIgnore = 5,
-  kMaxValue = kDismissWithIgnore,
+  // The user clicked the 'learn more' button.
+  kLearnMore = 6,
+  kMaxValue = kLearnMore,
 };
 
 // Shows Safety Tip UI using the specified information if it is not already
diff --git a/chrome/browser/lookalikes/safety_tips/safety_tip_ui_helper.cc b/chrome/browser/lookalikes/safety_tips/safety_tip_ui_helper.cc
index ea1b25f..238f63e 100644
--- a/chrome/browser/lookalikes/safety_tips/safety_tip_ui_helper.cc
+++ b/chrome/browser/lookalikes/safety_tips/safety_tip_ui_helper.cc
@@ -7,6 +7,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "build/build_config.h"
 #include "chrome/browser/ssl/security_state_tab_helper.h"
+#include "chrome/common/url_constants.h"
 #include "components/security_interstitials/core/common_string_util.h"
 #include "components/security_state/core/security_state.h"
 #include "components/strings/grit/components_strings.h"
@@ -40,6 +41,15 @@
   web_contents->OpenURL(params);
 }
 
+void OpenHelpCenter(content::WebContents* web_contents) {
+  RecordSafetyTipInteractionHistogram(web_contents,
+                                      SafetyTipInteraction::kLearnMore);
+  web_contents->OpenURL(content::OpenURLParams(
+      GURL(chrome::kSafetyTipHelpCenterURL), content::Referrer(),
+      WindowOpenDisposition::NEW_FOREGROUND_TAB, ui::PAGE_TRANSITION_LINK,
+      false /*is_renderer_initiated*/));
+}
+
 base::string16 GetSafetyTipTitle(
     security_state::SafetyTipStatus safety_tip_status,
     const GURL& url) {
@@ -48,10 +58,14 @@
       return l10n_util::GetStringUTF16(
           IDS_PAGE_INFO_SAFETY_TIP_BAD_REPUTATION_TITLE);
     case security_state::SafetyTipStatus::kLookalike:
+#if defined(OS_ANDROID)
+      return l10n_util::GetStringUTF16(IDS_SAFETY_TIP_ANDROID_LOOKALIKE_TITLE);
+#else
       return l10n_util::GetStringFUTF16(
           IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_TITLE,
           security_interstitials::common_string_util::GetFormattedHostName(
               url));
+#endif
     case security_state::SafetyTipStatus::kUnknown:
     case security_state::SafetyTipStatus::kNone:
       NOTREACHED();
@@ -61,33 +75,36 @@
   return base::string16();
 }
 
-int GetSafetyTipDescriptionId(security_state::SafetyTipStatus warning_type) {
+base::string16 GetSafetyTipDescription(
+    security_state::SafetyTipStatus warning_type,
+    const GURL& url) {
   switch (warning_type) {
     case security_state::SafetyTipStatus::kBadReputation:
-      return IDS_PAGE_INFO_SAFETY_TIP_BAD_REPUTATION_DESCRIPTION;
+      return l10n_util::GetStringUTF16(
+          IDS_PAGE_INFO_SAFETY_TIP_BAD_REPUTATION_DESCRIPTION);
     case security_state::SafetyTipStatus::kLookalike:
-      return IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_DESCRIPTION;
+      return l10n_util::GetStringFUTF16(
+          IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_DESCRIPTION,
+          security_interstitials::common_string_util::GetFormattedHostName(
+              url));
     case security_state::SafetyTipStatus::kNone:
     case security_state::SafetyTipStatus::kUnknown:
       NOTREACHED();
-      return 0;
   }
   NOTREACHED();
-  return 0;
+  return base::string16();
 }
 
 int GetSafetyTipLeaveButtonId(security_state::SafetyTipStatus warning_type) {
   switch (warning_type) {
 #if defined(OS_ANDROID)
     case security_state::SafetyTipStatus::kBadReputation:
-      return IDS_SAFETY_TIP_ANDROID_LEAVE_BUTTON;
     case security_state::SafetyTipStatus::kLookalike:
-      return IDS_SAFETY_TIP_ANDROID_GO_TO_SITE_BUTTON;
+      return IDS_SAFETY_TIP_ANDROID_LEAVE_BUTTON;
 #else
     case security_state::SafetyTipStatus::kBadReputation:
-      return IDS_PAGE_INFO_SAFETY_TIP_LEAVE_BUTTON;
     case security_state::SafetyTipStatus::kLookalike:
-      return IDS_PAGE_INFO_SAFETY_TIP_GO_TO_SITE_BUTTON;
+      return IDS_PAGE_INFO_SAFETY_TIP_LEAVE_BUTTON;
 #endif
     case security_state::SafetyTipStatus::kUnknown:
     case security_state::SafetyTipStatus::kNone:
diff --git a/chrome/browser/lookalikes/safety_tips/safety_tip_ui_helper.h b/chrome/browser/lookalikes/safety_tips/safety_tip_ui_helper.h
index 7485d2d..483818e 100644
--- a/chrome/browser/lookalikes/safety_tips/safety_tip_ui_helper.h
+++ b/chrome/browser/lookalikes/safety_tips/safety_tip_ui_helper.h
@@ -24,16 +24,23 @@
 void RecordSafetyTipInteractionHistogram(content::WebContents* web_contents,
                                          SafetyTipInteraction interaction);
 
-// Invoke action when 'leave site' button is clicked, and records a histogram.
+// Invokes action when 'leave site' button is clicked, and records a histogram.
 // Navigates to a safe URL, replacing the current page in the process.
 void LeaveSite(content::WebContents* web_contents, const GURL& safe_url);
 
+// Invoke action when 'Learn more' button is clicked, and records a histogram.
+// Navigates to the help center URL.
+void OpenHelpCenter(content::WebContents* web_contents);
+
 // Get the titles, descriptions, and button strings or IDs needed to describe
 // the applicable warning type.  Handles both Android and desktop warnings.
-// |url| is used in formatting some strings.
+// |url| is the suggested URL to navigate to, and is used in formatting some
+// strings.
 base::string16 GetSafetyTipTitle(security_state::SafetyTipStatus warning_type,
                                  const GURL& url);
-int GetSafetyTipDescriptionId(security_state::SafetyTipStatus warning_type);
+base::string16 GetSafetyTipDescription(
+    security_state::SafetyTipStatus warning_type,
+    const GURL& url);
 int GetSafetyTipLeaveButtonId(security_state::SafetyTipStatus warning_type);
 
 }  // namespace safety_tips
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc
index f531072..d0a2d47 100644
--- a/chrome/browser/policy/policy_browsertest.cc
+++ b/chrome/browser/policy/policy_browsertest.cc
@@ -226,7 +226,7 @@
 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
 #include "chrome/browser/chromeos/accessibility/magnification_manager.h"
 #include "chrome/browser/chromeos/accessibility/magnifier_type.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/drive/drive_integration_service.h"
 #include "chrome/browser/chromeos/login/test/js_checker.h"
 #include "chrome/browser/chromeos/note_taking_helper.h"
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index fd5b9c66..09949f2d 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -238,8 +238,8 @@
 #include "ash/public/cpp/ash_prefs.h"
 #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.h"
 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/policy/arc_policy_bridge.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_service.h"
 #include "chrome/browser/chromeos/child_accounts/screen_time_controller.h"
 #include "chrome/browser/chromeos/crostini/crostini_pref_names.h"
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
index ebadc1b..ecdc9b0 100644
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -171,7 +171,7 @@
 #include "chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.h"
 #include "chrome/browser/chromeos/android_sms/android_sms_service_factory.h"
 #include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h"
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
 #include "chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.h"
 #include "chrome/browser/chromeos/cryptauth/gcm_device_info_provider_impl.h"
 #include "chrome/browser/chromeos/device_sync/device_sync_client_factory.h"
diff --git a/chrome/browser/profiles/renderer_updater.cc b/chrome/browser/profiles/renderer_updater.cc
index e0e76c1a..07e6f8d 100644
--- a/chrome/browser/profiles/renderer_updater.cc
+++ b/chrome/browser/profiles/renderer_updater.cc
@@ -29,7 +29,8 @@
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
 
-// By default, JavaScript, images and autoplay are enabled in guest content.
+// By default, JavaScript, images and autoplay are enabled, and blockable mixed
+// content is blocked in guest content
 void GetGuestViewDefaultContentSettingRules(
     bool incognito,
     RendererContentSettingRules* rules) {
@@ -54,6 +55,11 @@
       base::Value::FromUniquePtrValue(
           content_settings::ContentSettingToValue(CONTENT_SETTING_BLOCK)),
       std::string(), incognito));
+  rules->mixed_content_rules.push_back(ContentSettingPatternSource(
+      ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(),
+      base::Value::FromUniquePtrValue(
+          content_settings::ContentSettingToValue(CONTENT_SETTING_BLOCK)),
+      std::string(), incognito));
 }
 
 #endif  // BUILDFLAG(ENABLE_EXTENSIONS)
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs
index b06bb83d..478dc922 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs
@@ -2088,3 +2088,18 @@
     mockFeedback.replay();
   });
 });
+
+TEST_F('ChromeVoxBackgroundTest', 'TableWithAriaRowCol', function() {
+  var mockFeedback = this.createMockFeedback();
+  this.runWithLoadedTree(function() {/*!
+    <div role="table">
+      <div role="row" aria-rowindex=3>
+        <div role="cell">test</div>
+      </div>
+    </div>
+  */}, function(root) {
+    mockFeedback.call(doCmd('fullyDescribe'))
+        .expectSpeech('test', 'row 3 column 1', 'Table , 1 by 1')
+        .replay();
+  });
+});
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js
index 81acba5..29075cf 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js
@@ -1492,10 +1492,10 @@
           } else {
             ruleStr.write(token);
             this.format_(
-                node, ` @cell_summary($if($ariaCellRowIndex, $ariaCellRowIndex,
-                    $tableCellRowIndex),
-                $if($ariaCellColumnIndex, $ariaCellColumnIndex,
-                     $tableCellColumnIndex))`,
+                node, `@cell_summary($if($tableCellAriaRowIndex,
+                               $tableCellAriaRowIndex, $tableCellRowIndex),
+                    $if($tableCellAriaColumnIndex, $tableCellAriaColumnIndex,
+                        $tableCellColumnIndex))`,
                 buff, ruleStr);
           }
         } else if (token == 'node') {
diff --git a/chrome/browser/resources/local_ntp/customize.js b/chrome/browser/resources/local_ntp/customize.js
index 5ac3fa5..c691b823 100644
--- a/chrome/browser/resources/local_ntp/customize.js
+++ b/chrome/browser/resources/local_ntp/customize.js
@@ -930,7 +930,7 @@
   if (tile.id === customize.IDS.BACKGROUNDS_DEFAULT_ICON) {
     preview.dataset.hasImage = false;
     preview.style.backgroundImage = '';
-    preview.style.backgroundColor = document.body.style.backgroundColor;
+    preview.style.backgroundColor = 'transparent';
   } else if (tile.id === customize.IDS.BACKGROUNDS_UPLOAD_ICON) {
     // No previews for uploaded images.
     return;
@@ -940,6 +940,9 @@
     const re = /w\d+\-h\d+/;
     preview.style.backgroundImage =
         tile.style.backgroundImage.replace(re, 'w1280-h720');
+    preview.dataset.attributionLine1 = tile.dataset.attributionLine1;
+    preview.dataset.attributionLine2 = tile.dataset.attributionLine2;
+    preview.dataset.attributionActionUrl = tile.dataset.attributionActionUrl;
   }
   background.style.opacity = 0;
   preview.style.opacity = 1;
diff --git a/chrome/browser/resources/local_ntp/local_ntp.css b/chrome/browser/resources/local_ntp/local_ntp.css
index 40de873..3aa33a8 100644
--- a/chrome/browser/resources/local_ntp/local_ntp.css
+++ b/chrome/browser/resources/local_ntp/local_ntp.css
@@ -1868,6 +1868,7 @@
   border: 1px solid rgb(var(--GG200-rgb));
   border-radius: 4px;
   display: none;
+  font-size: 13px;
   height: 64px;
   margin-bottom: 24px;
   max-width: 544px;
@@ -1882,7 +1883,6 @@
 
 #colors-theme.visible {
   display: flex;
-  font-size: small;
 }
 
 #colors-theme > * {
diff --git a/chrome/browser/resources/local_ntp/local_ntp.js b/chrome/browser/resources/local_ntp/local_ntp.js
index 2c3183c..22bda43 100644
--- a/chrome/browser/resources/local_ntp/local_ntp.js
+++ b/chrome/browser/resources/local_ntp/local_ntp.js
@@ -604,6 +604,12 @@
     // backgroundImage is in the form: url("actual url"). Remove everything
     // except the actual url.
     info.imageUrl = preview.style.backgroundImage.slice(5, -2);
+
+    if (preview.dataset.hasImage === 'true') {
+      info.attribution1 = preview.dataset.attributionLine1;
+      info.attribution2 = preview.dataset.attributionLine2;
+      info.attributionActionUrl = preview.dataset.attributionActionUrl;
+    }
   }
   return info;
 }
diff --git a/chrome/browser/resources/management/BUILD.gn b/chrome/browser/resources/management/BUILD.gn
index 82dfd3d..4e27e41 100644
--- a/chrome/browser/resources/management/BUILD.gn
+++ b/chrome/browser/resources/management/BUILD.gn
@@ -3,8 +3,10 @@
 # found in the LICENSE file.
 
 import("//third_party/closure_compiler/compile_js.gni")
+import("//tools/polymer/polymer.gni")
 
 js_type_check("closure_compile") {
+  is_polymer3 = true
   deps = [
     ":management_browser_proxy",
     ":management_ui",
@@ -13,15 +15,34 @@
 
 js_library("management_ui") {
   deps = [
-    "//ui/webui/resources/js:cr",
-    "//ui/webui/resources/js:i18n_behavior",
-    "//ui/webui/resources/js:load_time_data",
-    "//ui/webui/resources/js:web_ui_listener_behavior",
+    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
+    "//ui/webui/resources/js:i18n_behavior.m",
+    "//ui/webui/resources/js:load_time_data.m",
+    "//ui/webui/resources/js:web_ui_listener_behavior.m",
   ]
 }
 
 js_library("management_browser_proxy") {
   deps = [
-    "//ui/webui/resources/js:cr",
+    "//ui/webui/resources/js:cr.m",
+  ]
+}
+
+polymer_modulizer("management_ui") {
+  js_file = "management_ui.js"
+  html_file = "management_ui.html"
+  html_type = "v3-ready"
+}
+
+polymer_modulizer("icons") {
+  js_file = "icons.js"
+  html_file = "icons.html"
+  html_type = "v3-ready"
+}
+
+group("polymer3_elements") {
+  deps = [
+    ":icons_module",
+    ":management_ui_module",
   ]
 }
diff --git a/chrome/browser/resources/management/icons.html b/chrome/browser/resources/management/icons.html
index 2311bf2..e6a0757 100644
--- a/chrome/browser/resources/management/icons.html
+++ b/chrome/browser/resources/management/icons.html
@@ -1,9 +1,4 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-iconset-svg/iron-iconset-svg.html">
-
 <!-- Set of the management specific icons -->
-
 <iron-iconset-svg name="management" size="24">
   <svg>
     <defs>
diff --git a/chrome/browser/resources/management/icons.js b/chrome/browser/resources/management/icons.js
new file mode 100644
index 0000000..02ab37aa
--- /dev/null
+++ b/chrome/browser/resources/management/icons.js
@@ -0,0 +1,10 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'chrome://resources/polymer/v3_0/iron-iconset-svg/iron-iconset-svg.js';
+
+import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+const template = html`{__html_template__}`;
+document.head.appendChild(template.content);
diff --git a/chrome/browser/resources/management/management.html b/chrome/browser/resources/management/management.html
index 8b4f155..aea7f12b 100644
--- a/chrome/browser/resources/management/management.html
+++ b/chrome/browser/resources/management/management.html
@@ -7,7 +7,6 @@
 
   <link rel="stylesheet" href="chrome://resources/css/md_colors.css">
   <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css">
-  <link rel="import" href="chrome://resources/html/cr.html">
   <style>
     html {
       background: var(--md-background-color);
@@ -30,8 +29,7 @@
     }
   </style>
 
-  <link rel="import" href="management_ui.html">
-  <script src="strings.js"></script>
+  <script type="module" src="management_ui.js"></script>
 </head>
 <body>
   <management-ui></management-ui>
diff --git a/chrome/browser/resources/management/management_browser_proxy.html b/chrome/browser/resources/management/management_browser_proxy.html
deleted file mode 100644
index abaff42..0000000
--- a/chrome/browser/resources/management/management_browser_proxy.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<link rel="import" href="chrome://resources/html/cr.html">
-<script src="management_browser_proxy.js"></script>
diff --git a/chrome/browser/resources/management/management_browser_proxy.js b/chrome/browser/resources/management/management_browser_proxy.js
index a86bbaa7..9c56140 100644
--- a/chrome/browser/resources/management/management_browser_proxy.js
+++ b/chrome/browser/resources/management/management_browser_proxy.js
@@ -2,166 +2,156 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-cr.define('management', function() {
-  /**
-   * @typedef {{
-   *   name: string,
-   *   permissions: !Array<string>
-   * }}
-   */
-  let Extension;
+import {addSingletonGetter, sendWithPromise} from 'chrome://resources/js/cr.m.js';
 
-  /** @enum {string} */
-  const ReportingType = {
-    SECURITY: 'security',
-    DEVICE: 'device',
-    USER: 'user',
-    USER_ACTIVITY: 'user-activity',
-    EXTENSIONS: 'extensions'
-  };
+/**
+ * @typedef {{
+ *   name: string,
+ *   permissions: !Array<string>
+ * }}
+ */
+export let Extension;
 
-  /**
-   * @typedef {{
-   *   messageId: string,
-   *   reportingType: !management.ReportingType,
-   * }}
-   */
-  let BrowserReportingResponse;
+/** @enum {string} */
+export const ReportingType = {
+  SECURITY: 'security',
+  DEVICE: 'device',
+  USER: 'user',
+  USER_ACTIVITY: 'user-activity',
+  EXTENSIONS: 'extensions'
+};
 
-  /**
-   * @typedef {{
-   *   browserManagementNotice: string,
-   *   extensionReportingTitle: string,
-   *   pageSubtitle: string,
-   *   managed: boolean,
-   *   overview: string,
-   *   customerLogo: string,
-   *   threatProtectionDescription: string
-   * }}
-   */
-  let ManagedDataResponse;
+/**
+ * @typedef {{
+ *   messageId: string,
+ *   reportingType: !ReportingType,
+ * }}
+ */
+export let BrowserReportingResponse;
 
-  /**
-   * @typedef {{
-   *  title: string,
-   *  permission: string
-   * }}
-   */
-  let ThreatProtectionPermission;
+/**
+ * @typedef {{
+ *   browserManagementNotice: string,
+ *   extensionReportingTitle: string,
+ *   pageSubtitle: string,
+ *   managed: boolean,
+ *   overview: string,
+ *   customerLogo: string,
+ *   threatProtectionDescription: string
+ * }}
+ */
+let ManagedDataResponse;
 
-  /**
-   * @typedef {{
-   *   info: !Array<!ThreatProtectionPermission>,
-   *   description: string
-   * }}
-   */
-  let ThreatProtectionInfo;
+/**
+ * @typedef {{
+ *  title: string,
+ *  permission: string
+ * }}
+ */
+let ThreatProtectionPermission;
+
+/**
+ * @typedef {{
+ *   info: !Array<!ThreatProtectionPermission>,
+ *   description: string
+ * }}
+ */
+export let ThreatProtectionInfo;
+
+// <if expr="chromeos">
+/**
+ * @enum {string} Look at ToJSDeviceReportingType usage in
+ *    management_ui_handler.cc for more details.
+ */
+export const DeviceReportingType = {
+  SUPERVISED_USER: 'supervised user',
+  DEVICE_ACTIVITY: 'device activity',
+  STATISTIC: 'device statistics',
+  DEVICE: 'device',
+  LOGS: 'logs',
+  PRINT: 'print',
+  CROSTINI: 'crostini'
+};
+
+
+/**
+ * @typedef {{
+ *   messageId: string,
+ *   reportingType: !DeviceReportingType,
+ * }}
+ */
+export let DeviceReportingResponse;
+// </if>
+
+/** @interface */
+export class ManagementBrowserProxy {
+  /** @return {!Promise<!Array<!Extension>>} */
+  getExtensions() {}
 
   // <if expr="chromeos">
   /**
-   * @enum {string} Look at ToJSDeviceReportingType usage in
-   *    management_ui_handler.cc for more details.
+   * @return {!Promise<boolean>} Boolean describing trust root configured
+   *     or not.
    */
-  const DeviceReportingType = {
-    SUPERVISED_USER: 'supervised user',
-    DEVICE_ACTIVITY: 'device activity',
-    STATISTIC: 'device statistics',
-    DEVICE: 'device',
-    LOGS: 'logs',
-    PRINT: 'print',
-    CROSTINI: 'crostini'
-  };
-
+  getLocalTrustRootsInfo() {}
 
   /**
-   * @typedef {{
-   *   messageId: string,
-   *   reportingType: !management.DeviceReportingType,
-   * }}
+   * @return {!Promise<!Array<DeviceReportingResponse>>} List of
+   *     items to display in device reporting section.
    */
-  let DeviceReportingResponse;
+  getDeviceReportingInfo() {}
   // </if>
 
-  /** @interface */
-  class ManagementBrowserProxy {
-    /** @return {!Promise<!Array<!management.Extension>>} */
-    getExtensions() {}
+  /** @return {!Promise<!ManagedDataResponse>} */
+  getContextualManagedData() {}
 
-    // <if expr="chromeos">
-    /**
-     * @return {!Promise<boolean>} Boolean describing trust root configured
-     *     or not.
-     */
-    getLocalTrustRootsInfo() {}
+  /** @return {!Promise<!ThreatProtectionInfo>} */
+  getThreatProtectionInfo() {}
 
-    /**
-     * @return {!Promise<!Array<management.DeviceReportingResponse>>} List of
-     *     items to display in device reporting section.
-     */
-    getDeviceReportingInfo() {}
-    // </if>
+  /**
+   * @return {!Promise<!Array<!BrowserReportingResponse>>} The list
+   *     of browser reporting info messages.
+   */
+  initBrowserReportingInfo() {}
+}
 
-    /** @return {!Promise<!management.ManagedDataResponse>} */
-    getContextualManagedData() {}
-
-    /** @return {!Promise<!management.ThreatProtectionInfo>} */
-    getThreatProtectionInfo() {}
-
-    /**
-     * @return {!Promise<!Array<!management.BrowserReportingResponse>>} The list
-     *     of browser reporting info messages.
-     */
-    initBrowserReportingInfo() {}
+/** @implements {ManagementBrowserProxy} */
+export class ManagementBrowserProxyImpl {
+  /** @override */
+  getExtensions() {
+    return sendWithPromise('getExtensions');
   }
 
-  /** @implements {management.ManagementBrowserProxy} */
-  class ManagementBrowserProxyImpl {
-    /** @override */
-    getExtensions() {
-      return cr.sendWithPromise('getExtensions');
-    }
-
-    // <if expr="chromeos">
-    /** @override */
-    getLocalTrustRootsInfo() {
-      return cr.sendWithPromise('getLocalTrustRootsInfo');
-    }
-
-    /** @override */
-    getDeviceReportingInfo() {
-      return cr.sendWithPromise('getDeviceReportingInfo');
-    }
-    // </if>
-
-    /** @override */
-    getContextualManagedData() {
-      return cr.sendWithPromise('getContextualManagedData');
-    }
-
-    /** @override */
-    getThreatProtectionInfo() {
-      return cr.sendWithPromise('getThreatProtectionInfo');
-    }
-
-    /** @override */
-    initBrowserReportingInfo() {
-      return cr.sendWithPromise('initBrowserReportingInfo');
-    }
+  // <if expr="chromeos">
+  /** @override */
+  getLocalTrustRootsInfo() {
+    return sendWithPromise('getLocalTrustRootsInfo');
   }
 
-  cr.addSingletonGetter(ManagementBrowserProxyImpl);
+  /** @override */
+  getDeviceReportingInfo() {
+    return sendWithPromise('getDeviceReportingInfo');
+  }
+  // </if>
 
-  return {
-    BrowserReportingResponse: BrowserReportingResponse,
-    // <if expr="chromeos">
-    DeviceReportingResponse: DeviceReportingResponse,
-    DeviceReportingType: DeviceReportingType,
-    // </if>
-    Extension: Extension,
-    ManagedDataResponse: ManagedDataResponse,
-    ManagementBrowserProxyImpl: ManagementBrowserProxyImpl,
-    ManagementBrowserProxy: ManagementBrowserProxy,
-    ReportingType: ReportingType,
-    ThreatProtectionInfo: ThreatProtectionInfo,
-  };
-});
+  /** @override */
+  getContextualManagedData() {
+    return sendWithPromise('getContextualManagedData');
+  }
+
+  /** @override */
+  getThreatProtectionInfo() {
+    return sendWithPromise('getThreatProtectionInfo');
+  }
+
+  /** @override */
+  initBrowserReportingInfo() {
+    return sendWithPromise('initBrowserReportingInfo');
+  }
+}
+
+addSingletonGetter(ManagementBrowserProxyImpl);
+
+// Export |ManagementBrowserProxyImpl| on |window| so that it can be accessed by
+// management_ui_browsertest.cc
+window.ManagementBrowserProxyImpl = ManagementBrowserProxyImpl;
diff --git a/chrome/browser/resources/management/management_ui.html b/chrome/browser/resources/management/management_ui.html
index f52326d..93ecc899 100644
--- a/chrome/browser/resources/management/management_ui.html
+++ b/chrome/browser/resources/management/management_ui.html
@@ -1,20 +1,4 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
 
-<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_icons_css.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_page_host_style_css.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_toolbar/cr_toolbar.html">
-<link rel="import" href="chrome://resources/cr_elements/hidden_style_css.html">
-<link rel="import" href="chrome://resources/cr_elements/icons.html">
-<link rel="import" href="chrome://resources/cr_elements/shared_style_css.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="chrome://resources/html/load_time_data.html">
-<link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
-<link rel="import" href="icons.html">
-<link rel="import" href="management_browser_proxy.html">
-
-<dom-module id="management-ui">
-  <template>
     <style include="cr-icons cr-hidden-style cr-page-host-style
         cr-shared-style">
       :host {
@@ -324,6 +308,3 @@
         </div>
       </div>
     </main>
-  </template>
-  <script src="management_ui.js"></script>
-</dom-module>
diff --git a/chrome/browser/resources/management/management_ui.js b/chrome/browser/resources/management/management_ui.js
index a04d5ed..fe3aa23e 100644
--- a/chrome/browser/resources/management/management_ui.js
+++ b/chrome/browser/resources/management/management_ui.js
@@ -2,294 +2,308 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-cr.define('management', function() {
-  /**
-   * @typedef {{
-   *   messageIds: !Array<string>,
-   *   icon: string,
-   * }}
-   */
-  let BrowserReportingData;
+import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.m.js';
+import 'chrome://resources/cr_elements/cr_icons_css.m.js';
+import 'chrome://resources/cr_elements/cr_page_host_style_css.m.js';
+import 'chrome://resources/cr_elements/cr_toolbar/cr_toolbar.m.js';
+import 'chrome://resources/cr_elements/hidden_style_css.m.js';
+import 'chrome://resources/cr_elements/icons.m.js';
+import 'chrome://resources/cr_elements/shared_style_css.m.js';
+import './icons.js';
 
-  Polymer({
-    is: 'management-ui',
+import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {WebUIListenerBehavior} from 'chrome://resources/js/web_ui_listener_behavior.m.js';
+import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
-    behaviors: [
-      I18nBehavior,
-      WebUIListenerBehavior,
-    ],
+import {BrowserReportingResponse, Extension, ManagementBrowserProxy, ManagementBrowserProxyImpl, ReportingType, ThreatProtectionInfo} from './management_browser_proxy.js';
+// <if expr="chromeos">
+import {DeviceReportingResponse, DeviceReportingType} from './management_browser_proxy.js';
+// </if>
 
-    properties: {
-      /**
-       * List of messages related to browser reporting.
-       * @private {?Array<!management.BrowserReportingData>}
-       */
-      browserReportingInfo_: Array,
+/**
+ * @typedef {{
+ *   messageIds: !Array<string>,
+ *   icon: string,
+ * }}
+ */
+let BrowserReportingData;
 
-      /**
-       * List of messages related to browser reporting.
-       * @private {?Array<!management.Extension>}
-       */
-      extensions_: Array,
+Polymer({
+  is: 'management-ui',
 
-      // <if expr="chromeos">
-      /**
-       * List of messages related to device reporting.
-       * @private {?Array<!management.DeviceReportingResponse>}
-       */
-      deviceReportingInfo_: Array,
+  _template: html`{__html_template__}`,
 
-      /**
-       * Message stating if the Trust Roots are configured.
-       * @private
-       */
-      localTrustRoots_: String,
+  behaviors: [
+    I18nBehavior,
+    WebUIListenerBehavior,
+  ],
 
-      /** @private */
-      customerLogo_: String,
-
-      /** @private */
-      managementOverview_: String,
-
-      // </if>
-
-      /** @private */
-      subtitle_: String,
-
-      // <if expr="not chromeos">
-      /** @private */
-      managementNoticeHtml_: String,
-      // </if>
-
-      /** @private */
-      managed_: Boolean,
-
-      /** @private */
-      extensionReportingSubtitle_: String,
-
-      /** @private {!management.ThreatProtectionInfo} */
-      threatProtectionInfo_: Object,
-    },
-
-    /** @private {?management.ManagementBrowserProxy} */
-    browserProxy_: null,
-
-    /** @override */
-    attached() {
-      document.documentElement.classList.remove('loading');
-      this.browserProxy_ = management.ManagementBrowserProxyImpl.getInstance();
-      this.updateManagedFields_();
-      this.initBrowserReportingInfo_();
-      this.getThreatProtectionInfo_();
-
-      this.addWebUIListener(
-          'browser-reporting-info-updated',
-          reportingInfo => this.onBrowserReportingInfoReceived_(reportingInfo));
-
-      this.addWebUIListener('managed_data_changed', () => {
-        this.updateManagedFields_();
-      });
-
-      this.addWebUIListener(
-          'threat-protection-info-updated',
-          info => this.threatProtectionInfo_ = info);
-
-      this.getExtensions_();
-      // <if expr="chromeos">
-      this.getDeviceReportingInfo_();
-      this.getLocalTrustRootsInfo_();
-      // </if>
-    },
-
-    /** @private */
-    initBrowserReportingInfo_() {
-      this.browserProxy_.initBrowserReportingInfo().then(
-          reportingInfo => this.onBrowserReportingInfoReceived_(reportingInfo));
-    },
+  properties: {
+    /**
+     * List of messages related to browser reporting.
+     * @private {?Array<!BrowserReportingData>}
+     */
+    browserReportingInfo_: Array,
 
     /**
-     * @param {!Array<!management.BrowserReportingResponse>} reportingInfo
-     * @private
+     * List of messages related to browser reporting.
+     * @private {?Array<!Extension>}
      */
-    onBrowserReportingInfoReceived_(reportingInfo) {
-      const reportingInfoMap = reportingInfo.reduce((info, response) => {
-        info[response.reportingType] = info[response.reportingType] || {
-          icon: this.getIconForReportingType_(response.reportingType),
-          messageIds: []
-        };
-        info[response.reportingType].messageIds.push(response.messageId);
-        return info;
-      }, {});
-
-      const reportingTypeOrder = {
-        [management.ReportingType.SECURITY]: 1,
-        [management.ReportingType.EXTENSIONS]: 2,
-        [management.ReportingType.USER]: 3,
-        [management.ReportingType.USER_ACTIVITY]: 4,
-        [management.ReportingType.DEVICE]: 5,
-      };
-
-      this.browserReportingInfo_ =
-          Object.keys(reportingInfoMap)
-              .sort((a, b) => reportingTypeOrder[a] - reportingTypeOrder[b])
-              .map(reportingType => reportingInfoMap[reportingType]);
-    },
-
-    /** @private */
-    getExtensions_() {
-      this.browserProxy_.getExtensions().then(extensions => {
-        this.extensions_ = extensions;
-      });
-    },
-
-    /** @private */
-    getThreatProtectionInfo_() {
-      this.browserProxy_.getThreatProtectionInfo().then(info => {
-        this.threatProtectionInfo_ = info;
-      });
-    },
-
-    /**
-     * @return {boolean} True if there is threat protection info to show.
-     * @private
-     */
-    showThreatProtectionInfo_() {
-      return !!this.threatProtectionInfo_ &&
-          this.threatProtectionInfo_.info.length > 0;
-    },
+    extensions_: Array,
 
     // <if expr="chromeos">
-    /** @private */
-    getLocalTrustRootsInfo_() {
-      this.browserProxy_.getLocalTrustRootsInfo().then(trustRootsConfigured => {
-        this.localTrustRoots_ = trustRootsConfigured ?
-            loadTimeData.getString('managementTrustRootsConfigured') :
-            '';
-      });
-    },
-
-    /** @private */
-    getDeviceReportingInfo_() {
-      this.browserProxy_.getDeviceReportingInfo().then(reportingInfo => {
-        this.deviceReportingInfo_ = reportingInfo;
-      });
-    },
+    /**
+     * List of messages related to device reporting.
+     * @private {?Array<!DeviceReportingResponse>}
+     */
+    deviceReportingInfo_: Array,
 
     /**
-     * @return {boolean} True of there are device reporting info to show.
+     * Message stating if the Trust Roots are configured.
      * @private
      */
-    showDeviceReportingInfo_() {
-      return !!this.deviceReportingInfo_ &&
-          this.deviceReportingInfo_.length > 0;
-    },
+    localTrustRoots_: String,
 
-    /**
-     * @param {management.DeviceReportingType} reportingType
-     * @return {string} The associated icon.
-     * @private
-     */
-    getIconForDeviceReportingType_(reportingType) {
-      switch (reportingType) {
-        case management.DeviceReportingType.SUPERVISED_USER:
-          return 'management:supervised-user';
-        case management.DeviceReportingType.DEVICE_ACTIVITY:
-          return 'management:timelapse';
-        case management.DeviceReportingType.STATISTIC:
-          return 'management:bar-chart';
-        case management.DeviceReportingType.DEVICE:
-          return 'cr:computer';
-        case management.DeviceReportingType.LOGS:
-          return 'management:report';
-        case management.DeviceReportingType.PRINT:
-          return 'cr:print';
-        case management.DeviceReportingType.CROSTINI:
-          return 'management:linux';
-        default:
-          return 'cr:computer';
-      }
-    },
+    /** @private */
+    customerLogo_: String,
+
+    /** @private */
+    managementOverview_: String,
+
     // </if>
 
-    /**
-     * @return {boolean} True of there are browser reporting info to show.
-     * @private
-     */
-    showBrowserReportingInfo_() {
-      return !!this.browserReportingInfo_ &&
-          this.browserReportingInfo_.length > 0;
-    },
+    /** @private */
+    subtitle_: String,
 
-    /**
-     * @return {boolean} True of there are extension reporting info to show.
-     * @private
-     */
-    showExtensionReportingInfo_() {
-      return !!this.extensions_ && this.extensions_.length > 0;
-    },
-
-    /**
-     * @param {management.ReportingType} reportingType
-     * @returns {string} The associated icon.
-     * @private
-     */
-    getIconForReportingType_(reportingType) {
-      switch (reportingType) {
-        case management.ReportingType.SECURITY:
-          return 'cr:security';
-        case management.ReportingType.DEVICE:
-          return 'cr:computer';
-        case management.ReportingType.EXTENSIONS:
-          return 'cr:extension';
-        case management.ReportingType.USER:
-          return 'management:account-circle';
-        case management.ReportingType.USER_ACTIVITY:
-          return 'management:public';
-        default:
-          return 'cr:security';
-      }
-    },
-
-    /**
-     * Handles the 'search-changed' event fired from the toolbar.
-     * Redirects to the settings page initialized the the current
-     * search query.
-     * @param {!CustomEvent<string>} e
-     * @private
-     */
-    onSearchChanged_: function(e) {
-      const query = e.detail;
-      window.location.href =
-          `chrome://settings?search=${encodeURIComponent(query)}`;
-    },
+    // <if expr="not chromeos">
+    /** @private */
+    managementNoticeHtml_: String,
+    // </if>
 
     /** @private */
-    onTapBack_() {
-      if (history.length > 1) {
-        history.back();
-      } else {
-        window.location.href = 'chrome://settings/help';
-      }
-    },
+    managed_: Boolean,
 
     /** @private */
-    updateManagedFields_() {
-      this.browserProxy_.getContextualManagedData().then(data => {
-        this.managed_ = data.managed;
-        this.extensionReportingSubtitle_ = data.extensionReportingTitle;
-        this.subtitle_ = data.pageSubtitle;
-        // <if expr="chromeos">
-        this.customerLogo_ = data.customerLogo;
-        this.managementOverview_ = data.overview;
-        // </if>
-        // <if expr="not chromeos">
-        this.managementNoticeHtml_ = data.browserManagementNotice;
-        // </if>
-      });
-    },
-  });
+    extensionReportingSubtitle_: String,
 
-  return {
-    BrowserReportingData: BrowserReportingData,
-  };
+    /** @private {!ThreatProtectionInfo} */
+    threatProtectionInfo_: Object,
+  },
+
+  /** @private {?ManagementBrowserProxy} */
+  browserProxy_: null,
+
+  /** @override */
+  attached() {
+    document.documentElement.classList.remove('loading');
+    this.browserProxy_ = ManagementBrowserProxyImpl.getInstance();
+    this.updateManagedFields_();
+    this.initBrowserReportingInfo_();
+    this.getThreatProtectionInfo_();
+
+    this.addWebUIListener(
+        'browser-reporting-info-updated',
+        reportingInfo => this.onBrowserReportingInfoReceived_(reportingInfo));
+
+    this.addWebUIListener('managed_data_changed', () => {
+      this.updateManagedFields_();
+    });
+
+    this.addWebUIListener(
+        'threat-protection-info-updated',
+        info => this.threatProtectionInfo_ = info);
+
+    this.getExtensions_();
+    // <if expr="chromeos">
+    this.getDeviceReportingInfo_();
+    this.getLocalTrustRootsInfo_();
+    // </if>
+  },
+
+  /** @private */
+  initBrowserReportingInfo_() {
+    this.browserProxy_.initBrowserReportingInfo().then(
+        reportingInfo => this.onBrowserReportingInfoReceived_(reportingInfo));
+  },
+
+  /**
+   * @param {!Array<!BrowserReportingResponse>} reportingInfo
+   * @private
+   */
+  onBrowserReportingInfoReceived_(reportingInfo) {
+    const reportingInfoMap = reportingInfo.reduce((info, response) => {
+      info[response.reportingType] = info[response.reportingType] || {
+        icon: this.getIconForReportingType_(response.reportingType),
+        messageIds: []
+      };
+      info[response.reportingType].messageIds.push(response.messageId);
+      return info;
+    }, {});
+
+    const reportingTypeOrder = {
+      [ReportingType.SECURITY]: 1,
+      [ReportingType.EXTENSIONS]: 2,
+      [ReportingType.USER]: 3,
+      [ReportingType.USER_ACTIVITY]: 4,
+      [ReportingType.DEVICE]: 5,
+    };
+
+    this.browserReportingInfo_ =
+        Object.keys(reportingInfoMap)
+            .sort((a, b) => reportingTypeOrder[a] - reportingTypeOrder[b])
+            .map(reportingType => reportingInfoMap[reportingType]);
+  },
+
+  /** @private */
+  getExtensions_() {
+    this.browserProxy_.getExtensions().then(extensions => {
+      this.extensions_ = extensions;
+    });
+  },
+
+  /** @private */
+  getThreatProtectionInfo_() {
+    this.browserProxy_.getThreatProtectionInfo().then(info => {
+      this.threatProtectionInfo_ = info;
+    });
+  },
+
+  /**
+   * @return {boolean} True if there is threat protection info to show.
+   * @private
+   */
+  showThreatProtectionInfo_() {
+    return !!this.threatProtectionInfo_ &&
+        this.threatProtectionInfo_.info.length > 0;
+  },
+
+  // <if expr="chromeos">
+  /** @private */
+  getLocalTrustRootsInfo_() {
+    this.browserProxy_.getLocalTrustRootsInfo().then(trustRootsConfigured => {
+      this.localTrustRoots_ = trustRootsConfigured ?
+          loadTimeData.getString('managementTrustRootsConfigured') :
+          '';
+    });
+  },
+
+  /** @private */
+  getDeviceReportingInfo_() {
+    this.browserProxy_.getDeviceReportingInfo().then(reportingInfo => {
+      this.deviceReportingInfo_ = reportingInfo;
+    });
+  },
+
+  /**
+   * @return {boolean} True of there are device reporting info to show.
+   * @private
+   */
+  showDeviceReportingInfo_() {
+    return !!this.deviceReportingInfo_ && this.deviceReportingInfo_.length > 0;
+  },
+
+  /**
+   * @param {DeviceReportingType} reportingType
+   * @return {string} The associated icon.
+   * @private
+   */
+  getIconForDeviceReportingType_(reportingType) {
+    switch (reportingType) {
+      case DeviceReportingType.SUPERVISED_USER:
+        return 'management:supervised-user';
+      case DeviceReportingType.DEVICE_ACTIVITY:
+        return 'management:timelapse';
+      case DeviceReportingType.STATISTIC:
+        return 'management:bar-chart';
+      case DeviceReportingType.DEVICE:
+        return 'cr:computer';
+      case DeviceReportingType.LOGS:
+        return 'management:report';
+      case DeviceReportingType.PRINT:
+        return 'cr:print';
+      case DeviceReportingType.CROSTINI:
+        return 'management:linux';
+      default:
+        return 'cr:computer';
+    }
+  },
+  // </if>
+
+  /**
+   * @return {boolean} True of there are browser reporting info to show.
+   * @private
+   */
+  showBrowserReportingInfo_() {
+    return !!this.browserReportingInfo_ &&
+        this.browserReportingInfo_.length > 0;
+  },
+
+  /**
+   * @return {boolean} True of there are extension reporting info to show.
+   * @private
+   */
+  showExtensionReportingInfo_() {
+    return !!this.extensions_ && this.extensions_.length > 0;
+  },
+
+  /**
+   * @param {ReportingType} reportingType
+   * @returns {string} The associated icon.
+   * @private
+   */
+  getIconForReportingType_(reportingType) {
+    switch (reportingType) {
+      case ReportingType.SECURITY:
+        return 'cr:security';
+      case ReportingType.DEVICE:
+        return 'cr:computer';
+      case ReportingType.EXTENSIONS:
+        return 'cr:extension';
+      case ReportingType.USER:
+        return 'management:account-circle';
+      case ReportingType.USER_ACTIVITY:
+        return 'management:public';
+      default:
+        return 'cr:security';
+    }
+  },
+
+  /**
+   * Handles the 'search-changed' event fired from the toolbar.
+   * Redirects to the settings page initialized the the current
+   * search query.
+   * @param {!CustomEvent<string>} e
+   * @private
+   */
+  onSearchChanged_: function(e) {
+    const query = e.detail;
+    window.location.href =
+        `chrome://settings?search=${encodeURIComponent(query)}`;
+  },
+
+  /** @private */
+  onTapBack_() {
+    if (history.length > 1) {
+      history.back();
+    } else {
+      window.location.href = 'chrome://settings/help';
+    }
+  },
+
+  /** @private */
+  updateManagedFields_() {
+    this.browserProxy_.getContextualManagedData().then(data => {
+      this.managed_ = data.managed;
+      this.extensionReportingSubtitle_ = data.extensionReportingTitle;
+      this.subtitle_ = data.pageSubtitle;
+      // <if expr="chromeos">
+      this.customerLogo_ = data.customerLogo;
+      this.managementOverview_ = data.overview;
+      // </if>
+      // <if expr="not chromeos">
+      this.managementNoticeHtml_ = data.browserManagementNotice;
+      // </if>
+    });
+  },
 });
diff --git a/chrome/browser/resources/settings/about_page/about_page_browser_proxy.js b/chrome/browser/resources/settings/about_page/about_page_browser_proxy.js
index d73d4ba..1d5eeb72 100644
--- a/chrome/browser/resources/settings/about_page/about_page_browser_proxy.js
+++ b/chrome/browser/resources/settings/about_page/about_page_browser_proxy.js
@@ -27,15 +27,6 @@
 
 /**
  * @typedef {{
- *   arcVersion: string,
- *   osFirmware: string,
- *   osVersion: string,
- * }}
- */
-let VersionInfo;
-
-/**
- * @typedef {{
  *   version: (string|undefined),
  *   size: (string|undefined),
  * }}
@@ -208,9 +199,6 @@
     /** @return {!Promise<!ChannelInfo>} */
     getChannelInfo() {}
 
-    /** @return {!Promise<!VersionInfo>} */
-    getVersionInfo() {}
-
     /** @return {!Promise<?RegulatoryInfo>} */
     getRegulatoryInfo() {}
 
@@ -317,11 +305,6 @@
     }
 
     /** @override */
-    getVersionInfo() {
-      return cr.sendWithPromise('getVersionInfo');
-    }
-
-    /** @override */
     getRegulatoryInfo() {
       return cr.sendWithPromise('getRegulatoryInfo');
     }
diff --git a/chrome/browser/resources/settings/about_page/detailed_build_info.html b/chrome/browser/resources/settings/about_page/detailed_build_info.html
index ba6bbc5..fa1ae5f8 100644
--- a/chrome/browser/resources/settings/about_page/detailed_build_info.html
+++ b/chrome/browser/resources/settings/about_page/detailed_build_info.html
@@ -24,15 +24,6 @@
         width: 100%;
       }
     </style>
-    <div class="settings-box two-line single-column">
-      <div>$i18n{aboutPlatformLabel}</div>
-      <div class="secondary" id="osVersion">[[versionInfo_.osVersion]]</div>
-    </div>
-    <div class="settings-box two-line single-column"
-        hidden$="[[!shouldShowVersion_(versionInfo_.osFirmware)]]">
-      <div>$i18n{aboutFirmwareLabel}</div>
-      <div class="secondary" id="osFirmware">[[versionInfo_.osFirmware]]</div>
-    </div>
     <div class="settings-box two-line">
       <div class="start">
         <div>$i18n{aboutChannelLabel}</div>
@@ -64,29 +55,10 @@
       <div class="secondary" inner-h-t-m-l="[[eolMessageWithMonthAndYear]]">
       </div>
     </div>
-    <div class="settings-box two-line single-column"
-        hidden$="[[!shouldShowVersion_(versionInfo_.arcVersion)]]">
-      <div>$i18n{aboutArcVersionLabel}</div>
-      <div class="secondary" id="arcVersion">[[versionInfo_.arcVersion]]</div>
-    </div>
-    <div class="settings-box two-line single-column">
-      <div>V8</div>
-      <div class="secondary">$i18n{aboutJsEngineVersion}</div>
-    </div>
-    <div class="settings-box two-line single-column">
-      <div>$i18n{aboutUserAgentLabel}</div>
-      <div class="secondary">$i18n{aboutUserAgent}</div>
-    </div>
-    <div class="settings-box two-line single-column">
-      <div>$i18n{aboutCommandLineLabel}</div>
-      <div id="command-line" class="secondary">
-        [[i18n('aboutCommandLine')]]
-      </div>
-    </div>
-    <div class="settings-box two-line single-column">
-      <div>$i18n{aboutBuildDateLabel}</div>
-      <div class="secondary">$i18n{aboutBuildDate}</div>
-    </div>
+    <cr-link-row class="hr" label="$i18n{aboutBuildDetailsTitle}"
+        on-click="onBuildDetailsTap_" external>
+    </cr-link-row>
+    <div class="hr"></div>
   </template>
   <script src="detailed_build_info.js"></script>
 </dom-module>
diff --git a/chrome/browser/resources/settings/about_page/detailed_build_info.js b/chrome/browser/resources/settings/about_page/detailed_build_info.js
index c82072cd..ba47cf9 100644
--- a/chrome/browser/resources/settings/about_page/detailed_build_info.js
+++ b/chrome/browser/resources/settings/about_page/detailed_build_info.js
@@ -13,9 +13,6 @@
   behaviors: [I18nBehavior],
 
   properties: {
-    /** @private {!VersionInfo} */
-    versionInfo_: Object,
-
     /** @private */
     currentlyOnChannelText_: String,
 
@@ -35,11 +32,6 @@
   ready: function() {
     const browserProxy = settings.AboutPageBrowserProxyImpl.getInstance();
     browserProxy.pageReady();
-
-    browserProxy.getVersionInfo().then(versionInfo => {
-      this.versionInfo_ = versionInfo;
-    });
-
     this.updateChannelInfo_();
   },
 
@@ -56,15 +48,6 @@
   },
 
   /**
-   * @param {string} version
-   * @return {boolean}
-   * @private
-   */
-  shouldShowVersion_: function(version) {
-    return version.length > 0;
-  },
-
-  /**
    * @param {boolean} canChangeChannel
    * @return {string}
    * @private
@@ -98,6 +81,15 @@
     this.showChannelSwitcherDialog_ = true;
   },
 
+  /**
+   * @param {!Event} e
+   * @private
+   */
+  onBuildDetailsTap_: function(e) {
+    e.preventDefault();
+    window.open('chrome://version');
+  },
+
   /** @private */
   onChannelSwitcherDialogClosed_: function() {
     this.showChannelSwitcherDialog_ = false;
diff --git a/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.html b/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.html
index 97c29a0..52053aae 100644
--- a/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.html
+++ b/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.html
@@ -58,12 +58,9 @@
             <div class="label">
               $i18n{googleAssistantEnableHotword}
             </div>
-            <div class="secondary label" hidden="[[!hotwordDefaultOn_]]">
+            <div class="secondary label">
               $i18n{googleAssistantEnableHotwordWithoutDspDescription}
             </div>
-            <div class="secondary label" hidden="[[hotwordDefaultOn_]]">
-              $i18n{googleAssistantEnableHotwordDescription}
-            </div>
           </div>
           <template is="dom-if" if="[[hotwordEnforced_]]" restamp>
             <cr-policy-pref-indicator id="hotword-policy-pref-indicator"
diff --git a/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.js b/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.js
index c3bc172..5a91841 100644
--- a/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.js
+++ b/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.js
@@ -97,12 +97,6 @@
     },
 
     /** @private */
-    hotwordDefaultOn_: {
-      type: Boolean,
-      value: false,
-    },
-
-    /** @private */
     dspHotwordState_: {
       type: DspHotwordState,
     }
@@ -166,20 +160,17 @@
         this.setPrefValue('settings.voice_interaction.hotword.enabled', true);
         this.setPrefValue(
             'settings.voice_interaction.hotword.always_on', false);
-        this.hotwordDefaultOn_ = true;
         this.browserProxy_.syncVoiceModelStatus();
         break;
       case DspHotwordState.ALWAYS_ON:
         this.setPrefValue('settings.voice_interaction.hotword.enabled', true);
         this.setPrefValue('settings.voice_interaction.hotword.always_on', true);
-        this.hotwordDefaultOn_ = false;
         this.browserProxy_.syncVoiceModelStatus();
         break;
       case DspHotwordState.OFF:
         this.setPrefValue('settings.voice_interaction.hotword.enabled', false);
         this.setPrefValue(
             'settings.voice_interaction.hotword.always_on', false);
-        this.hotwordDefaultOn_ = false;
         break;
       default:
         console.error('Invalid Dsp hotword settings state');
@@ -220,14 +211,11 @@
   /** @private */
   refreshDspHotwordState_: function() {
     if (!this.getPref('settings.voice_interaction.hotword.enabled.value')) {
-      this.hotwordDefaultOn_ = false;
       this.dspHotwordState_ = DspHotwordState.OFF;
     } else if (this.getPref(
                    'settings.voice_interaction.hotword.always_on.value')) {
-      this.hotwordDefaultOn_ = false;
       this.dspHotwordState_ = DspHotwordState.ALWAYS_ON;
     } else {
-      this.hotwordDefaultOn_ = true;
       this.dspHotwordState_ = DspHotwordState.DEFAULT_ON;
     }
 
diff --git a/chrome/browser/resources/settings/icons.html b/chrome/browser/resources/settings/icons.html
index ad72212..595f018 100644
--- a/chrome/browser/resources/settings/icons.html
+++ b/chrome/browser/resources/settings/icons.html
@@ -74,6 +74,7 @@
       <g id="pdf"><path d="M7 11.5h1v-1H7v1zM19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-9.5 8.5c0 .83-.67 1.5-1.5 1.5H7v2H5.5V9H8c.83 0 1.5.67 1.5 1.5v1zm10-1H17v1h1.5V13H17v2h-1.5V9h4v1.5zm-5 3c0 .83-.67 1.5-1.5 1.5h-2.5V9H13c.83 0 1.5.67 1.5 1.5v3zm-2.5 0h1v-3h-1v3z"></path><path fill="none" d="M0 0h24v24H0z"></path></g>
       <g id="palette"><path d="M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9c.83 0 1.5-.67 1.5-1.5 0-.39-.15-.74-.39-1.01-.23-.26-.38-.61-.38-.99 0-.83.67-1.5 1.5-1.5H16c2.76 0 5-2.24 5-5 0-4.42-4.03-8-9-8zm-5.5 9c-.83 0-1.5-.67-1.5-1.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12zm3-4C8.67 8 8 7.33 8 6.5S8.67 5 9.5 5s1.5.67 1.5 1.5S10.33 8 9.5 8zm5 0c-.83 0-1.5-.67-1.5-1.5S13.67 5 14.5 5s1.5.67 1.5 1.5S15.33 8 14.5 8zm3 4c-.83 0-1.5-.67-1.5-1.5S16.67 9 17.5 9s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"></path></g>
       <g id="payment-handler"><path d="M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z"></path></g>
+      <g id="insecure-content"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"></path></g>
       <g id="photo"><path d="M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z"></path></g>
       <g id="power-settings-new"><path d="M13 3h-2v10h2V3zm4.83 2.17l-1.42 1.42C17.99 7.86 19 9.81 19 12c0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.19 1.01-4.14 2.58-5.42L6.17 5.17C4.23 6.82 3 9.26 3 12c0 4.97 4.03 9 9 9s9-4.03 9-9c0-2.74-1.23-5.18-3.17-6.83z"></path></g>
       <g id="protocol-handler"><path d="M21.72 11.33l-6.644-7.035a.97.97 0 0 0-1.38-.01l-1.67 1.72-1.617-1.712a.97.97 0 0 0-1.38-.01l-6.737 6.935c-.187.191-.29.447-.292.719-.002.272.099.529.28.722l6.644 7.034a.949.949 0 0 0 1.38.011l1.671-1.718 1.615 1.71a.949.949 0 0 0 1.381.01l6.74-6.935a1.054 1.054 0 0 0 .01-1.44zM6.947 12.464l3.657 3.785-.974.98-5.273-5.456 5.349-5.378.929.962-3.677 3.7a.998.998 0 0 0-.292.702 1 1 0 0 0 .28.705zm7.35 4.768l-.931-.963 3.68-3.7a1.012 1.012 0 0 0 .007-1.407l-3.656-3.784.974-.98 5.273 5.456-5.348 5.378z"></path></g>
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html
index 11c6038..9b9618c 100644
--- a/chrome/browser/resources/settings/privacy_page/privacy_page.html
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html
@@ -303,6 +303,23 @@
           </category-setting-exceptions>
         </settings-subpage>
       </template>
+      <template is="dom-if" if="[[enableInsecureContentContentSetting_]]">
+        <template is="dom-if" route-path="/content/insecureContent" no-search>
+          <settings-subpage
+              page-title="$i18n{siteSettingsCategoryInsecureContent}"
+              search-label="$i18n{siteSettingsAllSitesSearch}"
+              search-term="{{searchFilter_}}">
+            <div class="settings-box first">
+              $i18n{siteSettingsInsecureContentBlock}
+            </div>
+            <category-setting-exceptions
+                category="[[ContentSettingsTypes.MIXEDSCRIPT]]"
+                block-header="$i18n{siteSettingsBlock}"
+                search-filter="[[searchFilter_]]">
+            </category-setting-exceptions>
+          </settings-subpage>
+        </template>
+      </template>
       <template is="dom-if" route-path="/content/location" no-search>
         <settings-subpage page-title="$i18n{siteSettingsCategoryLocation}"
             search-label="$i18n{siteSettingsAllSitesSearch}"
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.js b/chrome/browser/resources/settings/privacy_page/privacy_page.js
index e3d4481..a7b63fd 100644
--- a/chrome/browser/resources/settings/privacy_page/privacy_page.js
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.js
@@ -136,6 +136,14 @@
     },
 
     /** @private */
+    enableInsecureContentContentSetting_: {
+      type: Boolean,
+      value: function() {
+        return loadTimeData.getBoolean('enableInsecureContentContentSetting');
+      }
+    },
+
+    /** @private */
     enableNativeFileSystemWriteContentSetting_: {
       type: Boolean,
       value: function() {
diff --git a/chrome/browser/resources/settings/route.js b/chrome/browser/resources/settings/route.js
index ecb8f8267..26e34c9c 100644
--- a/chrome/browser/resources/settings/route.js
+++ b/chrome/browser/resources/settings/route.js
@@ -98,6 +98,7 @@
  *   SITE_SETTINGS_FLASH: (undefined|!settings.Route),
  *   SITE_SETTINGS_HANDLERS: (undefined|!settings.Route),
  *   SITE_SETTINGS_IMAGES: (undefined|!settings.Route),
+ *   SITE_SETTINGS_MIXEDSCRIPT: (undefined|!settings.Route),
  *   SITE_SETTINGS_JAVASCRIPT: (undefined|!settings.Route),
  *   SITE_SETTINGS_SENSORS: (undefined|!settings.Route),
  *   SITE_SETTINGS_SOUND: (undefined|!settings.Route),
@@ -329,6 +330,10 @@
       r.SITE_SETTINGS_DATA_DETAILS =
           r.SITE_SETTINGS_SITE_DATA.createChild('/cookies/detail');
       r.SITE_SETTINGS_IMAGES = r.SITE_SETTINGS.createChild('images');
+      if (loadTimeData.getBoolean('enableInsecureContentContentSetting')) {
+        r.SITE_SETTINGS_MIXEDSCRIPT =
+            r.SITE_SETTINGS.createChild('insecureContent');
+      }
       r.SITE_SETTINGS_JAVASCRIPT = r.SITE_SETTINGS.createChild('javascript');
       r.SITE_SETTINGS_SOUND = r.SITE_SETTINGS.createChild('sound');
       r.SITE_SETTINGS_SENSORS = r.SITE_SETTINGS.createChild('sensors');
diff --git a/chrome/browser/resources/settings/site_settings/category_default_setting.js b/chrome/browser/resources/settings/site_settings/category_default_setting.js
index 554bc699..5426cf0 100644
--- a/chrome/browser/resources/settings/site_settings/category_default_setting.js
+++ b/chrome/browser/resources/settings/site_settings/category_default_setting.js
@@ -103,6 +103,7 @@
       case settings.ContentSettingsTypes.BACKGROUND_SYNC:
       case settings.ContentSettingsTypes.IMAGES:
       case settings.ContentSettingsTypes.JAVASCRIPT:
+      case settings.ContentSettingsTypes.MIXEDSCRIPT:
       case settings.ContentSettingsTypes.SOUND:
       case settings.ContentSettingsTypes.SENSORS:
       case settings.ContentSettingsTypes.PAYMENT_HANDLER:
diff --git a/chrome/browser/resources/settings/site_settings/constants.js b/chrome/browser/resources/settings/site_settings/constants.js
index f65608a..f073aa9 100644
--- a/chrome/browser/resources/settings/site_settings/constants.js
+++ b/chrome/browser/resources/settings/site_settings/constants.js
@@ -36,6 +36,7 @@
   CLIPBOARD: 'clipboard',
   SENSORS: 'sensors',
   PAYMENT_HANDLER: 'payment-handler',
+  MIXEDSCRIPT: 'mixed-script',
   BLUETOOTH_SCANNING: 'bluetooth-scanning',
   NATIVE_FILE_SYSTEM_WRITE: 'native-file-system-write',
 };
diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html
index 24e293d..fb24557 100644
--- a/chrome/browser/resources/settings/site_settings/site_details.html
+++ b/chrome/browser/resources/settings/site_settings/site_details.html
@@ -214,6 +214,13 @@
             label="$i18n{siteSettingsBluetoothScanning}">
         </site-details-permission>
       </template>
+      <template is="dom-if" if="[[enableInsecureContentContentSetting_]]">
+        <site-details-permission
+            category="{{ContentSettingsTypes.MIXEDSCRIPT}}"
+            icon="settings:insecure-content" id="mixed-script"
+            label="$i18n{siteSettingsInsecureContent}">
+        </site-details-permission>
+      </template>
     </div>
 
     <website-usage-private-api id="usageApi"
diff --git a/chrome/browser/resources/settings/site_settings/site_details.js b/chrome/browser/resources/settings/site_settings/site_details.js
index 6e85996..df765e0 100644
--- a/chrome/browser/resources/settings/site_settings/site_details.js
+++ b/chrome/browser/resources/settings/site_settings/site_details.js
@@ -70,6 +70,14 @@
             'enableNativeFileSystemWriteContentSetting');
       }
     },
+
+    /** @private */
+    enableInsecureContentContentSetting_: {
+      type: Boolean,
+      value: function() {
+        return loadTimeData.getBoolean('enableInsecureContentContentSetting');
+      }
+    },
   },
 
   listeners: {
diff --git a/chrome/browser/resources/settings/site_settings/site_settings_behavior.js b/chrome/browser/resources/settings/site_settings/site_settings_behavior.js
index a87ec9a..545c49a 100644
--- a/chrome/browser/resources/settings/site_settings/site_settings_behavior.js
+++ b/chrome/browser/resources/settings/site_settings/site_settings_behavior.js
@@ -207,6 +207,9 @@
     addOrRemoveSettingWithFlag(
         settings.ContentSettingsTypes.NATIVE_FILE_SYSTEM_WRITE,
         'enableNativeFileSystemWriteContentSetting');
+    addOrRemoveSettingWithFlag(
+        settings.ContentSettingsTypes.MIXEDSCRIPT,
+        'enableInsecureContentContentSetting');
     return this.contentTypes_.slice(0);
   },
 
diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
index b65889b..3db16d2 100644
--- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
@@ -247,6 +247,15 @@
               '$i18nPolymer{siteSettingsPaymentHandlerBlock}')]]"></cr-link-row>
     </template>
 
+    <template is="dom-if" if="[[enableInsecureContentContentSetting_]]">
+      <cr-link-row class="hr two-line" data-route="SITE_SETTINGS_MIXEDSCRIPT"
+          label="$i18n{siteSettingsInsecureContent}"
+          on-click="onTapNavigate_"
+          start-icon="settings:insecure-content"
+          sub-label="$i18n{siteSettingsInsecureContentBlock}"
+      </cr-link-row>
+    </template>
+
     <template is="dom-if" if="[[enableExperimentalWebPlatformFeatures_]]">
       <cr-link-row class="hr two-line"
           data-route="SITE_SETTINGS_BLUETOOTH_SCANNING"
diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.js b/chrome/browser/resources/settings/site_settings_page/site_settings_page.js
index b04a5ac..588b6d0 100644
--- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.js
+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.js
@@ -60,6 +60,14 @@
     },
 
     /** @private */
+    enableInsecureContentContentSetting_: {
+      type: Boolean,
+      value: function() {
+        return loadTimeData.getBoolean('enableInsecureContentContentSetting');
+      }
+    },
+
+    /** @private */
     enableNativeFileSystemWriteContentSetting_: {
       type: Boolean,
       value: function() {
@@ -132,6 +140,10 @@
       ]);
     }
 
+    if (this.enableInsecureContentContentSetting_) {
+      pairs.push([R.SITE_SETTINGS_MIXEDSCRIPT, 'mixed-script']);
+    }
+
     pairs.forEach(([route, id]) => {
       this.focusConfig.set(route.path, () => this.async(() => {
         cr.ui.focusWithoutInk(assert(this.$$(`#${id}`)));
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
index 0c8119e0..20b9f10b 100644
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
@@ -301,7 +301,7 @@
     // get notified of it, so include that notification now.
     Profile* profile =
         Profile::FromBrowserContext(web_contents()->GetBrowserContext());
-    safe_browsing_service->AddPrefService(profile->GetPrefs());
+    safe_browsing_service->OnProfileAdded(profile);
     content::BrowserThread::RunAllPendingTasksOnThreadForTesting(
         content::BrowserThread::IO);
 #if BUILDFLAG(ENABLE_EXTENSIONS)
@@ -1105,10 +1105,10 @@
     auto* safe_browsing_service =
         sb_service_factory.CreateSafeBrowsingService();
     // A profile was created already but SafeBrowsingService wasn't around to
-    // get notified of it, so include that notification now.
-    safe_browsing_service->AddPrefService(
-        Profile::FromBrowserContext(web_contents()->GetBrowserContext())
-            ->GetPrefs());
+    // get notified of it (and it wasn't associated with a ProfileManager), so
+    // include that profile now.
+    safe_browsing_service->OnProfileAdded(
+        Profile::FromBrowserContext(web_contents()->GetBrowserContext()));
     TestingBrowserProcess::GetGlobal()->SetSafeBrowsingService(
         safe_browsing_service);
     g_browser_process->safe_browsing_service()->Initialize();
diff --git a/chrome/browser/safe_browsing/safe_browsing_service.cc b/chrome/browser/safe_browsing/safe_browsing_service.cc
index 5ee096c9..9b6629db 100644
--- a/chrome/browser/safe_browsing/safe_browsing_service.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_service.cc
@@ -128,6 +128,8 @@
   CreateTriggerManager();
 
   // Track profile creation and destruction.
+  if (g_browser_process->profile_manager())
+    g_browser_process->profile_manager()->AddObserver(this);
   profiles_registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CREATED,
                           content::NotificationService::AllSources());
   profiles_registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
@@ -143,6 +145,8 @@
   shutdown_ = true;
 
   // Remove Profile creation/destruction observers.
+  if (g_browser_process->profile_manager())
+    g_browser_process->profile_manager()->RemoveObserver(this);
   profiles_registrar_.RemoveAll();
 
   // Delete the PrefChangeRegistrars, whose dtors also unregister |this| as an
@@ -341,8 +345,6 @@
       services_delegate_->CreateVerdictCacheManager(profile);
       services_delegate_->CreatePasswordProtectionService(profile);
       services_delegate_->CreateTelemetryService(profile);
-      if (!profile->IsOffTheRecord())
-        AddPrefService(profile->GetPrefs());
       services_delegate_->CreateBinaryUploadService(profile);
       break;
     }
@@ -352,8 +354,6 @@
       services_delegate_->RemoveVerdictCacheManager(profile);
       services_delegate_->RemovePasswordProtectionService(profile);
       services_delegate_->RemoveTelemetryService();
-      if (!profile->IsOffTheRecord())
-        RemovePrefService(profile->GetPrefs());
       services_delegate_->RemoveBinaryUploadService(profile);
       break;
     }
@@ -362,7 +362,9 @@
   }
 }
 
-void SafeBrowsingService::AddPrefService(PrefService* pref_service) {
+void SafeBrowsingService::OnProfileAdded(Profile* profile) {
+  // Start following the safe browsing preference on |pref_service|.
+  PrefService* pref_service = profile->GetPrefs();
   DCHECK(prefs_map_.find(pref_service) == prefs_map_.end());
   std::unique_ptr<PrefChangeRegistrar> registrar =
       std::make_unique<PrefChangeRegistrar>();
@@ -388,15 +390,6 @@
   RecordExtendedReportingMetrics(*pref_service);
 }
 
-void SafeBrowsingService::RemovePrefService(PrefService* pref_service) {
-  if (prefs_map_.find(pref_service) != prefs_map_.end()) {
-    prefs_map_.erase(pref_service);
-    RefreshState();
-  } else {
-    NOTREACHED();
-  }
-}
-
 std::unique_ptr<SafeBrowsingService::StateSubscription>
 SafeBrowsingService::RegisterStateCallback(
     const base::Callback<void(void)>& callback) {
diff --git a/chrome/browser/safe_browsing/safe_browsing_service.h b/chrome/browser/safe_browsing/safe_browsing_service.h
index 9160cb8..7f8bc8e 100644
--- a/chrome/browser/safe_browsing/safe_browsing_service.h
+++ b/chrome/browser/safe_browsing/safe_browsing_service.h
@@ -20,6 +20,7 @@
 #include "base/observer_list.h"
 #include "base/sequenced_task_runner_helpers.h"
 #include "chrome/browser/net/proxy_config_monitor.h"
+#include "chrome/browser/profiles/profile_manager_observer.h"
 #include "chrome/browser/safe_browsing/services_delegate.h"
 #include "components/safe_browsing/buildflags.h"
 #include "components/safe_browsing/common/safe_browsing_prefs.h"
@@ -79,7 +80,8 @@
 // alive until SafeBrowsingService is destroyed, however, they are disabled
 // permanently when Shutdown method is called.
 class SafeBrowsingService : public SafeBrowsingServiceInterface,
-                            public content::NotificationObserver {
+                            public content::NotificationObserver,
+                            public ProfileManagerObserver {
  public:
   static base::FilePath GetCookieFilePathForTesting();
 
@@ -243,11 +245,8 @@
                const content::NotificationSource& source,
                const content::NotificationDetails& details) override;
 
-  // Starts following the safe browsing preference on |pref_service|.
-  void AddPrefService(PrefService* pref_service);
-
-  // Stop following the safe browsing preference on |pref_service|.
-  void RemovePrefService(PrefService* pref_service);
+  // ProfileManagerObserver overrides:
+  void OnProfileAdded(Profile* profile) override;
 
   // Checks if any profile is currently using the safe browsing service, and
   // starts or stops the service accordingly.
diff --git a/chrome/browser/safe_browsing/ui_manager_unittest.cc b/chrome/browser/safe_browsing/ui_manager_unittest.cc
index f323b3e6..d8903e3 100644
--- a/chrome/browser/safe_browsing/ui_manager_unittest.cc
+++ b/chrome/browser/safe_browsing/ui_manager_unittest.cc
@@ -96,9 +96,8 @@
     g_browser_process->safe_browsing_service()->Initialize();
     // A profile was created already but SafeBrowsingService wasn't around to
     // get notified of it, so include that notification now.
-    safe_browsing_service->AddPrefService(
-        Profile::FromBrowserContext(web_contents()->GetBrowserContext())
-            ->GetPrefs());
+    safe_browsing_service->OnProfileAdded(
+        Profile::FromBrowserContext(web_contents()->GetBrowserContext()));
     content::BrowserThread::RunAllPendingTasksOnThreadForTesting(
         content::BrowserThread::IO);
   }
diff --git a/chrome/browser/sync/test/integration/sync_arc_package_helper.cc b/chrome/browser/sync/test/integration/sync_arc_package_helper.cc
index 2c79e3b..b809f4c6 100644
--- a/chrome/browser/sync/test/integration/sync_arc_package_helper.cc
+++ b/chrome/browser/sync/test/integration/sync_arc_package_helper.cc
@@ -9,8 +9,8 @@
 #include "base/command_line.h"
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
 #include "chrome/browser/sync/test/integration/sync_test.h"
diff --git a/chrome/browser/touch_to_fill/android/BUILD.gn b/chrome/browser/touch_to_fill/android/BUILD.gn
index 29da6b2..d225aec 100644
--- a/chrome/browser/touch_to_fill/android/BUILD.gn
+++ b/chrome/browser/touch_to_fill/android/BUILD.gn
@@ -55,9 +55,6 @@
     "//third_party/junit",
     "//third_party/mockito:mockito_java",
   ]
-
-  srcjar_deps =
-      [ "//components/module_installer/android:module_installer_build_config" ]
 }
 
 android_library("test_java") {
diff --git a/chrome/browser/ui/android/infobars/installable_ambient_badge_infobar.cc b/chrome/browser/ui/android/infobars/installable_ambient_badge_infobar.cc
index a468795..8f47af4 100644
--- a/chrome/browser/ui/android/infobars/installable_ambient_badge_infobar.cc
+++ b/chrome/browser/ui/android/infobars/installable_ambient_badge_infobar.cc
@@ -41,8 +41,11 @@
   base::android::ScopedJavaLocalRef<jobject> java_bitmap =
       gfx::ConvertToJavaBitmap(&delegate->GetPrimaryIcon());
 
+  jboolean java_is_primary_icon_maskable = delegate->GetIsPrimaryIconMaskable();
+
   return Java_InstallableAmbientBadgeInfoBar_show(
-      env, delegate->GetIconId(), java_bitmap, java_message_text, java_url);
+      env, delegate->GetIconId(), java_bitmap, java_message_text, java_url,
+      java_is_primary_icon_maskable);
 }
 
 void InstallableAmbientBadgeInfoBar::ProcessButton(int action) {}
diff --git a/chrome/browser/ui/app_list/arc/arc_app_icon.cc b/chrome/browser/ui/app_list/arc/arc_app_icon.cc
index 541e2dd..b6fa7fe 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_icon.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_icon.cc
@@ -305,7 +305,7 @@
 
   base::PostTaskAndReplyWithResult(
       FROM_HERE,
-      {base::ThreadPool(), base::MayBlock(), base::TaskPriority::BEST_EFFORT},
+      {base::ThreadPool(), base::MayBlock(), base::TaskPriority::USER_VISIBLE},
       base::BindOnce(
           &ArcAppIcon::ReadOnFileThread, scale_factor, path,
           prefs->MaybeGetIconPathForDefaultApp(mapped_app_id_, descriptor)),
diff --git a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
index e08a5cf..590853986 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
@@ -19,9 +19,9 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/task/post_task.h"
 #include "base/values.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
 #include "chrome/browser/chromeos/arc/policy/arc_policy_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
 #include "chrome/browser/chromeos/login/session/user_session_manager.h"
 #include "chrome/browser/image_decoder.h"
diff --git a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.h b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.h
index 7daf9f8e..71f9e0b 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.h
+++ b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.h
@@ -23,8 +23,8 @@
 #include "base/optional.h"
 #include "base/time/time.h"
 #include "base/timer/timer.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/policy/arc_policy_bridge.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_icon_descriptor.h"
 #include "components/arc/mojom/app.mojom.h"
 #include "components/arc/session/connection_observer.h"
diff --git a/chrome/browser/ui/app_list/arc/arc_app_test.cc b/chrome/browser/ui/app_list/arc/arc_app_test.cc
index 86f7877..1efec68 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_test.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_test.cc
@@ -11,9 +11,9 @@
 #include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "chrome/browser/apps/app_service/arc_apps_factory.h"
-#include "chrome/browser/chromeos/arc/arc_play_store_enabled_preference_handler.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_play_store_enabled_preference_handler.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/ui/app_list/arc/arc_app_unittest.cc b/chrome/browser/ui/app_list/arc/arc_app_unittest.cc
index 1ab669a..c493f8e4 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_unittest.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_unittest.cc
@@ -28,9 +28,9 @@
 #include "build/build_config.h"
 #include "chrome/browser/apps/app_service/arc_icon_once_loader.h"
 #include "chrome/browser/chromeos/arc/arc_optin_uma.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_support_host.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/browser/extensions/extension_service.h"
 #include "chrome/browser/extensions/extension_service_test_base.h"
diff --git a/chrome/browser/ui/app_list/arc/arc_app_utils.cc b/chrome/browser/ui/app_list/arc/arc_app_utils.cc
index 72c47cb4..bded51ff 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_utils.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_utils.cc
@@ -19,10 +19,10 @@
 #include "base/values.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/chromeos/arc/arc_migration_guide_notification.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
 #include "chrome/browser/chromeos/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge.h"
 #include "chrome/browser/chromeos/arc/notification/arc_supervision_transition_notification.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
 #include "chrome/browser/ui/ash/launcher/arc_app_shelf_id.h"
diff --git a/chrome/browser/ui/app_list/arc/arc_package_sync_model_type_controller.h b/chrome/browser/ui/app_list/arc/arc_package_sync_model_type_controller.h
index 536c4993..1e2a1df 100644
--- a/chrome/browser/ui/app_list/arc/arc_package_sync_model_type_controller.h
+++ b/chrome/browser/ui/app_list/arc/arc_package_sync_model_type_controller.h
@@ -6,7 +6,7 @@
 #define CHROME_BROWSER_UI_APP_LIST_ARC_ARC_PACKAGE_SYNC_MODEL_TYPE_CONTROLLER_H_
 
 #include "base/macros.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
 #include "components/sync/driver/syncable_service_based_model_type_controller.h"
 
diff --git a/chrome/browser/ui/app_list/arc/arc_usb_host_permission_browsertest.cc b/chrome/browser/ui/app_list/arc/arc_usb_host_permission_browsertest.cc
index 57d7195..3e56d1d 100644
--- a/chrome/browser/ui/app_list/arc/arc_usb_host_permission_browsertest.cc
+++ b/chrome/browser/ui/app_list/arc/arc_usb_host_permission_browsertest.cc
@@ -9,8 +9,8 @@
 #include "base/macros.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
diff --git a/chrome/browser/ui/app_list/crostini/crostini_app_icon.cc b/chrome/browser/ui/app_list/crostini/crostini_app_icon.cc
index 4d7c5ca..6c30ad7 100644
--- a/chrome/browser/ui/app_list/crostini/crostini_app_icon.cc
+++ b/chrome/browser/ui/app_list/crostini/crostini_app_icon.cc
@@ -217,7 +217,7 @@
 
   base::PostTaskAndReplyWithResult(
       FROM_HERE,
-      {base::ThreadPool(), base::MayBlock(), base::TaskPriority::BEST_EFFORT},
+      {base::ThreadPool(), base::MayBlock(), base::TaskPriority::USER_VISIBLE},
       base::BindOnce(&CrostiniAppIcon::ReadOnFileThread, scale_factor, path),
       base::BindOnce(&CrostiniAppIcon::OnIconRead,
                      weak_ptr_factory_.GetWeakPtr()));
diff --git a/chrome/browser/ui/ash/assistant/assistant_state_client.h b/chrome/browser/ui/ash/assistant/assistant_state_client.h
index 4e20b42..1160aa4d 100644
--- a/chrome/browser/ui/ash/assistant/assistant_state_client.h
+++ b/chrome/browser/ui/ash/assistant/assistant_state_client.h
@@ -7,7 +7,7 @@
 
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "components/user_manager/user_manager.h"
 
 class PrefChangeRegistrar;
diff --git a/chrome/browser/ui/ash/assistant/assistant_state_client_unittest.cc b/chrome/browser/ui/ash/assistant/assistant_state_client_unittest.cc
index ff47047..5587fcf 100644
--- a/chrome/browser/ui/ash/assistant/assistant_state_client_unittest.cc
+++ b/chrome/browser/ui/ash/assistant/assistant_state_client_unittest.cc
@@ -8,7 +8,7 @@
 #include "ash/public/mojom/assistant_state_controller.mojom.h"
 #include "base/bind.h"
 #include "base/files/scoped_temp_dir.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/test/base/chrome_ash_test_base.h"
 #include "chrome/test/base/testing_profile.h"
diff --git a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc
index a9596556..bfb5219f 100644
--- a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc
+++ b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc
@@ -137,6 +137,14 @@
       chromeos::input_method::InputMethodManager::Get());
   ime_controller_client_->Init();
 
+  // NOTE: The WallpaperControllerClient must be initialized before the
+  // session controller, because the session controller triggers the loading
+  // of users, which itself calls a code path which eventually reaches the
+  // WallpaperControllerClient singleton instance via
+  // chromeos::ChromeUserManagerImpl.
+  wallpaper_controller_client_ = std::make_unique<WallpaperControllerClient>();
+  wallpaper_controller_client_->Init();
+
   session_controller_client_ = std::make_unique<SessionControllerClientImpl>();
   session_controller_client_->Init();
 
@@ -144,9 +152,6 @@
   tablet_mode_page_behavior_ = std::make_unique<TabletModePageBehavior>();
   vpn_list_forwarder_ = std::make_unique<VpnListForwarder>();
 
-  wallpaper_controller_client_ = std::make_unique<WallpaperControllerClient>();
-  wallpaper_controller_client_->Init();
-
   chrome_launcher_controller_initializer_ =
       std::make_unique<internal::ChromeLauncherControllerInitializer>();
 
diff --git a/chrome/browser/ui/ash/launcher/arc_app_launcher_browsertest.cc b/chrome/browser/ui/ash/launcher/arc_app_launcher_browsertest.cc
index 11b12ee2..f5c500b 100644
--- a/chrome/browser/ui/ash/launcher/arc_app_launcher_browsertest.cc
+++ b/chrome/browser/ui/ash/launcher/arc_app_launcher_browsertest.cc
@@ -16,9 +16,9 @@
 #include "base/run_loop.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/extensions/extension_browsertest.h"
 #include "chrome/browser/ui/app_list/app_list_client_impl.h"
 #include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
diff --git a/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.h b/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.h
index 7f98768b..0a5ad03 100644
--- a/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.h
+++ b/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.h
@@ -12,7 +12,7 @@
 #include "base/macros.h"
 #include "base/scoped_observer.h"
 #include "base/time/time.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
 #include "chrome/browser/ui/ash/launcher/app_window_launcher_controller.h"
 #include "chrome/browser/ui/ash/launcher/arc_app_shelf_id.h"
diff --git a/chrome/browser/ui/ash/launcher/arc_shelf_spinner_item_controller.h b/chrome/browser/ui/ash/launcher/arc_shelf_spinner_item_controller.h
index 5dfc65f..07a160d 100644
--- a/chrome/browser/ui/ash/launcher/arc_shelf_spinner_item_controller.h
+++ b/chrome/browser/ui/ash/launcher/arc_shelf_spinner_item_controller.h
@@ -11,7 +11,7 @@
 
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
 #include "chrome/browser/ui/ash/launcher/shelf_spinner_item_controller.h"
 
diff --git a/chrome/browser/ui/ash/launcher/launcher_controller_helper.cc b/chrome/browser/ui/ash/launcher/launcher_controller_helper.cc
index e12fa69..c745221 100644
--- a/chrome/browser/ui/ash/launcher/launcher_controller_helper.cc
+++ b/chrome/browser/ui/ash/launcher/launcher_controller_helper.cc
@@ -11,8 +11,8 @@
 #include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
 #include "chrome/browser/apps/launch_service/launch_service.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/crostini/crostini_registry_service.h"
 #include "chrome/browser/chromeos/crostini/crostini_registry_service_factory.h"
 #include "chrome/browser/chromeos/crostini/crostini_util.h"
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index f8a956d..e6ad9f0 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -153,6 +153,7 @@
 #include "chrome/browser/ui/window_sizer/window_sizer.h"
 #include "chrome/browser/vr/vr_tab_helper.h"
 #include "chrome/common/chrome_constants.h"
+#include "chrome/common/chrome_features.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/custom_handlers/protocol_handler.h"
 #include "chrome/common/pref_names.h"
@@ -1289,24 +1290,34 @@
   // ContentSettingsObserver::allowRunningInsecureContent.
   FilteredReportInsecureContentRan(resource_url);
 
+  if (allowed_per_prefs)
+    return true;
+
+  if (base::FeatureList::IsEnabled(features::kMixedContentSiteSetting)) {
+    Profile* profile =
+        Profile::FromBrowserContext(web_contents->GetBrowserContext());
+    HostContentSettingsMap* content_settings =
+        HostContentSettingsMapFactory::GetForProfile(profile);
+    return content_settings->GetContentSetting(
+               web_contents->GetLastCommittedURL(), GURL(),
+               CONTENT_SETTINGS_TYPE_MIXEDSCRIPT,
+               std::string()) == CONTENT_SETTING_ALLOW;
+  }
   MixedContentSettingsTabHelper* mixed_content_settings =
       MixedContentSettingsTabHelper::FromWebContents(web_contents);
   DCHECK(mixed_content_settings);
-  if (allowed_per_prefs ||
-      mixed_content_settings->is_running_insecure_content_allowed()) {
-    return true;
-  }
-
-  // Note: this is a browser-side-translation of the call to DidBlockContentType
-  // from inside ContentSettingsObserver::allowRunningInsecureContent.
-  if (!origin.host().empty()) {
+  bool allowed = mixed_content_settings->is_running_insecure_content_allowed();
+  if (!allowed && !origin.host().empty()) {
+    // Note: this is a browser-side-translation of the call to
+    // DidBlockContentType from inside
+    // ContentSettingsObserver::allowRunningInsecureContent.
     TabSpecificContentSettings* tab_settings =
         TabSpecificContentSettings::FromWebContents(web_contents);
     DCHECK(tab_settings);
     tab_settings->OnContentBlockedWithDetail(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT,
                                              base::UTF8ToUTF16(origin.host()));
   }
-  return false;
+  return allowed;
 }
 
 void Browser::OnDidBlockNavigation(content::WebContents* web_contents,
diff --git a/chrome/browser/ui/tabs/tab_renderer_data.cc b/chrome/browser/ui/tabs/tab_renderer_data.cc
index 4116dda..0a210a5d 100644
--- a/chrome/browser/ui/tabs/tab_renderer_data.cc
+++ b/chrome/browser/ui/tabs/tab_renderer_data.cc
@@ -6,6 +6,39 @@
 
 #include "base/process/kill.h"
 #include "build/build_config.h"
+#include "chrome/browser/favicon/favicon_utils.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/tab_ui_helper.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/browser/ui/thumbnails/thumbnail_tab_helper.h"
+#include "content/public/browser/web_contents.h"
+
+// static
+TabRendererData TabRendererData::FromTabInModel(TabStripModel* model,
+                                                int index) {
+  content::WebContents* const contents = model->GetWebContentsAt(index);
+
+  TabRendererData data;
+  TabUIHelper* const tab_ui_helper = TabUIHelper::FromWebContents(contents);
+  data.favicon = tab_ui_helper->GetFavicon().AsImageSkia();
+  ThumbnailTabHelper* const thumbnail_tab_helper =
+      ThumbnailTabHelper::FromWebContents(contents);
+  if (thumbnail_tab_helper)
+    data.thumbnail = thumbnail_tab_helper->thumbnail();
+  data.network_state = TabNetworkStateForWebContents(contents);
+  data.title = tab_ui_helper->GetTitle();
+  data.visible_url = contents->GetVisibleURL();
+  data.last_committed_url = contents->GetLastCommittedURL();
+  data.crashed_status = contents->GetCrashedStatus();
+  data.incognito = contents->GetBrowserContext()->IsOffTheRecord();
+  data.pinned = model->IsTabPinned(index);
+  data.show_icon = data.pinned || favicon::ShouldDisplayFavicon(contents);
+  data.blocked = model->IsTabBlocked(index);
+  data.alert_state =
+      chrome::GetHighestPriorityTabAlertStateForContents(contents);
+  data.should_hide_throbber = tab_ui_helper->ShouldHideThrobber();
+  return data;
+}
 
 TabRendererData::TabRendererData() = default;
 TabRendererData::TabRendererData(const TabRendererData& other) = default;
diff --git a/chrome/browser/ui/tabs/tab_renderer_data.h b/chrome/browser/ui/tabs/tab_renderer_data.h
index 392426b..f449640 100644
--- a/chrome/browser/ui/tabs/tab_renderer_data.h
+++ b/chrome/browser/ui/tabs/tab_renderer_data.h
@@ -12,8 +12,12 @@
 #include "ui/gfx/image/image_skia.h"
 #include "url/gurl.h"
 
+class TabStripModel;
+
 // Wraps the state needed by the renderers.
 struct TabRendererData {
+  static TabRendererData FromTabInModel(TabStripModel* model, int index);
+
   TabRendererData();
   TabRendererData(const TabRendererData& other);
   TabRendererData(TabRendererData&& other);
diff --git a/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc b/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc
index 801896c8..b69f533 100644
--- a/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc
+++ b/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc
@@ -10,8 +10,8 @@
 #include "base/run_loop.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/app_list_client_impl.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
diff --git a/chrome/browser/ui/views/arc_data_removal_dialog_view.cc b/chrome/browser/ui/views/arc_data_removal_dialog_view.cc
index 4009c4fb..e6e269d 100644
--- a/chrome/browser/ui/views/arc_data_removal_dialog_view.cc
+++ b/chrome/browser/ui/views/arc_data_removal_dialog_view.cc
@@ -5,7 +5,7 @@
 #include "chrome/browser/ui/app_list/arc/arc_data_removal_dialog.h"
 
 #include "base/macros.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_icon_loader.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
 #include "chrome/browser/ui/browser_dialogs.h"
diff --git a/chrome/browser/ui/views/frame/webui_tab_strip_container_view.cc b/chrome/browser/ui/views/frame/webui_tab_strip_container_view.cc
index 93451abb..3f3583c8 100644
--- a/chrome/browser/ui/views/frame/webui_tab_strip_container_view.cc
+++ b/chrome/browser/ui/views/frame/webui_tab_strip_container_view.cc
@@ -15,6 +15,7 @@
 #include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/view_ids.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_button.h"
+#include "chrome/browser/ui/webui/tab_strip/tab_strip_ui.h"
 #include "chrome/common/webui_url_constants.h"
 #include "chrome/grit/generated_resources.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -44,6 +45,10 @@
       web_view_->web_contents());
   task_manager::WebContentsTags::CreateForTabContents(
       web_view_->web_contents());
+
+  TabStripUI* tab_strip_ui = static_cast<TabStripUI*>(
+      web_view_->GetWebContents()->GetWebUI()->GetController());
+  tab_strip_ui->Initialize(browser_);
 }
 
 views::NativeViewHost* WebUITabStripContainerView::GetNativeViewHost() {
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
index 135ae73..8461d34 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
@@ -67,6 +67,24 @@
       omnibox::kKeywordSearchIcon, GetLayoutConstant(LOCATION_BAR_ICON_SIZE),
       GetColor(OmniboxPart::RESULTS_ICON)));
   keyword_view_->icon()->SizeToPreferredSize();
+
+  if (base::FeatureList::IsEnabled(
+          omnibox::kOmniboxSuggestionTransparencyOptions)) {
+    // This is intentionally not in the tab order by default, but should be
+    // if the user has full-acessibility mode on. This is because this is a
+    // tertiary priority button, which already has a Shift+Delete shortcut.
+    // TODO(tommycli): Make sure we announce the Shift+Delete capability in the
+    // accessibility node data for removable suggestions.
+    AddChildView(remove_suggestion_button_ =
+                     views::CreateVectorImageButton(this).release());
+
+    views::InstallCircleHighlightPathGenerator(remove_suggestion_button_);
+
+    // TODO(tommycli): We may need to update the color for theme changes.
+    views::SetImageFromVectorIcon(remove_suggestion_button_,
+                                  vector_icons::kCloseRoundedIcon,
+                                  GetColor(OmniboxPart::RESULTS_ICON));
+  }
 }
 
 OmniboxResultView::~OmniboxResultView() {}
@@ -95,30 +113,10 @@
     suggestion_tab_switch_button_.reset();
   }
 
-  if (match_.SupportsDeletion() &&
-      base::FeatureList::IsEnabled(
-          omnibox::kOmniboxSuggestionTransparencyOptions)) {
-    // This is intentionally not in the tab order by default, but should be
-    // if the user has full-acessibility mode on. This is because this is a
-    // tertiary priority button, which already has a Shift+Delete shortcut.
-    // TODO(tommycli): Make sure we announce the Shift+Delete capability in the
-    // accessibility node data for removable suggestions.
-    if (!remove_suggestion_button_) {
-      remove_suggestion_button_ = views::CreateVectorImageButton(this);
-      remove_suggestion_button_->set_owned_by_client();
-
-      views::InstallCircleHighlightPathGenerator(
-          remove_suggestion_button_.get());
-
-      // TODO(tommycli): Make sure this is visible in Dark Mode.
-      views::SetImageFromVectorIcon(remove_suggestion_button_.get(),
-                                    vector_icons::kCloseRoundedIcon,
-                                    GetColor(OmniboxPart::RESULTS_ICON));
-
-      AddChildView(remove_suggestion_button_.get());
-    }
-  } else {
-    remove_suggestion_button_.reset();
+  if (remove_suggestion_button_) {
+    // To avoid clutter, don't show the Remove button for matches with keyword.
+    remove_suggestion_button_->SetVisible(match.SupportsDeletion() &&
+                                          !match.associated_keyword);
   }
 
   Invalidate();
@@ -257,7 +255,7 @@
                                       const ui::Event& event) {
   if (button == suggestion_tab_switch_button_.get()) {
     OpenMatch(WindowOpenDisposition::SWITCH_TO_TAB, event.time_stamp());
-  } else if (button == remove_suggestion_button_.get()) {
+  } else if (button == remove_suggestion_button_) {
     // Temporarily inhibit the popup closing on blur while we open the remove
     // suggestion confirmation bubble.
     popup_contents_view_->model()->set_popup_closes_on_blur(false);
@@ -298,7 +296,7 @@
 
   // Add buttons from right to left, shrinking the suggestion width as we go.
   // TODO(tommycli): We should probably use a layout manager here.
-  if (remove_suggestion_button_) {
+  if (remove_suggestion_button_ && remove_suggestion_button_->GetVisible()) {
     const gfx::Size button_size = remove_suggestion_button_->GetPreferredSize();
     suggestion_width -=
         button_size.width() + OmniboxMatchCellView::kMarginRight;
@@ -309,7 +307,6 @@
     remove_suggestion_button_->SetBounds(suggestion_width, vertical_margin,
                                          button_size.width(),
                                          button_size.height());
-    remove_suggestion_button_->SetVisible(true);
   }
   if (suggestion_tab_switch_button_) {
     suggestion_tab_switch_button_->ProvideWidthHint(suggestion_width);
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view.h b/chrome/browser/ui/views/omnibox/omnibox_result_view.h
index 24ec719..e7d8927 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_result_view.h
+++ b/chrome/browser/ui/views/omnibox/omnibox_result_view.h
@@ -145,7 +145,9 @@
   OmniboxMatchCellView* suggestion_view_;  // The leading (or left) view.
   OmniboxMatchCellView* keyword_view_;     // The trailing (or right) view.
   std::unique_ptr<OmniboxTabSwitchButton> suggestion_tab_switch_button_;
-  std::unique_ptr<views::ImageButton> remove_suggestion_button_;
+
+  // The "X" button at the end of the match cell, used to remove suggestions.
+  views::ImageButton* remove_suggestion_button_ = nullptr;
 
   base::WeakPtrFactory<OmniboxResultView> weak_factory_{this};
 
diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view.h b/chrome/browser/ui/views/page_info/page_info_bubble_view.h
index adc3c93..c1381d4 100644
--- a/chrome/browser/ui/views/page_info/page_info_bubble_view.h
+++ b/chrome/browser/ui/views/page_info/page_info_bubble_view.h
@@ -87,6 +87,7 @@
     VIEW_ID_PAGE_INFO_BUTTON_END_VR,
     VIEW_ID_PAGE_INFO_HOVER_BUTTON_VR_PRESENTATION,
     VIEW_ID_PAGE_INFO_BUTTON_LEAVE_SITE,
+    VIEW_ID_PAGE_INFO_BUTTON_IGNORE_WARNING,
   };
 
   // Creates the appropriate page info bubble for the given |url|.
diff --git a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view.cc b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view.cc
index 4a04884..d56289355 100644
--- a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view.cc
+++ b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view.cc
@@ -10,18 +10,22 @@
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/browser_window.h"
+#include "chrome/browser/ui/views/accessibility/non_accessible_image_view.h"
 #include "chrome/browser/ui/views/bubble_anchor_util_views.h"
 #include "chrome/browser/ui/views/chrome_layout_provider.h"
 #include "chrome/browser/ui/views/page_info/page_info_bubble_view.h"
+#include "chrome/grit/theme_resources.h"
 #include "components/security_state/core/security_state.h"
 #include "components/strings/grit/components_strings.h"
 #include "ui/base/l10n/l10n_util.h"
+#include "ui/base/resource/resource_bundle.h"
 #include "ui/views/bubble/bubble_frame_view.h"
 #include "ui/views/controls/button/button.h"
 #include "ui/views/controls/button/md_text_button.h"
 #include "ui/views/controls/label.h"
 #include "ui/views/controls/styled_label.h"
 #include "ui/views/layout/grid_layout.h"
+#include "ui/views/style/typography.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/window/dialog_client_view.h"
 #include "url/gurl.h"
@@ -75,40 +79,109 @@
 
   ChromeLayoutProvider* layout_provider = ChromeLayoutProvider::Get();
 
+  gfx::Insets insets =
+      layout_provider->GetDialogInsetsForContentType(views::TEXT, views::TEXT);
+  set_margins(gfx::Insets(0, 0, insets.bottom(), 0));
+
   // Configure layout.
-  views::GridLayout* layout =
+  views::GridLayout* bubble_layout =
       SetLayoutManager(std::make_unique<views::GridLayout>());
   constexpr int kColumnId = 0;
-  views::ColumnSet* label_col_set = layout->AddColumnSet(kColumnId);
-  label_col_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL,
-                           1.0, views::GridLayout::USE_PREF, 0, 0);
+  views::ColumnSet* bubble_col_set = bubble_layout->AddColumnSet(kColumnId);
+  bubble_col_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL,
+                            1.0, views::GridLayout::USE_PREF, 0, 0);
+
+  // TODO(crbug/996731): Add banner once available. See crrev/c/1816805/7.
+
+  auto bottom_view = std::make_unique<views::View>();
+  views::GridLayout* bottom_layout =
+      bottom_view->SetLayoutManager(std::make_unique<views::GridLayout>());
+  views::ColumnSet* bottom_column_set = bottom_layout->AddColumnSet(0);
+  bottom_column_set->AddPaddingColumn(views::GridLayout::kFixedSize,
+                                      insets.left());
+  bottom_column_set->AddColumn(views::GridLayout::LEADING,
+                               views::GridLayout::FILL, 1.0,
+                               views::GridLayout::USE_PREF, 0, 0);
+  bottom_column_set->AddPaddingColumn(views::GridLayout::kFixedSize,
+                                      insets.right());
 
   // Add text description.
-  layout->StartRow(views::GridLayout::kFixedSize, kColumnId);
-  auto text_label = std::make_unique<views::Label>(l10n_util::GetStringUTF16(
-      safety_tips::GetSafetyTipDescriptionId(safety_tip_status)));
+  const int spacing =
+      layout_provider->GetDistanceMetric(DISTANCE_CONTROL_LIST_VERTICAL);
+  bottom_layout->StartRowWithPadding(views::GridLayout::kFixedSize, kColumnId,
+                                     views::GridLayout::kFixedSize, spacing);
+  auto text_label = std::make_unique<views::Label>(
+      safety_tips::GetSafetyTipDescription(safety_tip_status, suggested_url_));
   text_label->SetMultiLine(true);
   text_label->SetLineHeight(20);
   text_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
   text_label->SizeToFit(
-      layout_provider->GetDistanceMetric(DISTANCE_BUBBLE_PREFERRED_WIDTH));
-  layout->AddView(std::move(text_label));
+      layout_provider->GetDistanceMetric(DISTANCE_BUBBLE_PREFERRED_WIDTH) -
+      insets.left() - insets.right());
+  bottom_layout->AddView(std::move(text_label));
 
-  // Add leave site button.
-  const int hover_list_spacing = layout_provider->GetDistanceMetric(
-      DISTANCE_RELATED_CONTROL_VERTICAL_SMALL);
-  layout->StartRowWithPadding(views::GridLayout::kFixedSize, kColumnId,
-                              views::GridLayout::kFixedSize,
-                              hover_list_spacing);
-  std::unique_ptr<views::Button> button(
+  // Add buttons.
+  // To make the rest of the layout simpler, they live in their own grid layout.
+  auto button_view = std::make_unique<views::View>();
+  views::GridLayout* button_layout =
+      button_view->SetLayoutManager(std::make_unique<views::GridLayout>());
+  views::ColumnSet* button_column_set = button_layout->AddColumnSet(0);
+  button_column_set->AddColumn(views::GridLayout::LEADING,
+                               views::GridLayout::CENTER, 0.0,
+                               views::GridLayout::USE_PREF, 0, 0);
+  button_column_set->AddPaddingColumn(1.f, 1);
+  button_column_set->AddColumn(views::GridLayout::TRAILING,
+                               views::GridLayout::FILL, 0.0,
+                               views::GridLayout::USE_PREF, 0, 0);
+  button_column_set->AddPaddingColumn(
+      views::GridLayout::kFixedSize,
+      layout_provider->GetDistanceMetric(
+          views::DISTANCE_RELATED_BUTTON_HORIZONTAL));
+  button_column_set->AddColumn(views::GridLayout::TRAILING,
+                               views::GridLayout::FILL, 0.0,
+                               views::GridLayout::USE_PREF, 0, 0);
+
+  button_layout->StartRow(views::GridLayout::kFixedSize, kColumnId);
+
+  // More info button.
+  auto info_text =
+      l10n_util::GetStringUTF16(IDS_PAGE_INFO_SAFETY_TIP_MORE_INFO_LINK);
+  auto info_link = std::make_unique<views::StyledLabel>(info_text, this);
+  views::StyledLabel::RangeStyleInfo link_style =
+      views::StyledLabel::RangeStyleInfo::CreateForLink();
+  gfx::Range details_range(0, info_text.length());
+  info_link->AddStyleRange(details_range, link_style);
+  info_link->SizeToFit(0);
+  info_button_ = button_layout->AddView(std::move(info_link));
+
+  // Ignore button.
+  std::unique_ptr<views::Button> ignore_button(
+      views::MdTextButton::CreateSecondaryUiButton(
+          this,
+          l10n_util::GetStringUTF16(IDS_PAGE_INFO_SAFETY_TIP_IGNORE_BUTTON)));
+  ignore_button->SetID(
+      PageInfoBubbleView::VIEW_ID_PAGE_INFO_BUTTON_IGNORE_WARNING);
+  ignore_button_ = button_layout->AddView(std::move(ignore_button));
+
+  // Leave site button.
+  std::unique_ptr<views::Button> leave_button(
       views::MdTextButton::CreateSecondaryUiBlueButton(
           this,
           l10n_util::GetStringUTF16(
               safety_tips::GetSafetyTipLeaveButtonId(safety_tip_status))));
-  button->SetID(PageInfoBubbleView::VIEW_ID_PAGE_INFO_BUTTON_LEAVE_SITE);
-  leave_button_ =
-      layout->AddView(std::move(button), 1, 1, views::GridLayout::TRAILING,
-                      views::GridLayout::LEADING);
+  leave_button->SetID(PageInfoBubbleView::VIEW_ID_PAGE_INFO_BUTTON_LEAVE_SITE);
+  leave_button_ = button_layout->AddView(std::move(leave_button));
+
+  bottom_layout->StartRowWithPadding(views::GridLayout::kFixedSize, kColumnId,
+                                     views::GridLayout::kFixedSize, spacing);
+  bottom_layout->AddView(
+      std::move(button_view), 1, 1, views::GridLayout::LEADING,
+      views::GridLayout::LEADING,
+      layout_provider->GetDistanceMetric(DISTANCE_BUBBLE_PREFERRED_WIDTH) -
+          insets.left() - insets.right(),
+      0);
+  bubble_layout->StartRow(views::GridLayout::kFixedSize, kColumnId);
+  bubble_layout->AddView(std::move(bottom_view));
 
   Layout();
   SizeToContents();
@@ -159,15 +232,29 @@
   switch (button->GetID()) {
     case PageInfoBubbleView::VIEW_ID_PAGE_INFO_BUTTON_LEAVE_SITE:
       action_taken_ = safety_tips::SafetyTipInteraction::kLeaveSite;
-      auto url = safety_tip_status_ == SafetyTipStatus::kLookalike
-                     ? suggested_url_
-                     : GURL(safety_tips::kSafeUrl);
-      safety_tips::LeaveSite(web_contents(), url);
+      safety_tips::LeaveSite(web_contents(),
+                             safety_tip_status_ == SafetyTipStatus::kLookalike
+                                 ? suggested_url_
+                                 : GURL(safety_tips::kSafeUrl));
+      return;
+
+    case PageInfoBubbleView::VIEW_ID_PAGE_INFO_BUTTON_IGNORE_WARNING:
+      action_taken_ = safety_tips::SafetyTipInteraction::kDismiss;
+      GetWidget()->CloseWithReason(
+          views::Widget::ClosedReason::kCancelButtonClicked);
       return;
   }
   NOTREACHED();
 }
 
+void SafetyTipPageInfoBubbleView::StyledLabelLinkClicked(
+    views::StyledLabel* label,
+    const gfx::Range& range,
+    int event_flags) {
+  action_taken_ = safety_tips::SafetyTipInteraction::kLearnMore;
+  safety_tips::OpenHelpCenter(web_contents());
+}
+
 namespace safety_tips {
 
 void ShowSafetyTipDialog(
diff --git a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view.h b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view.h
index 69e0fb9..4ade5f03 100644
--- a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view.h
+++ b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view.h
@@ -9,6 +9,8 @@
 #include "chrome/browser/ui/views/page_info/page_info_bubble_view_base.h"
 #include "components/security_state/core/security_state.h"
 #include "ui/views/controls/button/button.h"
+#include "ui/views/controls/styled_label.h"
+#include "ui/views/controls/styled_label_listener.h"
 
 namespace content {
 class WebContents;
@@ -19,7 +21,6 @@
 }  // namespace gfx
 
 namespace views {
-class Button;
 class View;
 class Widget;
 }  // namespace views
@@ -28,7 +29,8 @@
 // without all of the details. Safety tip info is still displayed in the usual
 // PageInfoBubbleView, just less prominently.
 class SafetyTipPageInfoBubbleView : public PageInfoBubbleViewBase,
-                                    public views::ButtonListener {
+                                    public views::ButtonListener,
+                                    public views::StyledLabelListener {
  public:
   // If |anchor_view| is nullptr, or has no Widget, |parent_window| may be
   // provided to ensure this bubble is closed when the parent closes.
@@ -53,9 +55,16 @@
   // views::ButtonListener:
   void ButtonPressed(views::Button* button, const ui::Event& event) override;
 
+  // views::StyledLabelListener:
+  void StyledLabelLinkClicked(views::StyledLabel* label,
+                              const gfx::Range& range,
+                              int event_flags) override;
+
  private:
   friend class SafetyTipPageInfoBubbleViewBrowserTest;
 
+  views::StyledLabel* GetLearnMoreLinkForTesting() { return info_button_; }
+  views::Button* GetIgnoreButtonForTesting() { return ignore_button_; }
   views::Button* GetLeaveButtonForTesting() { return leave_button_; }
 
   const security_state::SafetyTipStatus safety_tip_status_;
@@ -67,6 +76,8 @@
   // applicable (for SafetyTipStatus::kLookalike).
   const GURL suggested_url_;
 
+  views::StyledLabel* info_button_;
+  views::Button* ignore_button_;
   views::Button* leave_button_;
   base::OnceCallback<void(safety_tips::SafetyTipInteraction)> close_callback_;
   safety_tips::SafetyTipInteraction action_taken_ =
diff --git a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc
index f45f06f3..a5532da2 100644
--- a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc
+++ b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc
@@ -44,6 +44,7 @@
 #include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/window_open_disposition.h"
+#include "ui/gfx/range/range.h"
 #include "ui/views/test/widget_test.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/widget/widget_observer.h"
@@ -200,6 +201,14 @@
     PerformMouseClickOnView(bubble->GetLeaveButtonForTesting());
   }
 
+  void ClickLearnMoreLink() {
+    // This class is a friend to SafetyTipPageInfoBubbleView.
+    auto* bubble = static_cast<SafetyTipPageInfoBubbleView*>(
+        PageInfoBubbleViewBase::GetPageInfoBubbleForTesting());
+    bubble->StyledLabelLinkClicked(bubble->GetLearnMoreLinkForTesting(),
+                                   gfx::Range(), 0);
+  }
+
   void CloseWarningLeaveSite(Browser* browser) {
     if (ui_status() == UIStatus::kDisabled) {
       return;
@@ -301,6 +310,21 @@
   ASSERT_NO_FATAL_FAILURE(CheckPageInfoDoesNotShowSafetyTipInfo(browser()));
 }
 
+// Test that clicking 'learn more' opens a help center article.
+IN_PROC_BROWSER_TEST_P(SafetyTipPageInfoBubbleViewBrowserTest,
+                       LearnMoreOpensHelpCenter) {
+  if (ui_status() == UIStatus::kDisabled) {
+    return;
+  }
+
+  auto kNavigatedUrl = GetURL("site1.com");
+  TriggerWarning(browser(), kNavigatedUrl, WindowOpenDisposition::CURRENT_TAB);
+
+  content::WebContentsAddedObserver new_tab_observer;
+  ClickLearnMoreLink();
+  EXPECT_NE(kNavigatedUrl, new_tab_observer.GetWebContents()->GetURL());
+}
+
 // If the user clicks 'leave site', the warning should re-appear when the user
 // re-visits the page.
 IN_PROC_BROWSER_TEST_P(SafetyTipPageInfoBubbleViewBrowserTest,
diff --git a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
index 2030d18..91d51116 100644
--- a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
+++ b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
@@ -30,7 +30,6 @@
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/tabs/tab_strip_model_delegate.h"
 #include "chrome/browser/ui/tabs/tab_utils.h"
-#include "chrome/browser/ui/thumbnails/thumbnail_tab_helper.h"
 #include "chrome/browser/ui/views/tabs/tab.h"
 #include "chrome/browser/ui/views/tabs/tab_drag_controller.h"
 #include "chrome/browser/ui/views/tabs/tab_strip.h"
@@ -482,9 +481,9 @@
 
       // A move may have resulted in the pinned state changing, so pass in a
       // TabRendererData.
-      tabstrip_->MoveTab(move->from_index, move->to_index,
-                         TabRendererDataFromModel(
-                             move->contents, move->to_index, EXISTING_TAB));
+      tabstrip_->MoveTab(
+          move->from_index, move->to_index,
+          TabRendererData::FromTabInModel(model_, move->to_index));
       break;
     }
     case TabStripModelChange::kReplaced: {
@@ -560,37 +559,10 @@
   return browser_view_->frame()->GetFrameView();
 }
 
-TabRendererData BrowserTabStripController::TabRendererDataFromModel(
-    WebContents* contents,
-    int model_index,
-    TabStatus tab_status) {
-  TabRendererData data;
-  TabUIHelper* const tab_ui_helper = TabUIHelper::FromWebContents(contents);
-  data.favicon = tab_ui_helper->GetFavicon().AsImageSkia();
-  ThumbnailTabHelper* const thumbnail_tab_helper =
-      ThumbnailTabHelper::FromWebContents(contents);
-  if (thumbnail_tab_helper)
-    data.thumbnail = thumbnail_tab_helper->thumbnail();
-  data.network_state = TabNetworkStateForWebContents(contents);
-  data.title = tab_ui_helper->GetTitle();
-  data.visible_url = contents->GetVisibleURL();
-  data.last_committed_url = contents->GetLastCommittedURL();
-  data.crashed_status = contents->GetCrashedStatus();
-  data.incognito = contents->GetBrowserContext()->IsOffTheRecord();
-  data.pinned = model_->IsTabPinned(model_index);
-  data.show_icon = data.pinned || favicon::ShouldDisplayFavicon(contents);
-  data.blocked = model_->IsTabBlocked(model_index);
-  data.alert_state =
-      chrome::GetHighestPriorityTabAlertStateForContents(contents);
-  data.should_hide_throbber = tab_ui_helper->ShouldHideThrobber();
-  return data;
-}
-
 void BrowserTabStripController::SetTabDataAt(content::WebContents* web_contents,
                                              int model_index) {
-  tabstrip_->SetTabData(
-      model_index,
-      TabRendererDataFromModel(web_contents, model_index, EXISTING_TAB));
+  tabstrip_->SetTabData(model_index,
+                        TabRendererData::FromTabInModel(model_, model_index));
 }
 
 void BrowserTabStripController::AddTab(WebContents* contents,
@@ -599,7 +571,7 @@
   // Cancel any pending tab transition.
   hover_tab_selector_.CancelTabTransition();
 
-  tabstrip_->AddTabAt(index, TabRendererDataFromModel(contents, index, NEW_TAB),
+  tabstrip_->AddTabAt(index, TabRendererData::FromTabInModel(model_, index),
                       is_active);
 }
 
diff --git a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h
index 1212ebd..2118a35 100644
--- a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h
+++ b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h
@@ -20,7 +20,6 @@
 class Browser;
 class BrowserNonClientFrameView;
 class Tab;
-struct TabRendererData;
 
 namespace content {
 class WebContents;
@@ -113,20 +112,9 @@
  private:
   class TabContextMenuContents;
 
-  // The context in which TabRendererDataFromModel is being called.
-  enum TabStatus {
-    NEW_TAB,
-    EXISTING_TAB
-  };
-
   BrowserNonClientFrameView* GetFrameView();
   const BrowserNonClientFrameView* GetFrameView() const;
 
-  // Returns the TabRendererData for the specified tab.
-  TabRendererData TabRendererDataFromModel(content::WebContents* contents,
-                                           int model_index,
-                                           TabStatus tab_status);
-
   // Invokes tabstrip_->SetTabData.
   void SetTabDataAt(content::WebContents* web_contents, int model_index);
 
diff --git a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc
index 7d4b407..626b2d4 100644
--- a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc
@@ -11,7 +11,7 @@
 #include "base/stl_util.h"
 #include "chrome/browser/apps/app_service/app_service_proxy.h"
 #include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
 #include "chrome/browser/supervised_user/supervised_user_service.h"
diff --git a/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc
index d8a5fa1..c88297b 100644
--- a/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc
@@ -5,7 +5,7 @@
 #include "chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h"
 
 #include "base/metrics/histogram_macros.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/screens/recommend_apps_screen.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_manager.h"
diff --git a/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc
index 3542f432e..311bd57 100644
--- a/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc
@@ -9,8 +9,8 @@
 #include "base/logging.h"
 #include "base/metrics/histogram_macros.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/chromeos/login/oobe_screen.h"
 #include "chrome/browser/chromeos/login/screens/supervision_transition_screen.h"
 #include "chrome/browser/profiles/profile_manager.h"
diff --git a/chrome/browser/ui/webui/management_ui.cc b/chrome/browser/ui/webui/management_ui.cc
index cf98a0cd..c7aa92a 100644
--- a/chrome/browser/ui/webui/management_ui.cc
+++ b/chrome/browser/ui/webui/management_ui.cc
@@ -115,14 +115,12 @@
 #endif  // defined(OS_CHROMEOS)
 
   source->UseStringsJs();
+  source->EnableReplaceI18nInJS();
   // Add required resources.
-  source->AddResourcePath("management_browser_proxy.html",
-                          IDR_MANAGEMENT_BROWSER_PROXY_HTML);
   source->AddResourcePath("management_browser_proxy.js",
                           IDR_MANAGEMENT_BROWSER_PROXY_JS);
-  source->AddResourcePath("management_ui.html", IDR_MANAGEMENT_UI_HTML);
   source->AddResourcePath("management_ui.js", IDR_MANAGEMENT_UI_JS);
-  source->AddResourcePath("icons.html", IDR_MANAGEMENT_ICONS_HTML);
+  source->AddResourcePath("icons.js", IDR_MANAGEMENT_ICONS_JS);
   source->SetDefaultResource(IDR_MANAGEMENT_HTML);
   return source;
 }
diff --git a/chrome/browser/ui/webui/management_ui_browsertest.cc b/chrome/browser/ui/webui/management_ui_browsertest.cc
index 8cd3f96..e358945 100644
--- a/chrome/browser/ui/webui/management_ui_browsertest.cc
+++ b/chrome/browser/ui/webui/management_ui_browsertest.cc
@@ -59,7 +59,7 @@
 
   // The browser is not managed.
   const std::string javascript =
-      "management.ManagementBrowserProxyImpl.getInstance()"
+      "window.ManagementBrowserProxyImpl.getInstance()"
       "  .getContextualManagedData()"
       "  .then(managed_result => "
       "    domAutomationController.send(JSON.stringify(managed_result)));";
diff --git a/chrome/browser/ui/webui/settings/about_handler.cc b/chrome/browser/ui/webui/settings/about_handler.cc
index 8c98365c..f4e4940 100644
--- a/chrome/browser/ui/webui/settings/about_handler.cc
+++ b/chrome/browser/ui/webui/settings/about_handler.cc
@@ -55,7 +55,6 @@
 
 #if defined(OS_CHROMEOS)
 #include "base/i18n/time_formatting.h"
-#include "base/system/sys_info.h"
 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h"
 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos_factory.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
@@ -71,7 +70,6 @@
 #include "chromeos/constants/chromeos_switches.h"
 #include "chromeos/dbus/power/power_manager_client.h"
 #include "chromeos/dbus/update_engine_client.h"
-#include "chromeos/dbus/util/version_loader.h"
 #include "chromeos/network/network_state.h"
 #include "chromeos/network/network_state_handler.h"
 #include "chromeos/system/statistics_provider.h"
@@ -228,21 +226,6 @@
   return std::string();
 }
 
-std::unique_ptr<base::DictionaryValue> GetVersionInfo() {
-  std::unique_ptr<base::DictionaryValue> version_info(
-      new base::DictionaryValue);
-
-  version_info->SetString("osVersion",
-                          chromeos::version_loader::GetVersion(
-                              chromeos::version_loader::VERSION_FULL));
-  version_info->SetString("arcVersion",
-                          chromeos::version_loader::GetARCVersion());
-  version_info->SetString("osFirmware",
-                          chromeos::version_loader::GetFirmware());
-
-  return version_info;
-}
-
 #endif  // defined(OS_CHROMEOS)
 
 std::string UpdateStatusToString(VersionUpdater::Status status) {
@@ -356,16 +339,6 @@
                          os_with_linux_license);
   html_source->AddBoolean("aboutEnterpriseManaged", IsEnterpriseManaged());
 
-  base::Time build_time = base::SysInfo::GetLsbReleaseTime();
-  base::string16 build_date = base::TimeFormatFriendlyDate(build_time);
-  html_source->AddString("aboutBuildDate", build_date);
-
-  base::CommandLine::StringType command_line =
-      base::CommandLine::ForCurrentProcess()->GetCommandLineString();
-  html_source->AddString("aboutCommandLine", command_line);
-
-  html_source->AddString("aboutUserAgent", GetUserAgent());
-  html_source->AddString("aboutJsEngineVersion", V8_VERSION_STRING);
   html_source->AddString("endOfLifeMessage", l10n_util::GetStringFUTF16(
                                                  IDS_EOL_NOTIFICATION_EOL,
                                                  ui::GetChromeOSDeviceName()));
@@ -406,9 +379,6 @@
       base::BindRepeating(&AboutHandler::HandleRequestUpdateOverCellular,
                           base::Unretained(this)));
   web_ui()->RegisterMessageCallback(
-      "getVersionInfo", base::BindRepeating(&AboutHandler::HandleGetVersionInfo,
-                                            base::Unretained(this)));
-  web_ui()->RegisterMessageCallback(
       "getRegulatoryInfo",
       base::BindRepeating(&AboutHandler::HandleGetRegulatoryInfo,
                           base::Unretained(this)));
@@ -601,25 +571,6 @@
   }
 }
 
-void AboutHandler::HandleGetVersionInfo(const base::ListValue* args) {
-  CHECK_EQ(1U, args->GetSize());
-  std::string callback_id;
-  CHECK(args->GetString(0, &callback_id));
-
-  base::PostTaskAndReplyWithResult(
-      FROM_HERE,
-      {base::ThreadPool(), base::MayBlock(), base::TaskPriority::USER_VISIBLE},
-      base::Bind(&GetVersionInfo),
-      base::Bind(&AboutHandler::OnGetVersionInfoReady,
-                 weak_factory_.GetWeakPtr(), callback_id));
-}
-
-void AboutHandler::OnGetVersionInfoReady(
-    std::string callback_id,
-    std::unique_ptr<base::DictionaryValue> version_info) {
-  ResolveJavascriptCallback(base::Value(callback_id), *version_info);
-}
-
 void AboutHandler::HandleGetRegulatoryInfo(const base::ListValue* args) {
   CHECK_EQ(1U, args->GetSize());
   std::string callback_id;
diff --git a/chrome/browser/ui/webui/settings/about_handler.h b/chrome/browser/ui/webui/settings/about_handler.h
index d585960..679bad2 100644
--- a/chrome/browser/ui/webui/settings/about_handler.h
+++ b/chrome/browser/ui/webui/settings/about_handler.h
@@ -25,7 +25,6 @@
 #endif  // defined(OS_CHROMEOS)
 
 namespace base {
-class DictionaryValue;
 class FilePath;
 class ListValue;
 }
@@ -100,12 +99,6 @@
   // Sets the release track version.
   void HandleSetChannel(const base::ListValue* args);
 
-  // Retrieves OS, ARC and firmware versions.
-  void HandleGetVersionInfo(const base::ListValue* args);
-  void OnGetVersionInfoReady(
-      std::string callback_id,
-      std::unique_ptr<base::DictionaryValue> version_info);
-
   // Retrieves combined channel info.
   void HandleGetChannelInfo(const base::ListValue* args);
   // Callbacks for version_updater_->GetChannel calls.
diff --git a/chrome/browser/ui/webui/settings/chromeos/android_apps_handler.h b/chrome/browser/ui/webui/settings/chromeos/android_apps_handler.h
index 3a7d0549e..db3d375 100644
--- a/chrome/browser/ui/webui/settings/chromeos/android_apps_handler.h
+++ b/chrome/browser/ui/webui/settings/chromeos/android_apps_handler.h
@@ -11,7 +11,7 @@
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/scoped_observer.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
 #include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h"
 
diff --git a/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.h b/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.h
index e4b5023c..4c901c99 100644
--- a/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.h
+++ b/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.h
@@ -16,7 +16,7 @@
 #include "base/optional.h"
 #include "base/scoped_observer.h"
 #include "chrome/browser/browsing_data/site_data_size_collector.h"
-#include "chrome/browser/chromeos/arc/arc_session_manager.h"
+#include "chrome/browser/chromeos/arc/session/arc_session_manager.h"
 #include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h"
 #include "chromeos/dbus/cryptohome/rpc.pb.h"
 #include "chromeos/disks/disk_mount_manager.h"
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
index 4582dae..9b2af53 100644
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -430,21 +430,17 @@
     {"aboutUpgradeUpdatingPercent", IDS_SETTINGS_UPGRADE_UPDATING_PERCENT},
 
 #if defined(OS_CHROMEOS)
-    {"aboutArcVersionLabel", IDS_SETTINGS_ABOUT_PAGE_ARC_VERSION},
-    {"aboutBuildDateLabel", IDS_VERSION_UI_BUILD_DATE},
+    {"aboutBuildDetailsTitle", IDS_OS_SETTINGS_ABOUT_PAGE_BUILD_DETAILS},
     {"aboutChannelBeta", IDS_SETTINGS_ABOUT_PAGE_CURRENT_CHANNEL_BETA},
     {"aboutChannelCanary", IDS_SETTINGS_ABOUT_PAGE_CURRENT_CHANNEL_CANARY},
     {"aboutChannelDev", IDS_SETTINGS_ABOUT_PAGE_CURRENT_CHANNEL_DEV},
     {"aboutChannelLabel", IDS_SETTINGS_ABOUT_PAGE_CHANNEL},
     {"aboutChannelStable", IDS_SETTINGS_ABOUT_PAGE_CURRENT_CHANNEL_STABLE},
     {"aboutCheckForUpdates", IDS_SETTINGS_ABOUT_PAGE_CHECK_FOR_UPDATES},
-    {"aboutCommandLineLabel", IDS_VERSION_UI_COMMAND_LINE},
     {"aboutCurrentlyOnChannel", IDS_SETTINGS_ABOUT_PAGE_CURRENT_CHANNEL},
     {"aboutDetailedBuildInfo", IDS_SETTINGS_ABOUT_PAGE_DETAILED_BUILD_INFO},
-    {"aboutFirmwareLabel", IDS_SETTINGS_ABOUT_PAGE_FIRMWARE},
     {"aboutOSBanner", IDS_SETTINGS_ABOUT_OS_BANNER},
     {"aboutEndOfLifeTitle", IDS_SETTINGS_ABOUT_PAGE_END_OF_LIFE_TITLE},
-    {"aboutPlatformLabel", IDS_SETTINGS_ABOUT_PAGE_PLATFORM},
     {"aboutRelaunchAndPowerwash",
      IDS_SETTINGS_ABOUT_PAGE_RELAUNCH_AND_POWERWASH},
     {"aboutRollbackInProgress", IDS_SETTINGS_UPGRADE_ROLLBACK_IN_PROGRESS},
@@ -453,7 +449,6 @@
      IDS_SETTINGS_UPGRADE_UPDATING_CHANNEL_SWITCH},
     {"aboutUpgradeSuccessChannelSwitch",
      IDS_SETTINGS_UPGRADE_SUCCESSFUL_CHANNEL_SWITCH},
-    {"aboutUserAgentLabel", IDS_VERSION_UI_USER_AGENT},
     {"aboutTPMFirmwareUpdateTitle",
      IDS_SETTINGS_ABOUT_TPM_FIRMWARE_UPDATE_TITLE},
     {"aboutTPMFirmwareUpdateDescription",
@@ -2783,6 +2778,8 @@
     {"siteSettingsCategoryCookies", IDS_SETTINGS_SITE_SETTINGS_COOKIES},
     {"siteSettingsCategoryHandlers", IDS_SETTINGS_SITE_SETTINGS_HANDLERS},
     {"siteSettingsCategoryImages", IDS_SETTINGS_SITE_SETTINGS_IMAGES},
+    {"siteSettingsCategoryInsecureContent",
+     IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT},
     {"siteSettingsCategoryLocation", IDS_SETTINGS_SITE_SETTINGS_LOCATION},
     {"siteSettingsCategoryJavascript", IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT},
     {"siteSettingsCategoryMicrophone", IDS_SETTINGS_SITE_SETTINGS_MIC},
@@ -2819,6 +2816,10 @@
     {"siteSettingsMic", IDS_SETTINGS_SITE_SETTINGS_MIC},
     {"siteSettingsNotifications", IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS},
     {"siteSettingsImages", IDS_SETTINGS_SITE_SETTINGS_IMAGES},
+    {"siteSettingsInsecureContent",
+     IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT},
+    {"siteSettingsInsecureContentBlock",
+     IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT_BLOCK},
     {"siteSettingsJavascript", IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT},
     {"siteSettingsSound", IDS_SETTINGS_SITE_SETTINGS_SOUND},
     {"siteSettingsSoundAllow", IDS_SETTINGS_SITE_SETTINGS_SOUND_ALLOW},
@@ -3113,6 +3114,10 @@
       "enableRemovingAllThirdPartyCookies",
       base::FeatureList::IsEnabled(
           browsing_data::features::kEnableRemovingAllThirdPartyCookies));
+
+  html_source->AddBoolean(
+      "enableInsecureContentContentSetting",
+      base::FeatureList::IsEnabled(features::kMixedContentSiteSetting));
 }
 
 #if defined(OS_CHROMEOS)
diff --git a/chrome/browser/ui/webui/site_settings_helper.cc b/chrome/browser/ui/webui/site_settings_helper.cc
index 2e949140..0cacb0b 100644
--- a/chrome/browser/ui/webui/site_settings_helper.cc
+++ b/chrome/browser/ui/webui/site_settings_helper.cc
@@ -92,13 +92,13 @@
     {CONTENT_SETTINGS_TYPE_HID_CHOOSER_DATA, kHidChooserDataGroupType},
     {CONTENT_SETTINGS_TYPE_NATIVE_FILE_SYSTEM_WRITE_GUARD,
      "native-file-system-write"},
+    {CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, "mixed-script"},
 
     // Add new content settings here if a corresponding Javascript string
     // representation for it is not required. Note some exceptions do have UI in
     // Content Settings but do not require a separate string.
     {CONTENT_SETTINGS_TYPE_DEFAULT, nullptr},
     {CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, nullptr},
-    {CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, nullptr},
     {CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS, nullptr},
     {CONTENT_SETTINGS_TYPE_APP_BANNER, nullptr},
     {CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, nullptr},
diff --git a/chrome/browser/ui/webui/tab_strip/tab_strip_ui.cc b/chrome/browser/ui/webui/tab_strip/tab_strip_ui.cc
index 3f88e89c..321ba9d 100644
--- a/chrome/browser/ui/webui/tab_strip/tab_strip_ui.cc
+++ b/chrome/browser/ui/webui/tab_strip/tab_strip_ui.cc
@@ -16,6 +16,9 @@
 #include "chrome/browser/themes/theme_properties.h"
 #include "chrome/browser/themes/theme_service.h"
 #include "chrome/browser/themes/theme_service_factory.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
 #include "chrome/browser/ui/webui/favicon_source.h"
 #include "chrome/browser/ui/webui/theme_handler.h"
 #include "chrome/common/webui_url_constants.h"
@@ -57,15 +60,27 @@
   std::vector<unsigned char> result_;
 };
 
-class TabStripUIHandler : public content::WebUIMessageHandler {
+class TabStripUIHandler : public content::WebUIMessageHandler,
+                          public TabStripModelObserver {
  public:
-  explicit TabStripUIHandler(Profile* profile)
-      : profile_(profile),
+  explicit TabStripUIHandler(Browser* browser)
+      : browser_(browser),
         thumbnail_tracker_(base::Bind(&TabStripUIHandler::HandleThumbnailUpdate,
-                                      base::Unretained(this))) {}
+                                      base::Unretained(this))) {
+    browser_->tab_strip_model()->AddObserver(this);
+  }
   ~TabStripUIHandler() override = default;
 
+  // TabStripModelObserver:
+  void TabChangedAt(content::WebContents* contents,
+                    int index,
+                    TabChangeType change_type) override {
+    // TODO(crbug.com/1006946): re-fetch the TabRendererData using
+    // |TabRendererData::FromTabInModel()|.
+  }
+
  protected:
+  // content::WebUIMessageHandler:
   void RegisterMessages() override {
     web_ui()->RegisterMessageCallback(
         "getThemeColors", base::Bind(&TabStripUIHandler::HandleGetThemeColors,
@@ -84,7 +99,7 @@
     const base::Value& callback_id = args->GetList()[0];
 
     const ui::ThemeProvider& tp =
-        ThemeService::GetThemeProviderForProfile(profile_);
+        ThemeService::GetThemeProviderForProfile(browser_->profile());
 
     // This should return an object of CSS variables to rgba values so that
     // the WebUI can use the CSS variables to color the tab strip
@@ -115,10 +130,6 @@
     colors.SetString("--tabstrip-indicator-capturing-color",
                      color_utils::SkColorToRgbaString(tp.GetColor(
                          ThemeProperties::COLOR_TAB_ALERT_CAPTURING)));
-    colors.SetString("--tabstrip-tab-blocked-color",
-                     color_utils::SkColorToRgbaString(
-                         ui::NativeTheme::GetInstanceForWeb()->GetSystemColor(
-                             ui::NativeTheme::kColorId_ProminentButtonColor)));
 
     ResolveJavascriptCallback(callback_id, colors);
   }
@@ -131,8 +142,8 @@
       return;
 
     content::WebContents* tab = nullptr;
-    if (!extensions::ExtensionTabUtil::GetTabById(tab_id, profile_, true,
-                                                  &tab)) {
+    if (!extensions::ExtensionTabUtil::GetTabById(tab_id, browser_->profile(),
+                                                  true, &tab)) {
       // ID didn't refer to a valid tab.
       DVLOG(1) << "Invalid tab ID";
       return;
@@ -180,7 +191,7 @@
                       base::Value(encoded_image));
   }
 
-  Profile* profile_;
+  Browser* const browser_;
   ThumbnailTracker thumbnail_tracker_;
 
   DISALLOW_COPY_AND_ASSIGN(TabStripUIHandler);
@@ -222,7 +233,10 @@
                    profile, chrome::FaviconUrlFormat::kFavicon2));
 
   web_ui->AddMessageHandler(std::make_unique<ThemeHandler>());
-  web_ui->AddMessageHandler(std::make_unique<TabStripUIHandler>(profile));
 }
 
 TabStripUI::~TabStripUI() {}
+
+void TabStripUI::Initialize(Browser* browser) {
+  web_ui()->AddMessageHandler(std::make_unique<TabStripUIHandler>(browser));
+}
diff --git a/chrome/browser/ui/webui/tab_strip/tab_strip_ui.h b/chrome/browser/ui/webui/tab_strip/tab_strip_ui.h
index 8e8b31d..c677074 100644
--- a/chrome/browser/ui/webui/tab_strip/tab_strip_ui.h
+++ b/chrome/browser/ui/webui/tab_strip/tab_strip_ui.h
@@ -9,6 +9,8 @@
 #include "chrome/browser/ui/webui/tab_strip/thumbnail_tracker.h"
 #include "content/public/browser/web_ui_controller.h"
 
+class Browser;
+
 // The WebUI version of the tab strip in the browser. It is currently only
 // supported on ChromeOS in tablet mode.
 class TabStripUI : public content::WebUIController {
@@ -16,6 +18,10 @@
   explicit TabStripUI(content::WebUI* web_ui);
   ~TabStripUI() override;
 
+  // Initialize TabStripUI with the Browser it is running in. Must be called
+  // exactly once. The WebUI won't work until this is called.
+  void Initialize(Browser* browser);
+
  private:
   void HandleThumbnailUpdate(int extension_tab_id, gfx::ImageSkia image);
 
diff --git a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc b/chrome/browser/upgrade_detector/upgrade_detector_impl.cc
index 432e378..07850fd 100644
--- a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc
+++ b/chrome/browser/upgrade_detector/upgrade_detector_impl.cc
@@ -31,6 +31,7 @@
 #include "base/time/default_tick_clock.h"
 #include "base/time/tick_clock.h"
 #include "base/time/time.h"
+#include "build/branding_buildflags.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/google/google_brand.h"
 #include "chrome/browser/obsolete_system/obsolete_system.h"
@@ -74,6 +75,14 @@
 // The number of days after which we identify a build/install as outdated.
 constexpr base::TimeDelta kOutdatedBuildAge = base::TimeDelta::FromDays(12 * 7);
 
+constexpr bool ShouldDetectOutdatedBuilds() {
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+  return true;
+#else   // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+  return false;
+#endif  // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+}
+
 // Return the string that was passed as a value for the
 // kCheckForUpdateIntervalSec switch.
 std::string CmdLineInterval() {
@@ -414,6 +423,9 @@
       return false;
     }
 #endif
+
+    if (!ShouldDetectOutdatedBuilds())
+      return false;
   }
 
   base::Time network_time;
diff --git a/chrome/browser/vr/service/browser_xr_runtime.cc b/chrome/browser/vr/service/browser_xr_runtime.cc
index 5f8dbbe..12bf6e8 100644
--- a/chrome/browser/vr/service/browser_xr_runtime.cc
+++ b/chrome/browser/vr/service/browser_xr_runtime.cc
@@ -13,6 +13,7 @@
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/web_contents.h"
+#include "content/public/common/content_features.h"
 #include "device/vr/buildflags/buildflags.h"
 #include "device/vr/vr_device.h"
 #include "ui/gfx/transform.h"
@@ -167,6 +168,13 @@
     device::mojom::XRSessionFeature::REF_SPACE_LOCAL_FLOOR,
 };
 
+constexpr device::mojom::XRSessionFeature kARCoreDeviceFeatures[] = {
+    device::mojom::XRSessionFeature::REF_SPACE_VIEWER,
+    device::mojom::XRSessionFeature::REF_SPACE_LOCAL,
+    device::mojom::XRSessionFeature::REF_SPACE_LOCAL_FLOOR,
+    device::mojom::XRSessionFeature::REF_SPACE_UNBOUNDED,
+};
+
 #if BUILDFLAG(ENABLE_OPENVR)
 constexpr device::mojom::XRSessionFeature kOpenVRFeatures[] = {
     device::mojom::XRSessionFeature::REF_SPACE_VIEWER,
@@ -241,11 +249,17 @@
 bool BrowserXRRuntime::SupportsFeature(
     device::mojom::XRSessionFeature feature) const {
   switch (id_) {
-    // TODO(crbug.com/995370): Add ARCore feature support.
-    case device::mojom::XRDeviceId::ARCORE_DEVICE_ID:
+    // Test/fake devices support all features.
     case device::mojom::XRDeviceId::WEB_TEST_DEVICE_ID:
     case device::mojom::XRDeviceId::FAKE_DEVICE_ID:
       return true;
+    case device::mojom::XRDeviceId::ARCORE_DEVICE_ID:
+      // Only support DOM overlay if the feature flag is enabled.
+      if (feature ==
+          device::mojom::XRSessionFeature::DOM_OVERLAY_FOR_HANDHELD_AR) {
+        return base::FeatureList::IsEnabled(features::kWebXrArDOMOverlay);
+      }
+      return ContainsFeature(kARCoreDeviceFeatures, feature);
     case device::mojom::XRDeviceId::ORIENTATION_DEVICE_ID:
       return ContainsFeature(kOrientationDeviceFeatures, feature);
     case device::mojom::XRDeviceId::GVR_DEVICE_ID:
diff --git a/chrome/browser/vr/service/vr_service_impl.cc b/chrome/browser/vr/service/vr_service_impl.cc
index c9af49d..18006eb 100644
--- a/chrome/browser/vr/service/vr_service_impl.cc
+++ b/chrome/browser/vr/service/vr_service_impl.cc
@@ -496,6 +496,11 @@
     runtime_options->render_frame_id = render_frame_host_->GetRoutingID();
   }
 #endif
+  // Make the resolved enabled features available to the runtime.
+  runtime_options->enabled_features.reserve(enabled_features.size());
+  for (const auto& feature : enabled_features) {
+    runtime_options->enabled_features.push_back(feature);
+  }
 
   if (runtime_options->immersive) {
     GetSessionMetricsHelper()->ReportRequestPresent(*runtime_options);
diff --git a/chrome/browser/vr/service/xr_runtime_manager.cc b/chrome/browser/vr/service/xr_runtime_manager.cc
index c4c545b..01c5491 100644
--- a/chrome/browser/vr/service/xr_runtime_manager.cc
+++ b/chrome/browser/vr/service/xr_runtime_manager.cc
@@ -155,8 +155,11 @@
       DVLOG(1) << __func__ << ": non-immersive AR mode is unsupported";
       return nullptr;
     }
-    // Return the ARCore runtime.
-    return GetRuntime(device::mojom::XRDeviceId::ARCORE_DEVICE_ID);
+    // Return the ARCore runtime, but only if it supports all required features.
+    auto* runtime = GetRuntime(device::mojom::XRDeviceId::ARCORE_DEVICE_ID);
+    return runtime && runtime->SupportsAllFeatures(options->required_features)
+               ? runtime
+               : nullptr;
   }
 
   if (options->immersive) {
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index f74c4a9c..af5c5c4 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -493,6 +493,13 @@
     "AcknowledgeNtpOverrideOnDeactivate", base::FEATURE_DISABLED_BY_DEFAULT};
 #endif
 
+// Enables showing an entry for mixed content in site settings, which controls
+// allowing blockable mixed content. When enabled, the mixed content shield is
+// not shown on the omnibox, since its functionality is replaced by the
+// setting.
+const base::Feature kMixedContentSiteSetting{"MixedContentSiteSetting",
+                                             base::FEATURE_DISABLED_BY_DEFAULT};
+
 #if !defined(OS_ANDROID)
 const base::Feature kOnConnectNative{"OnConnectNative",
                                      base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h
index 106e4ca..692b6fe 100644
--- a/chrome/common/chrome_features.h
+++ b/chrome/common/chrome_features.h
@@ -319,9 +319,11 @@
 extern const base::Feature kAcknowledgeNtpOverrideOnDeactivate;
 #endif
 
-#if !defined(OS_ANDROID)
 COMPONENT_EXPORT(CHROME_FEATURES)
-extern const base::Feature kOnConnectNative;
+extern const base::Feature kMixedContentSiteSetting;
+
+#if !defined(OS_ANDROID)
+COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kOnConnectNative;
 #endif
 
 #if BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS)
diff --git a/chrome/common/url_constants.cc b/chrome/common/url_constants.cc
index f9f75d4..b625959 100644
--- a/chrome/common/url_constants.cc
+++ b/chrome/common/url_constants.cc
@@ -222,6 +222,9 @@
 const char kResetProfileSettingsLearnMoreURL[] =
     "https://support.google.com/chrome/?p=ui_reset_settings";
 
+const char kSafetyTipHelpCenterURL[] =
+    "https://support.google.com/chrome/?p=safety_tip";
+
 const char kSettingsSearchHelpURL[] =
 #if defined(OS_CHROMEOS)
     "https://support.google.com/chromebook/?p=settings_search_help";
diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h
index bfec16e..e839c1fb 100644
--- a/chrome/common/url_constants.h
+++ b/chrome/common/url_constants.h
@@ -189,6 +189,9 @@
 // "Learn more" URL for resetting profile preferences.
 extern const char kResetProfileSettingsLearnMoreURL[];
 
+// "Learn more" URL for safety tip bubble.
+extern const char kSafetyTipHelpCenterURL[];
+
 // Help URL for the settings page's search feature.
 extern const char kSettingsSearchHelpURL[];
 
diff --git a/chrome/installer/gcapi_mac/gcapi.mm b/chrome/installer/gcapi_mac/gcapi.mm
index 5ab1bbe..8052cb63 100644
--- a/chrome/installer/gcapi_mac/gcapi.mm
+++ b/chrome/installer/gcapi_mac/gcapi.mm
@@ -58,8 +58,8 @@
   // 10.2.
   int mac_os_x_minor_version = darwin_major_version - 4;
 
-  // Chrome is known to work on 10.9 - 10.13.
-  return mac_os_x_minor_version >= 9 && mac_os_x_minor_version <= 13;
+  // Chrome is known to work on 10.10 - 10.15.
+  return mac_os_x_minor_version >= 10 && mac_os_x_minor_version <= 15;
 }
 
 // Returns the pid/gid of the logged-in user, even if getuid() claims that the
diff --git a/chrome/renderer/content_settings_observer.cc b/chrome/renderer/content_settings_observer.cc
index 87b2be2..e45e69f51 100644
--- a/chrome/renderer/content_settings_observer.cc
+++ b/chrome/renderer/content_settings_observer.cc
@@ -8,8 +8,10 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/feature_list.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/string_number_conversions.h"
+#include "chrome/common/chrome_features.h"
 #include "chrome/common/client_hints.mojom.h"
 #include "chrome/common/client_hints/client_hints.h"
 #include "chrome/common/render_messages.h"
@@ -446,16 +448,27 @@
     bool allowed_per_settings,
     const blink::WebSecurityOrigin& origin,
     const blink::WebURL& resource_url) {
+  bool allow = allowed_per_settings;
+
+  if (base::FeatureList::IsEnabled(features::kMixedContentSiteSetting)) {
+    if (content_setting_rules_) {
+      auto setting = GetContentSettingFromRules(
+          content_setting_rules_->mixed_content_rules,
+          render_frame()->GetWebFrame(), GURL());
+      allow |= (setting == CONTENT_SETTING_ALLOW);
+    }
+  } else {
+    allow |= allow_running_insecure_content_;
+    if (!allow) {
+      DidBlockContentType(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT);
+    }
+  }
+
   // Note: this implementation is a mirror of
   // Browser::ShouldAllowRunningInsecureContent.
   FilteredReportInsecureContentRan(GURL(resource_url));
 
-  if (!allow_running_insecure_content_ && !allowed_per_settings) {
-    DidBlockContentType(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT);
-    return false;
-  }
-
-  return true;
+  return allow;
 }
 
 bool ContentSettingsObserver::AllowAutoplay(bool default_value) {
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 22bd7ec..f2c8788 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -81,6 +81,7 @@
   }
 
   generate_jni("test_support_jni_headers") {
+    testonly = true
     sources = [
       "android/test_support/src/org/chromium/chrome/test_support/PaymentRequestTestBridge.java",
     ]
@@ -606,9 +607,6 @@
       "android/browsertests_apk/src/org/chromium/android_browsertests_apk/ChromeBrowserTestsActivity.java",
       "android/browsertests_apk/src/org/chromium/android_browsertests_apk/ChromeBrowserTestsApplication.java",
     ]
-    srcjar_deps = [
-      "//components/module_installer/android:module_installer_build_config",
-    ]
   }
 
   jinja_template("android_browsertests_manifest") {
@@ -2010,12 +2008,12 @@
         "../browser/chromeos/app_mode/kiosk_crash_restore_browsertest.cc",
         "../browser/chromeos/apps/apk_web_app_installer_browsertest.cc",
         "../browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge_browsertest.cc",
-        "../browser/chromeos/arc/arc_session_manager_browsertest.cc",
         "../browser/chromeos/arc/auth/arc_active_directory_enrollment_token_fetcher_browsertest.cc",
         "../browser/chromeos/arc/auth/arc_auth_service_browsertest.cc",
         "../browser/chromeos/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc",
         "../browser/chromeos/arc/enterprise/cert_store/arc_cert_store_bridge_browsertest.cc",
         "../browser/chromeos/arc/intent_helper/arc_settings_service_browsertest.cc",
+        "../browser/chromeos/arc/session/arc_session_manager_browsertest.cc",
         "../browser/chromeos/arc/user_session/arc_user_session_service_browsertest.cc",
         "../browser/chromeos/attestation/attestation_policy_browsertest.cc",
         "../browser/chromeos/base/locale_util_browsertest.cc",
@@ -3671,10 +3669,6 @@
         "//chrome/android/modules/dev_ui/provider:java",
       ]
     }
-
-    srcjar_deps = [
-      "//components/module_installer/android:module_installer_build_config",
-    ]
   } else {
     # !is_android
     sources += [
diff --git a/chrome/test/base/testing_profile.cc b/chrome/test/base/testing_profile.cc
index 68a2a83..06b05c5 100644
--- a/chrome/test/base/testing_profile.cc
+++ b/chrome/test/base/testing_profile.cc
@@ -142,7 +142,7 @@
 #endif
 
 #if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/arc/arc_service_launcher.h"
+#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
 #include "chrome/browser/chromeos/net/delay_network_call.h"
 #include "chrome/browser/chromeos/settings/cros_settings.h"
 #include "chromeos/components/account_manager/account_manager.h"
diff --git a/chrome/test/data/extensions/api_test/automation/tests/tabs/attributes.js b/chrome/test/data/extensions/api_test/automation/tests/tabs/attributes.js
index 0325249..fd5dc748 100644
--- a/chrome/test/data/extensions/api_test/automation/tests/tabs/attributes.js
+++ b/chrome/test/data/extensions/api_test/automation/tests/tabs/attributes.js
@@ -24,10 +24,10 @@
                         'ariaRowCount',
                         'ariaColumnCount' ];
 var TableCellAttributes = [ 'tableCellColumnIndex',
-                            'ariaCellColumnIndex',
+                            'tableCellAriaColumnIndex',
                             'tableCellColumnSpan',
                             'tableCellRowIndex',
-                            'ariaCellRowIndex',
+                            'tableCellAriaRowIndex',
                             'tableCellRowSpan' ];
 
 var disabledTests = [
@@ -204,60 +204,60 @@
     var row1 = table.firstChild;
     var cell1 = row1.firstChild;
     assertEq(0, cell1.tableCellColumnIndex);
-    assertEq(51, cell1.ariaCellColumnIndex);
+    assertEq(51, cell1.tableCellAriaColumnIndex);
     assertEq(1, cell1.tableCellColumnSpan);
     assertEq(0, cell1.tableCellRowIndex);
-    assertEq(101, cell1.ariaCellRowIndex);
+    assertEq(101, cell1.tableCellAriaRowIndex);
     assertEq(1, cell1.tableCellRowSpan);
 
     var cell2 = cell1.nextSibling;
     assertEq(1, cell2.tableCellColumnIndex);
-    assertEq(52, cell2.ariaCellColumnIndex);
+    assertEq(52, cell2.tableCellAriaColumnIndex);
     assertEq(1, cell2.tableCellColumnSpan);
     assertEq(0, cell2.tableCellRowIndex);
-    assertEq(101, cell2.ariaCellRowIndex);
+    assertEq(101, cell2.tableCellAriaRowIndex);
     assertEq(1, cell2.tableCellRowSpan);
 
     var cell3 = cell2.nextSibling;
     assertEq(2, cell3.tableCellColumnIndex);
-    assertEq(53, cell3.ariaCellColumnIndex);
+    assertEq(53, cell3.tableCellAriaColumnIndex);
     assertEq(1, cell3.tableCellColumnSpan);
     assertEq(0, cell3.tableCellRowIndex);
-    assertEq(101, cell3.ariaCellRowIndex);
+    assertEq(101, cell3.tableCellAriaRowIndex);
     assertEq(1, cell3.tableCellRowSpan);
 
     var row2 = row1.nextSibling;
     var cell4 = row2.firstChild;
     assertEq(0, cell4.tableCellColumnIndex);
-    assertEq(51, cell4.ariaCellColumnIndex);
+    assertEq(51, cell4.tableCellAriaColumnIndex);
     assertEq(2, cell4.tableCellColumnSpan);
     assertEq(1, cell4.tableCellRowIndex);
-    assertEq(102, cell4.ariaCellRowIndex);
+    assertEq(102, cell4.tableCellAriaRowIndex);
     assertEq(1, cell4.tableCellRowSpan);
 
     var cell5 = cell4.nextSibling;
     assertEq(2, cell5.tableCellColumnIndex);
-    assertEq(53, cell5.ariaCellColumnIndex);
+    assertEq(53, cell5.tableCellAriaColumnIndex);
     assertEq(1, cell5.tableCellColumnSpan);
     assertEq(1, cell5.tableCellRowIndex);
-    assertEq(102, cell5.ariaCellRowIndex);
+    assertEq(102, cell5.tableCellAriaRowIndex);
     assertEq(2, cell5.tableCellRowSpan);
 
     var row3 = row2.nextSibling;
     var cell6 = row3.firstChild;
     assertEq(0, cell6.tableCellColumnIndex);
-    assertEq(51, cell6.ariaCellColumnIndex);
+    assertEq(51, cell6.tableCellAriaColumnIndex);
     assertEq(1, cell6.tableCellColumnSpan);
     assertEq(2, cell6.tableCellRowIndex);
-    assertEq(103, cell6.ariaCellRowIndex);
+    assertEq(103, cell6.tableCellAriaRowIndex);
     assertEq(1, cell6.tableCellRowSpan);
 
     var cell7 = cell6.nextSibling;
     assertEq(1, cell7.tableCellColumnIndex);
-    assertEq(52, cell7.ariaCellColumnIndex);
+    assertEq(52, cell7.tableCellAriaColumnIndex);
     assertEq(1, cell7.tableCellColumnSpan);
     assertEq(2, cell7.tableCellRowIndex);
-    assertEq(103, cell7.ariaCellRowIndex);
+    assertEq(103, cell7.tableCellAriaRowIndex);
     assertEq(1, cell7.tableCellRowSpan);
 
     chrome.test.succeed();
diff --git a/chrome/test/data/local_ntp/customize_menu_browsertest.js b/chrome/test/data/local_ntp/customize_menu_browsertest.js
index f71392a..21b86e5 100644
--- a/chrome/test/data/local_ntp/customize_menu_browsertest.js
+++ b/chrome/test/data/local_ntp/customize_menu_browsertest.js
@@ -30,6 +30,9 @@
   COLORS_THEME_UNINSTALL: 'colors-theme-uninstall',
   CUSTOMIZATION_MENU: 'customization-menu',
   CUSTOM_BG: 'custom-bg',
+  CUSTOM_BG_ATTR: 'custom-bg-attr',
+  CUSTOM_BG_ATTR_LINE1: 'attr1',
+  CUSTOM_BG_ATTR_LINE2: 'attr2',
   CUSTOM_BG_PREVIEW: 'custom-bg-preview',
   EDIT_BG: 'edit-bg',
   MENU_BACK: 'menu-back',
@@ -338,13 +341,29 @@
 
   $(test.customizeMenu.IDS.EDIT_BG).click();
 
-  // Select a background.
   setupFakeAsyncImageLoad('coll_tile_0');
   $('coll_tile_0').click();
-  $('coll_0_img_tile_0').click();
 
-  // Check that correct styling is applied to the page.
+  // Check styling and attribution for default background.
+  assertFalse(document.body.classList.contains('alternate-logo'));
+  assertEquals(null, $(test.customizeMenu.IDS.CUSTOM_BG_ATTR_LINE1));
+  assertEquals(null, $(test.customizeMenu.IDS.CUSTOM_BG_ATTR_LINE2));
+  assertEquals('', $(test.customizeMenu.IDS.CUSTOM_BG_ATTR).href);
+
+  // Select a background and check that correct styling and attributes are
+  // applied to the page.
+  const image_tile = $('coll_0_img_tile_0');
+  image_tile.click();
   assertTrue(document.body.classList.contains('alternate-logo'));
+  assertEquals(
+      image_tile.dataset.attributionLine1,
+      $(test.customizeMenu.IDS.CUSTOM_BG_ATTR_LINE1).innerText);
+  assertEquals(
+      image_tile.dataset.attributionLine2,
+      $(test.customizeMenu.IDS.CUSTOM_BG_ATTR_LINE2).innerText);
+  assertEquals(
+      image_tile.dataset.attributionActionUrl,
+      $(test.customizeMenu.IDS.CUSTOM_BG_ATTR).href);
 };
 
 /**
@@ -1209,28 +1228,28 @@
     oldImageLoader(event);
     collImg = [
       {
-        attributionActionUrl: 'https://www.google.com',
+        attributionActionUrl: 'https://www.google.com/',
         attributions: ['test1', 'attribution1'],
         collectionId: 'collection1',
         imageUrl: 'chrome-search://local-ntp/background1.jpg',
         thumbnailImageUrl: 'chrome-search://local-ntp/background_thumbnail.jpg1'
       },
       {
-        attributionActionUrl: 'https://www.google.com',
+        attributionActionUrl: 'https://www.google.com/',
         attributions: ['test2', 'attribution2'],
         collectionId: 'collection1',
         imageUrl: 'chrome-search://local-ntp/background2.jpg',
         thumbnailImageUrl: 'chrome-search://local-ntp/background_thumbnail.jpg2'
       },
       {
-        attributionActionUrl: 'https://www.google.com',
+        attributionActionUrl: 'https://www.google.com/',
         attributions: ['test3', 'attribution3'],
         collectionId: 'collection1',
         imageUrl: 'chrome-search://local-ntp/background3.jpg',
         thumbnailImageUrl: 'chrome-search://local-ntp/background_thumbnail.jpg3'
       },
       {
-        attributionActionUrl: 'https://www.google.com',
+        attributionActionUrl: 'https://www.google.com/',
         attributions: ['test4', 'attribution4'],
         collectionId: 'collection1',
         imageUrl: 'chrome-search://local-ntp/background4.jpg',
diff --git a/chrome/test/data/webui/cr_elements/cr_dialog_test.js b/chrome/test/data/webui/cr_elements/cr_dialog_test.js
index f07cace..079e005 100644
--- a/chrome/test/data/webui/cr_elements/cr_dialog_test.js
+++ b/chrome/test/data/webui/cr_elements/cr_dialog_test.js
@@ -238,27 +238,43 @@
       <cr-dialog>
         <div slot="title">title</div>
         <div slot="body">
-          <input></input>
-          <input type="text"></input>
-          <input type="password"></input>
-          <input type="checkbox"></input>
           <foobar></foobar>
+          <input type="checkbox">
+          <input type="text">
+
+          <cr-input type="search"></cr-input>
+          <cr-input type="text"></cr-input>
+
+          <div id="withShadow"></div>
           <button class="action-button">active</button>
-          <cr-input></cr-input>
         </div>
       </cr-dialog>`;
 
     const dialog = document.body.querySelector('cr-dialog');
 
-    const inputElement = document.body.querySelector('input:not([type])');
-    const inputTextElement = document.body.querySelector('input[type="text"]');
-    const inputPasswordElement =
-        document.body.querySelector('input[type="password"]');
+    const otherElement = document.body.querySelector('foobar');
     const inputCheckboxElement =
         document.body.querySelector('input[type="checkbox"]');
-    const otherElement = document.body.querySelector('foobar');
+    const inputTextElement = document.body.querySelector('input[type="text"]');
+
+    // Manually set the |type| property since cr-input is not actually imported
+    // as part of this test, and therefore the element is not upgraded, as it
+    // would normally.
+    const crTextInputElement =
+        document.body.querySelector('cr-input[type="text"]');
+    crTextInputElement.type = 'text';
+    const crSearchInputElement =
+        document.body.querySelector('cr-input[type="search"]');
+    crSearchInputElement.type = 'search';
+
+    // Attach a cr-input element nested within another element.
+    const containerElement = document.body.querySelector('#withShadow');
+    const shadow = containerElement.attachShadow({mode: 'open'});
+    const crInputNested = document.createElement('cr-input');
+    crInputNested.type = 'text';
+    shadow.appendChild(crInputNested);
+
     const actionButton = document.body.querySelector('.action-button');
-    const crInputElement = document.body.querySelector('cr-input');
 
     // MockInteractions triggers event listeners synchronously.
     let clickedCounter = 0;
@@ -266,62 +282,25 @@
       clickedCounter++;
     });
 
-    // Only certain types of <input> trigger a dialog submit.
+    // Enter on anything other than cr-input should not be accepted.
     pressEnter(otherElement);
     assertEquals(0, clickedCounter);
-    // "type" defaults to text, which triggers the click.
-    pressEnter(inputElement);
-    assertEquals(1, clickedCounter);
-    pressEnter(inputTextElement);
-    assertEquals(2, clickedCounter);
-    pressEnter(inputPasswordElement);
-    assertEquals(3, clickedCounter);
     pressEnter(inputCheckboxElement);
-    assertEquals(3, clickedCounter);
-    // Also trigger dialog submit if code synthesizes enter on a cr-input
-    // without targeting the underlying input.
-    pressEnter(crInputElement);
-    assertEquals(4, clickedCounter);
-  });
+    assertEquals(0, clickedCounter);
+    pressEnter(inputTextElement);
+    assertEquals(0, clickedCounter);
 
-  // Test that enter key presses trigger an action button click, even if the
-  // even was retargeted, e.g. because the input was really a cr-input, the
-  // cr-input was part of another custom element, etc.
-  test('enter keys are processed even if event was retargeted', function() {
-    document.body.innerHTML = `
-      <dom-module id="test-element">
-        <template><input></input></template>
-      </dom-module>
+    // Enter on a cr-input with type "search" should not be accepted.
+    pressEnter(crSearchInputElement);
+    assertEquals(0, clickedCounter);
 
-      <cr-dialog>
-        <div slot="title">title</div>
-        <div slot="body">
-          <test-element></test-element>
-          <button class="action-button">active</button>
-        </div>
-      </cr-dialog>`;
-
-    Polymer({
-      is: 'test-element',
-    });
-
-    const dialog = document.body.querySelector('cr-dialog');
-
-    const inputWrapper = document.body.querySelector('test-element');
-    assertTrue(!!inputWrapper);
-    const inputElement = inputWrapper.shadowRoot.querySelector('input');
-    const actionButton = document.body.querySelector('.action-button');
-    assertTrue(!!inputElement);
-    assertTrue(!!actionButton);
-
-    // MockInteractions triggers event listeners synchronously.
-    let clickedCounter = 0;
-    actionButton.addEventListener('click', function() {
-      clickedCounter++;
-    });
-
-    pressEnter(inputElement);
+    // Enter on a cr-input with type "text" should be accepted.
+    pressEnter(crTextInputElement);
     assertEquals(1, clickedCounter);
+
+    // Enter on a nested <cr-input> should be accepted.
+    pressEnter(crInputNested);
+    assertEquals(2, clickedCounter);
   });
 
   test('focuses [autofocus] instead of title when present', function() {
diff --git a/chrome/test/data/webui/settings/about_page_tests.js b/chrome/test/data/webui/settings/about_page_tests.js
index f2bbc226..88a25c7 100644
--- a/chrome/test/data/webui/settings/about_page_tests.js
+++ b/chrome/test/data/webui/settings/about_page_tests.js
@@ -678,24 +678,13 @@
         });
 
         test('Initialization', async () => {
-          const versionInfo = {
-            arcVersion: 'dummyArcVersion',
-            osFirmware: 'dummyOsFirmware',
-            osVersion: 'dummyOsVersion',
-          };
-          browserProxy.setVersionInfo(versionInfo);
-
           page = document.createElement('settings-detailed-build-info');
           document.body.appendChild(page);
 
           await Promise.all([
             browserProxy.whenCalled('pageReady'),
-            browserProxy.whenCalled('getVersionInfo'),
             browserProxy.whenCalled('getChannelInfo'),
           ]);
-          assertEquals(versionInfo.arcVersion, page.$.arcVersion.textContent);
-          assertEquals(versionInfo.osVersion, page.$.osVersion.textContent);
-          assertEquals(versionInfo.osFirmware, page.$.osFirmware.textContent);
         });
 
         /**
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
index 87f0ca2..4c081383 100644
--- a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
+++ b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
@@ -13,7 +13,7 @@
 // Only run in release builds because we frequently see test timeouts in debug.
 // We suspect this is because the settings page loads slowly in debug.
 // https://crbug.com/1003483
-GEN('#if defined(NDEBUG)');
+// GEN('#if defined(NDEBUG)');
 
 GEN('#include "ash/public/cpp/ash_features.h"');
 GEN('#include "build/branding_buildflags.h"');
@@ -1069,4 +1069,4 @@
   mocha.run();
 });
 
-GEN('#endif  // defined(NDEBUG)');
+// GEN('#endif  // defined(NDEBUG)');
diff --git a/chrome/test/data/webui/settings/site_details_tests.js b/chrome/test/data/webui/settings/site_details_tests.js
index e886e50e4..8e3354702 100644
--- a/chrome/test/data/webui/settings/site_details_tests.js
+++ b/chrome/test/data/webui/settings/site_details_tests.js
@@ -97,6 +97,9 @@
           [test_util.createRawSiteException('https://foo.com:443', {
             setting: settings.ContentSetting.BLOCK,
           })]),
+      test_util.createContentSettingTypeToValuePair(
+          settings.ContentSettingsTypes.MIXEDSCRIPT,
+          [test_util.createRawSiteException('https://foo.com:443')]),
     ], [
       test_util.createContentSettingTypeToValuePair(
           settings.ContentSettingsTypes.USB_DEVICES,
@@ -151,6 +154,9 @@
     optionalSiteDetailsContentSettingsTypes[settings.ContentSettingsTypes
                                                 .NATIVE_FILE_SYSTEM_WRITE] =
         'enableNativeFileSystemWriteContentSetting';
+    optionalSiteDetailsContentSettingsTypes[settings.ContentSettingsTypes
+                                                .MIXEDSCRIPT] =
+        'enableInsecureContentContentSetting';
 
     browserProxy.setPrefs(prefs);
 
diff --git a/chrome/test/data/webui/settings/test_about_page_browser_proxy.js b/chrome/test/data/webui/settings/test_about_page_browser_proxy.js
index fa00087d..979ca59 100644
--- a/chrome/test/data/webui/settings/test_about_page_browser_proxy.js
+++ b/chrome/test/data/webui/settings/test_about_page_browser_proxy.js
@@ -14,10 +14,9 @@
 
     if (cr.isChromeOS) {
       methodNames.push(
-          'getChannelInfo', 'getVersionInfo', 'getRegulatoryInfo',
-          'checkInternetConnection', 'getEnabledReleaseNotes',
-          'getEndOfLifeInfo', 'launchReleaseNotes', 'openOsHelpPage',
-          'refreshTPMFirmwareUpdateStatus', 'setChannel');
+          'getChannelInfo', 'getRegulatoryInfo', 'checkInternetConnection',
+          'getEnabledReleaseNotes', 'getEndOfLifeInfo', 'launchReleaseNotes',
+          'openOsHelpPage', 'refreshTPMFirmwareUpdateStatus', 'setChannel');
     }
 
     if (cr.isMac) {
@@ -30,13 +29,6 @@
     this.updateStatus_ = UpdateStatus.UPDATED;
 
     if (cr.isChromeOS) {
-      /** @private {!VersionInfo} */
-      this.versionInfo_ = {
-        arcVersion: '',
-        osFirmware: '',
-        osVersion: '',
-      };
-
       /** @private {!ChannelInfo} */
       this.channelInfo_ = {
         currentChannel: BrowserChannel.BETA,
@@ -106,10 +98,6 @@
 }
 
 if (cr.isChromeOS) {
-  /** @param {!VersionInfo} */
-  TestAboutPageBrowserProxy.prototype.setVersionInfo = function(versionInfo) {
-    this.versionInfo_ = versionInfo;
-  };
 
   /** @param {boolean} canChangeChannel */
   TestAboutPageBrowserProxy.prototype.setCanChangeChannel = function(
@@ -157,12 +145,6 @@
   };
 
   /** @override */
-  TestAboutPageBrowserProxy.prototype.getVersionInfo = function() {
-    this.methodCalled('getVersionInfo');
-    return Promise.resolve(this.versionInfo_);
-  };
-
-  /** @override */
   TestAboutPageBrowserProxy.prototype.getEnabledReleaseNotes = function() {
     this.methodCalled('getEnabledReleaseNotes');
     return Promise.resolve(this.hasReleaseNotes_);
diff --git a/chromecast/bindings/BUILD.gn b/chromecast/bindings/BUILD.gn
index 0e6e643..0405012 100644
--- a/chromecast/bindings/BUILD.gn
+++ b/chromecast/bindings/BUILD.gn
@@ -5,7 +5,7 @@
 import("//tools/grit/grit_rule.gni")
 
 if (is_fuchsia) {
-  import("//build/config/fuchsia/rules.gni")
+  import("//build/config/fuchsia/generate_runner_scripts.gni")
 }
 
 source_set("named_message_port_connector_resources") {
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsView.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsView.java
index f09b25e..f794749 100644
--- a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsView.java
+++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsView.java
@@ -40,8 +40,10 @@
     }
 
     private void initView() {
+        FrameLayout.LayoutParams matchParent = new FrameLayout.LayoutParams(
+                    FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
         addView(LayoutInflater.from(getContext())
-                        .inflate(R.layout.cast_web_contents_activity, null));
+                        .inflate(R.layout.cast_web_contents_activity, null), matchParent);
     }
 
     public void onStart(Bundle startArgumentsBundle) {
diff --git a/chromecast/browser/webview/webview_grpc_service.cc b/chromecast/browser/webview/webview_grpc_service.cc
index 0822b4a..3d4e4be7 100644
--- a/chromecast/browser/webview/webview_grpc_service.cc
+++ b/chromecast/browser/webview/webview_grpc_service.cc
@@ -157,7 +157,9 @@
                        base::Passed(std::move(request_))));
 
     request_ = std::make_unique<webview::WebviewRequest>();
-    io_.Read(request_.get(), &read_callback_);
+    std::unique_lock<std::mutex> l(send_lock_);
+    if (!errored_)
+      io_.Read(request_.get(), &read_callback_);
   } else if (!Initialize()) {
     io_.Finish(grpc::Status(grpc::FAILED_PRECONDITION, "Failed initialization"),
                &destroy_callback_);
diff --git a/chromecast/external_mojo/external_service_support/external_connector.h b/chromecast/external_mojo/external_service_support/external_connector.h
index 9c8fd6c5..bae3e60 100644
--- a/chromecast/external_mojo/external_service_support/external_connector.h
+++ b/chromecast/external_mojo/external_service_support/external_connector.h
@@ -14,6 +14,7 @@
 #include "chromecast/external_mojo/public/mojom/connector.mojom.h"
 #include "mojo/public/cpp/bindings/interface_ptr.h"
 #include "mojo/public/cpp/bindings/interface_request.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/system/message_pipe.h"
 
@@ -61,6 +62,13 @@
                   mojo::MakeRequest(ptr).PassMessagePipe());
   }
 
+  template <typename Interface>
+  void BindInterface(const std::string& service_name,
+                     mojo::PendingRemote<Interface>* ptr) {
+    BindInterface(service_name, Interface::Name_,
+                  ptr->InitWithNewPipeAndPassReceiver().PassPipe());
+  }
+
   virtual void BindInterface(const std::string& service_name,
                              const std::string& interface_name,
                              mojo::ScopedMessagePipeHandle interface_pipe) = 0;
diff --git a/chromecast/media/audio/cast_audio_device_factory.cc b/chromecast/media/audio/cast_audio_device_factory.cc
index 898f085..0d106b48 100644
--- a/chromecast/media/audio/cast_audio_device_factory.cc
+++ b/chromecast/media/audio/cast_audio_device_factory.cc
@@ -21,10 +21,15 @@
  public:
   explicit NonSwitchableAudioRendererSink(
       scoped_refptr<::media::AudioOutputDevice> output_device)
-      : output_device_(std::move(output_device)) {}
+      : output_device_(std::move(output_device)), is_initialized_(false) {}
 
   void Initialize(const ::media::AudioParameters& params,
                   RenderCallback* callback) override {
+    // NonSwitchableAudioRendererSink derives from RestartableRenderSink which
+    // does allow calling Initialize and Play again after stopping.
+    if (is_initialized_)
+      return;
+    is_initialized_ = true;
     output_device_->Initialize(params, callback);
   }
 
@@ -69,6 +74,7 @@
 
  private:
   scoped_refptr<::media::AudioOutputDevice> output_device_;
+  bool is_initialized_;
 };
 
 scoped_refptr<::media::AudioOutputDevice> NewOutputDevice(
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index 7e5bb6be9..0efc17b8 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-12566.0.0
\ No newline at end of file
+12567.0.0
\ No newline at end of file
diff --git a/components/autofill/core/browser/personal_data_manager.cc b/components/autofill/core/browser/personal_data_manager.cc
index 41685be..49de5f4 100644
--- a/components/autofill/core/browser/personal_data_manager.cc
+++ b/components/autofill/core/browser/personal_data_manager.cc
@@ -1376,35 +1376,6 @@
     Refresh();
 }
 
-void PersonalDataManager::MoveJapanCityToStreetAddress() {
-  if (!database_helper_->GetLocalDatabase())
-    return;
-
-  // Don't run if the migration has already been performed.
-  if (pref_service_->GetBoolean(prefs::kAutofillJapanCityFieldMigrated))
-    return;
-
-  base::string16 japan_country_code = base::ASCIIToUTF16("JP");
-  base::string16 line_separator = base::ASCIIToUTF16("\n");
-  for (AutofillProfile* profile : GetProfiles()) {
-    base::string16 country_code = profile->GetRawInfo(ADDRESS_HOME_COUNTRY);
-    base::string16 city = profile->GetRawInfo(ADDRESS_HOME_CITY);
-    if (country_code == japan_country_code && !city.empty()) {
-      base::string16 street_address =
-          profile->GetRawInfo(ADDRESS_HOME_STREET_ADDRESS);
-      street_address = street_address.empty()
-                           ? city
-                           : street_address + line_separator + city;
-      profile->SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, street_address);
-      profile->SetRawInfo(ADDRESS_HOME_CITY, base::string16());
-      UpdateProfileInDB(*profile, /*enforced=*/true);
-    }
-  }
-
-  // Set the pref so that this migration is never run again.
-  pref_service_->SetBoolean(prefs::kAutofillJapanCityFieldMigrated, true);
-}
-
 void PersonalDataManager::OnValidated(const AutofillProfile* profile) {
   if (!profile)
     return;
@@ -2417,9 +2388,6 @@
 
   // Ran everytime it is called.
   ClearProfileNonSettingsOrigins();
-
-  // One-time fix, otherwise NOP.
-  MoveJapanCityToStreetAddress();
 }
 
 void PersonalDataManager::ApplyCardFixesAndCleanups() {
diff --git a/components/autofill/core/browser/personal_data_manager.h b/components/autofill/core/browser/personal_data_manager.h
index 60af2d7..0a83a6f 100644
--- a/components/autofill/core/browser/personal_data_manager.h
+++ b/components/autofill/core/browser/personal_data_manager.h
@@ -461,8 +461,6 @@
   FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest,
                            ClearCreditCardNonSettingsOrigins);
   FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest,
-                           MoveJapanCityToStreetAddress);
-  FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest,
                            RequestProfileServerValidity);
   FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest,
                            GetProfileSuggestions_Validity);
@@ -550,12 +548,6 @@
   void ClearProfileNonSettingsOrigins();
   void ClearCreditCardNonSettingsOrigins();
 
-  // Appends the value of the city field of a JP address to its street address
-  // field, separated by a newline, and clears the city field.
-  // TODO(rouslan): Remove this migration in or after October 2019. See bug:
-  // https://crbug.com/871301
-  void MoveJapanCityToStreetAddress();
-
   // Called when the |profile| is validated by the AutofillProfileValidator,
   // updates the profiles on the |ongoing_profile_changes_| and the DB.
   virtual void OnValidated(const AutofillProfile* profile);
diff --git a/components/autofill/core/browser/personal_data_manager_unittest.cc b/components/autofill/core/browser/personal_data_manager_unittest.cc
index a1123b2..78caa79 100644
--- a/components/autofill/core/browser/personal_data_manager_unittest.cc
+++ b/components/autofill/core/browser/personal_data_manager_unittest.cc
@@ -286,17 +286,6 @@
     return account_info;
   }
 
-  void MoveJapanCityToStreetAddress(PersonalDataManager* personal_data,
-                                    int move_times) {
-    base::RunLoop run_loop;
-    EXPECT_CALL(personal_data_observer_, OnPersonalDataFinishedProfileTasks())
-        .WillRepeatedly(QuitMessageLoop(&run_loop));
-    EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
-        .Times(move_times);
-    personal_data->MoveJapanCityToStreetAddress();
-    run_loop.Run();
-  }
-
   base::test::SingleThreadTaskEnvironment task_environment_{
       base::test::SingleThreadTaskEnvironment::MainThreadType::UI};
   std::unique_ptr<PrefService> prefs_;
@@ -6881,108 +6870,6 @@
             personal_data_->GetCreditCardsToSuggest(false)[3]->origin());
 }
 
-// Tests that all city fields in a Japan profile are moved to the street address
-// field.
-TEST_F(PersonalDataManagerTest, MoveJapanCityToStreetAddress) {
-  // Turn on sync feature to avoid calling MoveJapanCityToStreetAddress on
-  // adding the profiles implicitly.
-  ASSERT_TRUE(TurnOnSyncFeature());
-  // A US profile with both street address and a city.
-  std::string guid0 = base::GenerateGUID();
-  {
-    AutofillProfile profile0(guid0, test::kEmptyOrigin);
-    test::SetProfileInfo(&profile0, "Homer", "J", "Simpson",
-                         "homer.simpson@abc.com", "", "742. Evergreen Terrace",
-                         "", "Springfield", "IL", "91601", "US", "");
-    AddProfileToPersonalDataManager(profile0);
-  }
-
-  // A JP profile with both street address and a city.
-  std::string guid1 = base::GenerateGUID();
-  {
-    AutofillProfile profile1(guid1, test::kEmptyOrigin);
-    test::SetProfileInfo(&profile1, "Homer", "J", "Simpson",
-                         "homer.simpson@abc.com", "", "742. Evergreen Terrace",
-                         "", "Springfield", "IL", "91601", "JP", "");
-    AddProfileToPersonalDataManager(profile1);
-  }
-
-  // A JP profile with only a city.
-  std::string guid2 = base::GenerateGUID();
-  {
-    AutofillProfile profile2(guid2, test::kEmptyOrigin);
-    test::SetProfileInfo(&profile2, "Homer", "J", "Simpson",
-                         "homer.simpson@abc.com", "", "", "", "Springfield",
-                         "IL", "91601", "JP", "");
-    AddProfileToPersonalDataManager(profile2);
-  }
-
-  // A JP profile with only a street address.
-  std::string guid3 = base::GenerateGUID();
-  {
-    AutofillProfile profile3(guid3, test::kEmptyOrigin);
-    test::SetProfileInfo(&profile3, "Homer", "J", "Simpson",
-                         "homer.simpson@abc.com", "", "742. Evergreen Terrace",
-                         "", "", "IL", "91601", "JP", "");
-    AddProfileToPersonalDataManager(profile3);
-  }
-
-  // A JP profile with neither a street address nor a city.
-  std::string guid4 = base::GenerateGUID();
-  {
-    AutofillProfile profile4(guid4, test::kEmptyOrigin);
-    test::SetProfileInfo(&profile4, "Homer", "J", "Simpson",
-                         "homer.simpson@abc.com", "", "", "", "", "IL", "91601",
-                         "JP", "");
-    AddProfileToPersonalDataManager(profile4);
-  }
-  auto profiles = personal_data_->GetProfiles();
-  ASSERT_EQ(5U, profiles.size());
-
-  MoveJapanCityToStreetAddress(
-      personal_data_.get(),
-      2);  // For the japan profiles where the city is not empty.
-
-  {
-    AutofillProfile* profile0 = personal_data_->GetProfileByGUID(guid0);
-    EXPECT_EQ(base::ASCIIToUTF16("742. Evergreen Terrace"),
-              profile0->GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
-    EXPECT_EQ(base::ASCIIToUTF16("Springfield"),
-              profile0->GetRawInfo(ADDRESS_HOME_CITY));
-  }
-
-  {
-    AutofillProfile* profile1 = personal_data_->GetProfileByGUID(guid1);
-    EXPECT_EQ(base::ASCIIToUTF16("742. Evergreen Terrace\nSpringfield"),
-              profile1->GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
-    EXPECT_EQ(base::ASCIIToUTF16("742. Evergreen Terrace"),
-              profile1->GetRawInfo(ADDRESS_HOME_LINE1));
-    EXPECT_EQ(base::ASCIIToUTF16("Springfield"),
-              profile1->GetRawInfo(ADDRESS_HOME_LINE2));
-    EXPECT_TRUE(profile1->GetRawInfo(ADDRESS_HOME_CITY).empty());
-  }
-
-  {
-    AutofillProfile* profile2 = personal_data_->GetProfileByGUID(guid2);
-    EXPECT_EQ(base::ASCIIToUTF16("Springfield"),
-              profile2->GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
-    EXPECT_TRUE(profile2->GetRawInfo(ADDRESS_HOME_CITY).empty());
-  }
-
-  {
-    AutofillProfile* profile3 = personal_data_->GetProfileByGUID(guid3);
-    EXPECT_EQ(base::ASCIIToUTF16("742. Evergreen Terrace"),
-              profile3->GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
-    EXPECT_TRUE(profile3->GetRawInfo(ADDRESS_HOME_CITY).empty());
-  }
-
-  {
-    AutofillProfile* profile4 = personal_data_->GetProfileByGUID(guid4);
-    EXPECT_TRUE(profile4->GetRawInfo(ADDRESS_HOME_STREET_ADDRESS).empty());
-    EXPECT_TRUE(profile4->GetRawInfo(ADDRESS_HOME_CITY).empty());
-  }
-}
-
 // Tests that all the non settings origins of autofill profiles are cleared even
 // if sync is disabled.
 TEST_F(
diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc
index 3872d01..1607b0d 100644
--- a/components/autofill/core/common/autofill_prefs.cc
+++ b/components/autofill/core/common/autofill_prefs.cc
@@ -18,7 +18,6 @@
 // was found.
 int GetSyncTransportOptInBitFieldForAccount(const PrefService* prefs,
                                             const std::string& account_hash) {
-
   auto* dictionary = prefs->GetDictionary(prefs::kAutofillSyncTransportOptIn);
 
   // If there is no dictionary it means the account didn't opt-in. Use 0 because
@@ -62,9 +61,8 @@
 // Boolean that is true if Autofill is enabled and allowed to save data.
 const char kAutofillEnabledDeprecated[] = "autofill.enabled";
 
-// Boolean that is true if Japan address city field has been migrated to be a
-// part of the street field.
-const char kAutofillJapanCityFieldMigrated[] =
+// Deprecated 10/2019.
+const char kAutofillJapanCityFieldMigratedDeprecated[] =
     "autofill.japan_city_field_migrated_to_street_address";
 
 // Integer that is set to the last version where the profile deduping routine
@@ -167,7 +165,6 @@
       prefs::kAutofillCreditCardFidoAuthOfferCheckboxState, true);
   registry->RegisterIntegerPref(
       prefs::kAutofillCreditCardSigninPromoImpressionCount, 0);
-  registry->RegisterBooleanPref(prefs::kAutofillJapanCityFieldMigrated, false);
   registry->RegisterBooleanPref(prefs::kAutofillWalletImportEnabled, true);
   registry->RegisterBooleanPref(
       prefs::kAutofillWalletImportStorageCheckboxState, true);
@@ -186,6 +183,10 @@
   registry->RegisterTimePref(prefs::kAutofillUploadEventsLastResetTimestamp,
                              base::Time());
   registry->RegisterDictionaryPref(prefs::kAutofillSyncTransportOptIn);
+
+  // Deprecated prefs registered for migration.
+  registry->RegisterBooleanPref(kAutofillJapanCityFieldMigratedDeprecated,
+                                false);
 }
 
 void MigrateDeprecatedAutofillPrefs(PrefService* prefs) {
@@ -216,6 +217,9 @@
     prefs->SetBoolean(kAutofillProfileEnabled,
                       prefs->GetBoolean(kAutofillEnabledDeprecated));
   }
+
+  // Added 10/2019.
+  prefs->ClearPref(kAutofillJapanCityFieldMigratedDeprecated);
 }
 
 bool IsAutocompleteEnabled(const PrefService* prefs) {
diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autofill/core/common/autofill_prefs.h
index 01679b97..7558441a2 100644
--- a/components/autofill/core/common/autofill_prefs.h
+++ b/components/autofill/core/common/autofill_prefs.h
@@ -26,7 +26,7 @@
 extern const char kAutofillCreditCardSigninPromoImpressionCount[];
 // Please use kAutofillCreditCardEnabled and kAutofillProfileEnabled instead.
 extern const char kAutofillEnabledDeprecated[];
-extern const char kAutofillJapanCityFieldMigrated[];
+extern const char kAutofillJapanCityFieldMigratedDeprecated[];
 extern const char kAutofillLastVersionDeduped[];
 extern const char kAutofillLastVersionValidated[];
 extern const char kAutofillLastVersionDisusedAddressesDeleted[];
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
index b60c49a9..6c4ff4b 100644
--- a/components/content_settings/core/browser/content_settings_registry.cc
+++ b/components/content_settings/core/browser/content_settings_registry.cc
@@ -378,9 +378,10 @@
            ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
 
   Register(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, "mixed-script",
-           CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE,
-           WhitelistedSchemes(), ValidSettings(),
-           WebsiteSettingsInfo::SINGLE_ORIGIN_WITH_EMBEDDED_EXCEPTIONS_SCOPE,
+           CONTENT_SETTING_BLOCK, WebsiteSettingsInfo::UNSYNCABLE,
+           WhitelistedSchemes(),
+           ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
+           WebsiteSettingsInfo::SINGLE_ORIGIN_ONLY_SCOPE,
            WebsiteSettingsRegistry::DESKTOP,
            ContentSettingsInfo::INHERIT_IF_LESS_PERMISSIVE,
            ContentSettingsInfo::PERSISTENT,
diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc
index 4cba738..6b22ca5 100644
--- a/components/content_settings/core/browser/content_settings_utils.cc
+++ b/components/content_settings/core/browser/content_settings_utils.cc
@@ -124,6 +124,9 @@
       CONTENT_SETTINGS_TYPE_IMAGES,
       ResourceIdentifier(),
       &(rules->image_rules));
+  map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT,
+                             ResourceIdentifier(),
+                             &(rules->mixed_content_rules));
 #else
   // Android doesn't use image content settings, so ALLOW rule is added for
   // all origins.
@@ -132,6 +135,13 @@
       base::Value::FromUniquePtrValue(
           ContentSettingToValue(CONTENT_SETTING_ALLOW)),
       std::string(), map->IsOffTheRecord()));
+  // In Android active mixed content is hard blocked, with no option to allow
+  // it.
+  rules->mixed_content_rules.push_back(ContentSettingPatternSource(
+      ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(),
+      base::Value::FromUniquePtrValue(
+          ContentSettingToValue(CONTENT_SETTING_BLOCK)),
+      std::string(), map->IsOffTheRecord()));
 #endif
   map->GetSettingsForOneType(
       CONTENT_SETTINGS_TYPE_JAVASCRIPT,
diff --git a/components/content_settings/core/common/content_settings.cc b/components/content_settings/core/common/content_settings.cc
index 5fc4d9f..e1aca34 100644
--- a/components/content_settings/core/common/content_settings.cc
+++ b/components/content_settings/core/common/content_settings.cc
@@ -156,7 +156,8 @@
          content_type == CONTENT_SETTINGS_TYPE_JAVASCRIPT ||
          content_type == CONTENT_SETTINGS_TYPE_AUTOPLAY ||
          content_type == CONTENT_SETTINGS_TYPE_CLIENT_HINTS ||
-         content_type == CONTENT_SETTINGS_TYPE_POPUPS;
+         content_type == CONTENT_SETTINGS_TYPE_POPUPS ||
+         content_type == CONTENT_SETTINGS_TYPE_MIXEDSCRIPT;
 }
 
 RendererContentSettingRules::RendererContentSettingRules() {}
diff --git a/components/content_settings/core/common/content_settings.h b/components/content_settings/core/common/content_settings.h
index 0565046..824c421 100644
--- a/components/content_settings/core/common/content_settings.h
+++ b/components/content_settings/core/common/content_settings.h
@@ -75,6 +75,7 @@
   ContentSettingsForOneType autoplay_rules;
   ContentSettingsForOneType client_hints_rules;
   ContentSettingsForOneType popup_redirect_rules;
+  ContentSettingsForOneType mixed_content_rules;
 };
 
 namespace content_settings {
diff --git a/components/content_settings/core/common/content_settings.mojom b/components/content_settings/core/common/content_settings.mojom
index 3635caf..771b4db 100644
--- a/components/content_settings/core/common/content_settings.mojom
+++ b/components/content_settings/core/common/content_settings.mojom
@@ -73,4 +73,5 @@
   array<ContentSettingPatternSource> autoplay_rules;
   array<ContentSettingPatternSource> client_hints_rules;
   array<ContentSettingPatternSource> popup_redirect_rules;
+  array<ContentSettingPatternSource> mixed_content_rules;
 };
diff --git a/components/content_settings/core/common/content_settings_mojom_traits.cc b/components/content_settings/core/common/content_settings_mojom_traits.cc
index e4faf6a2..84eceac 100644
--- a/components/content_settings/core/common/content_settings_mojom_traits.cc
+++ b/components/content_settings/core/common/content_settings_mojom_traits.cc
@@ -101,7 +101,8 @@
          data.ReadScriptRules(&out->script_rules) &&
          data.ReadAutoplayRules(&out->autoplay_rules) &&
          data.ReadClientHintsRules(&out->client_hints_rules) &&
-         data.ReadPopupRedirectRules(&out->popup_redirect_rules);
+         data.ReadPopupRedirectRules(&out->popup_redirect_rules) &&
+         data.ReadMixedContentRules(&out->mixed_content_rules);
 }
 
 }  // namespace mojo
diff --git a/components/content_settings/core/common/content_settings_mojom_traits.h b/components/content_settings/core/common/content_settings_mojom_traits.h
index c8b57f67..13cae30 100644
--- a/components/content_settings/core/common/content_settings_mojom_traits.h
+++ b/components/content_settings/core/common/content_settings_mojom_traits.h
@@ -145,6 +145,11 @@
     return r.popup_redirect_rules;
   }
 
+  static const std::vector<ContentSettingPatternSource>& mixed_content_rules(
+      const RendererContentSettingRules& r) {
+    return r.mixed_content_rules;
+  }
+
   static bool Read(
       content_settings::mojom::RendererContentSettingRulesDataView data,
       RendererContentSettingRules* out);
diff --git a/components/download/internal/common/download_file_impl.cc b/components/download/internal/common/download_file_impl.cc
index 5b3951a..890efd8 100644
--- a/components/download/internal/common/download_file_impl.cc
+++ b/components/download/internal/common/download_file_impl.cc
@@ -566,9 +566,8 @@
 
   for (auto& stream : source_streams_) {
     SourceStream* source_stream = stream.second.get();
-    if (!source_stream->is_finished()) {
-      ActivateStream(source_stream);
-    }
+    if (!source_stream->is_finished())
+      StreamActive(source_stream, MOJO_RESULT_OK);
   }
 }
 
@@ -591,7 +590,6 @@
   DownloadInterruptReason reason = DOWNLOAD_INTERRUPT_REASON_NONE;
   base::TimeDelta delta(
       base::TimeDelta::FromMilliseconds(kMaxTimeBlockingFileThreadMs));
-
   // Take care of any file local activity required.
   do {
     state = source_stream->Read(&incoming_data, &incoming_data_size);
@@ -649,6 +647,10 @@
         FROM_HERE, base::BindOnce(&DownloadFileImpl::StreamActive,
                                   weak_factory_.GetWeakPtr(), source_stream,
                                   MOJO_RESULT_OK));
+  } else if (state == InputStream::EMPTY && !should_terminate) {
+    source_stream->RegisterDataReadyCallback(
+        base::Bind(&DownloadFileImpl::StreamActive, weak_factory_.GetWeakPtr(),
+                   source_stream));
   }
 
   if (state == InputStream::COMPLETE)
@@ -731,13 +733,6 @@
         received_slice.offset, received_slice.received_bytes);
   }
   num_active_streams_++;
-  ActivateStream(source_stream);
-}
-
-void DownloadFileImpl::ActivateStream(SourceStream* source_stream) {
-  source_stream->RegisterDataReadyCallback(
-      base::Bind(&DownloadFileImpl::StreamActive, weak_factory_.GetWeakPtr(),
-                 source_stream));
   StreamActive(source_stream, MOJO_RESULT_OK);
 }
 
diff --git a/components/download/internal/common/download_file_unittest.cc b/components/download/internal/common/download_file_unittest.cc
index 2140f1d..a2a5883 100644
--- a/components/download/internal/common/download_file_unittest.cc
+++ b/components/download/internal/common/download_file_unittest.cc
@@ -581,6 +581,9 @@
   EXPECT_FALSE(base::PathExists(initial_path));
   EXPECT_TRUE(base::PathExists(path_1));
 
+  EXPECT_CALL(*input_stream_, RegisterDataReadyCallback(_))
+      .Times(1)
+      .RetiresOnSaturation();
   // Download the data.
   const char* chunks1[] = {kTestData1, kTestData2};
   AppendDataToFile(chunks1, 2);
@@ -596,6 +599,9 @@
   EXPECT_FALSE(base::PathExists(path_1));
   EXPECT_TRUE(base::PathExists(path_2));
 
+  EXPECT_CALL(*input_stream_, RegisterDataReadyCallback(_))
+      .Times(1)
+      .RetiresOnSaturation();
   const char* chunks2[] = {kTestData3};
   AppendDataToFile(chunks2, 1);
 
@@ -833,6 +839,9 @@
 
   // Test that calling the sink_callback_ on an empty stream shouldn't
   // do anything.
+  EXPECT_CALL(*input_stream_, RegisterDataReadyCallback(_))
+      .Times(1)
+      .RetiresOnSaturation();
   AppendDataToFile(nullptr, 0);
 
   // Finish the download this way and make sure we see it on the observer.
@@ -984,8 +993,6 @@
   PrepareStream(&additional_streams_[0], stream_0_length, true, true,
                 kTestData7, 2);
 
-  EXPECT_CALL(*additional_streams_[0], RegisterDataReadyCallback(_))
-      .RetiresOnSaturation();
   EXPECT_CALL(*(observer_.get()), MockDestinationCompleted(_, _));
 
   // Activate the streams.
@@ -1005,7 +1012,7 @@
 }
 
 // 3 streams write to one sink, the second stream has a limited length.
-TEST_F(DownloadFileTest, MutipleStreamsLimitedLength) {
+TEST_F(DownloadFileTest, MultipleStreamsLimitedLength) {
   int64_t stream_0_length = GetBuffersLength(kTestData6, 2);
 
   // The second stream has a limited length and should be partially written
@@ -1025,17 +1032,10 @@
   PrepareStream(&additional_streams_[1], stream_0_length + stream_1_length,
                 true, true, kTestData6, 2);
 
-  EXPECT_CALL(*additional_streams_[0], RegisterDataReadyCallback(_))
-      .Times(1)
-      .RetiresOnSaturation();
-
   EXPECT_CALL(*additional_streams_[0], ClearDataReadyCallback())
       .Times(1)
       .RetiresOnSaturation();
 
-  EXPECT_CALL(*additional_streams_[1], RegisterDataReadyCallback(_))
-      .RetiresOnSaturation();
-
   EXPECT_CALL(*(observer_.get()), MockDestinationCompleted(_, _));
 
   // Activate all the streams.
@@ -1111,13 +1111,13 @@
       .InSequence(seq)
       .WillOnce(Return(InputStream::EMPTY))
       .RetiresOnSaturation();
+  EXPECT_CALL(*input_stream_, RegisterDataReadyCallback(_))
+      .Times(1)
+      .RetiresOnSaturation();
   sink_callback_.Run(MOJO_RESULT_OK);
   base::RunLoop().RunUntilIdle();
 
   additional_streams_[0] = new StrictMock<MockInputStream>();
-  EXPECT_CALL(*additional_streams_[0], RegisterDataReadyCallback(_))
-      .WillRepeatedly(Invoke(this, &DownloadFileTest::RegisterCallback))
-      .RetiresOnSaturation();
   EXPECT_CALL(*additional_streams_[0], ClearDataReadyCallback())
       .WillRepeatedly(Invoke(this, &DownloadFileTest::ClearCallback))
       .RetiresOnSaturation();
@@ -1152,6 +1152,9 @@
       .InSequence(seq)
       .WillOnce(Return(InputStream::EMPTY))
       .RetiresOnSaturation();
+  EXPECT_CALL(*input_stream_, RegisterDataReadyCallback(_))
+      .Times(2)
+      .RetiresOnSaturation();
   sink_callback_.Run(MOJO_RESULT_OK);
   base::RunLoop().RunUntilIdle();
 
diff --git a/components/download/internal/common/download_utils.cc b/components/download/internal/common/download_utils.cc
index d428833..023f695 100644
--- a/components/download/internal/common/download_utils.cc
+++ b/components/download/internal/common/download_utils.cc
@@ -4,6 +4,9 @@
 
 #include "components/download/public/common/download_utils.h"
 
+#include <memory>
+#include <string>
+
 #include "base/files/file_util.h"
 #include "base/format_macros.h"
 #include "base/i18n/file_util_icu.h"
@@ -27,7 +30,7 @@
 #if defined(OS_ANDROID)
 #include "base/android/content_uri_utils.h"
 #include "components/download/internal/common/android/download_collection_bridge.h"
-#endif
+#endif  // defined(OS_ANDROID)
 
 namespace download {
 
@@ -261,7 +264,7 @@
 
 std::unique_ptr<network::ResourceRequest> CreateResourceRequest(
     DownloadUrlParameters* params) {
-  DCHECK(params->offset() >= 0);
+  DCHECK_GE(params->offset(), 0);
 
   std::unique_ptr<network::ResourceRequest> request(
       new network::ResourceRequest);
@@ -570,7 +573,7 @@
     case DownloadItem::INTERRUPTED:
       return GetDownloadResumeMode(url, reason, false /* restart_required */,
                                    false /* user_action_required */) ==
-             download::ResumeMode::INVALID;
+             ResumeMode::INVALID;
     default:
       return false;
   }
diff --git a/components/download/internal/common/stream_handle_input_stream.cc b/components/download/internal/common/stream_handle_input_stream.cc
index fc1ddd6..bdfe62e 100644
--- a/components/download/internal/common/stream_handle_input_stream.cc
+++ b/components/download/internal/common/stream_handle_input_stream.cc
@@ -45,6 +45,8 @@
     const mojo::SimpleWatcher::ReadyCallback& callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (handle_watcher_) {
+    if (handle_watcher_->IsWatching())
+      ClearDataReadyCallback();
     handle_watcher_->Watch(stream_handle_->stream.get(),
                            MOJO_HANDLE_SIGNAL_READABLE, callback);
   }
diff --git a/components/download/public/common/download_file_impl.h b/components/download/public/common/download_file_impl.h
index 59ef5d5..4f6c60c 100644
--- a/components/download/public/common/download_file_impl.h
+++ b/components/download/public/common/download_file_impl.h
@@ -277,9 +277,6 @@
   // Register callback and start to read data from the stream.
   void RegisterAndActivateStream(SourceStream* source_stream);
 
-  // Helper method to activate a stream and start reading from it.
-  void ActivateStream(SourceStream* source_stream);
-
   // Called when a stream completes.
   void OnStreamCompleted(SourceStream* source_stream);
 
diff --git a/components/download/public/common/download_utils.h b/components/download/public/common/download_utils.h
index 7107c34..737c193 100644
--- a/components/download/public/common/download_utils.h
+++ b/components/download/public/common/download_utils.h
@@ -5,6 +5,8 @@
 #ifndef COMPONENTS_DOWNLOAD_PUBLIC_COMMON_DOWNLOAD_UTILS_H_
 #define COMPONENTS_DOWNLOAD_PUBLIC_COMMON_DOWNLOAD_UTILS_H_
 
+#include <memory>
+
 #include "components/download/database/download_db_entry.h"
 #include "components/download/database/in_progress/download_entry.h"
 #include "components/download/public/common/download_export.h"
diff --git a/components/exo/client_controlled_shell_surface.cc b/components/exo/client_controlled_shell_surface.cc
index 1187362..b230ee7 100644
--- a/components/exo/client_controlled_shell_surface.cc
+++ b/components/exo/client_controlled_shell_surface.cc
@@ -38,6 +38,7 @@
 #include "components/exo/surface.h"
 #include "components/exo/wm_helper.h"
 #include "ui/aura/client/aura_constants.h"
+#include "ui/aura/scoped_window_event_targeting_blocker.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
 #include "ui/aura/window_observer.h"
@@ -214,8 +215,9 @@
   DISALLOW_COPY_AND_ASSIGN(CaptionButtonModel);
 };
 
-// EventTargetingBlocker blocks the event targeting by settnig NONE targeting
-// policy to the window subtrees. It resets to the origial policy upon deletion.
+// EventTargetingBlocker blocks the event targeting by setting NONE targeting
+// policy to the window subtrees. It resets to the original policy upon
+// deletion.
 class EventTargetingBlocker : aura::WindowObserver {
  public:
   EventTargetingBlocker() = default;
@@ -233,29 +235,28 @@
  private:
   void Register(aura::Window* window) {
     window->AddObserver(this);
-    auto policy = window->event_targeting_policy();
-    window->SetEventTargetingPolicy(aura::EventTargetingPolicy::kNone);
-    policy_map_.emplace(window, policy);
+    event_targeting_blocker_map_[window] =
+        std::make_unique<aura::ScopedWindowEventTargetingBlocker>(window);
     for (auto* child : window->children())
       Register(child);
   }
 
   void Unregister(aura::Window* window) {
     window->RemoveObserver(this);
-    DCHECK(policy_map_.find(window) != policy_map_.end());
-    window->SetEventTargetingPolicy(policy_map_[window]);
+    event_targeting_blocker_map_.erase(window);
     for (auto* child : window->children())
       Unregister(child);
   }
 
   void OnWindowDestroying(aura::Window* window) override {
-    auto it = policy_map_.find(window);
-    DCHECK(it != policy_map_.end());
-    policy_map_.erase(it);
-    window->RemoveObserver(this);
+    Unregister(window);
+    if (window_ == window)
+      window_ = nullptr;
   }
 
-  std::map<aura::Window*, aura::EventTargetingPolicy> policy_map_;
+  std::map<aura::Window*,
+           std::unique_ptr<aura::ScopedWindowEventTargetingBlocker>>
+      event_targeting_blocker_map_;
   aura::Window* window_ = nullptr;
 
   DISALLOW_COPY_AND_ASSIGN(EventTargetingBlocker);
diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm_driver/instance_id/android/BUILD.gn
index 1d9ee84..2f17143 100644
--- a/components/gcm_driver/instance_id/android/BUILD.gn
+++ b/components/gcm_driver/instance_id/android/BUILD.gn
@@ -11,6 +11,7 @@
 }
 
 generate_jni("test_support_jni_headers") {
+  testonly = true
   sources = [
     "javatests/src/org/chromium/components/gcm_driver/instance_id/FakeInstanceIDWithSubtype.java",
   ]
diff --git a/components/gwp_asan/buildflags/buildflags.gni b/components/gwp_asan/buildflags/buildflags.gni
index 08ed1d4..f1cc47f8 100644
--- a/components/gwp_asan/buildflags/buildflags.gni
+++ b/components/gwp_asan/buildflags/buildflags.gni
@@ -4,11 +4,15 @@
 
 import("//base/allocator/allocator.gni")
 import("//build/config/allocator.gni")
+import("//build/config/compiler/compiler.gni")
 
 # Windows/x86 is disabled due to https://crbug.com/969146
 # Android component builds are disabled due to https://crbug.com/976399
-supported_platform = is_mac || (is_win && current_cpu == "x64") ||
-                     (is_android && !is_component_build)
+# Android requires frame pointers for unwinding, unwind tables aren't shipped in
+# official builds.
+supported_platform =
+    is_mac || (is_win && current_cpu == "x64") ||
+    (is_android && !is_component_build && enable_frame_pointers)
 
 declare_args() {
   # Is GWP-ASan malloc/PartitionAlloc hooking enabled for chrome/ on a given
diff --git a/components/heap_profiling/BUILD.gn b/components/heap_profiling/BUILD.gn
index 19cada14..a00697c 100644
--- a/components/heap_profiling/BUILD.gn
+++ b/components/heap_profiling/BUILD.gn
@@ -25,6 +25,7 @@
 
 if (is_android) {
   generate_jni("jni_headers") {
+    testonly = true
     sources = [
       "javatests/src/org/chromium/components/heap_profiling/HeapProfilingTestShim.java",
     ]
diff --git a/components/leveldb_proto/internal/shared_proto_database.cc b/components/leveldb_proto/internal/shared_proto_database.cc
index 3bb60ece..d247668 100644
--- a/components/leveldb_proto/internal/shared_proto_database.cc
+++ b/components/leveldb_proto/internal/shared_proto_database.cc
@@ -60,7 +60,11 @@
                                          const base::FilePath& db_dir)
     : task_runner_(base::CreateSequencedTaskRunner(
           {base::ThreadPool(), base::MayBlock(),
-           base::TaskPriority::BEST_EFFORT,
+           // crbug/1006954 and crbug/976223 explain why one of the clients
+           // needs run in visible priority. Download DB is always loaded to
+           // check for in progress downloads at startup. So, always load shared
+           // db in USER_VISIBLE priority.
+           base::TaskPriority::USER_VISIBLE,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})),
       db_dir_(db_dir),
       db_(std::make_unique<LevelDB>(client_db_id.c_str())),
diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
index 7f173c9..beafbe8 100644
--- a/components/module_installer/android/BUILD.gn
+++ b/components/module_installer/android/BUILD.gn
@@ -37,8 +37,6 @@
     "//third_party/google_android_play_core:com_google_android_play_core_java",
   ]
 
-  srcjar_deps = [ ":module_installer_build_config" ]
-
   jar_excluded_patterns = [ "*/ModuleInstallerConfig.class" ]
 
   annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
@@ -46,12 +44,18 @@
 
 junit_binary("module_installer_junit_tests") {
   java_files = [
+    "junit/src/org/chromium/components/module_installer/engine/ApkEngineTest.java",
     "junit/src/org/chromium/components/module_installer/engine/SplitCompatEngineTest.java",
+    "junit/src/org/chromium/components/module_installer/logger/LoggerTestUtil.java",
+    "junit/src/org/chromium/components/module_installer/logger/PlayCoreLoggerTest.java",
+    "junit/src/org/chromium/components/module_installer/logger/SplitInstallFailureLoggerTest.java",
+    "junit/src/org/chromium/components/module_installer/logger/SplitInstallStatusLoggerTest.java",
     "junit/src/org/chromium/components/module_installer/observer/ActivityObserverTest.java",
   ]
   deps = [
     ":module_installer_java",
     "//base:base_java",
+    "//base:base_java_test_support",
     "//base:base_junit_test_support",
   ]
 }
@@ -75,28 +79,13 @@
 # Use this one if your target needs to depend on ModuleInstallerConfig. The
 # other two targets are automatically added to build targets.
 java_cpp_template("module_installer_build_config") {
+  # TODO(fredmello): Temporary code to keep downstream unbroken.
   package_path = "org/chromium/components/module_installer/builder"
   sources = [
     "build/ModuleInstallerConfig.template",
   ]
 }
 
-java_cpp_template("module_installer_bundle_build_config") {
-  package_path = "org/chromium/components/module_installer/builder"
-  sources = [
-    "build/ModuleInstallerConfig.template",
-  ]
-  defines = [ "IS_BUNDLE_BUILD" ]
-}
-
-java_cpp_template("module_installer_apk_build_config") {
-  package_path = "org/chromium/components/module_installer/builder"
-  sources = [
-    "build/ModuleInstallerConfig.template",
-  ]
-  defines = [ "IS_APK_BUILD" ]
-}
-
 source_set("native") {
   sources = [
     "module.cc",
diff --git a/components/module_installer/android/build/ModuleInstallerConfig.template b/components/module_installer/android/build/ModuleInstallerConfig.template
index b23b3472..c07cf004 100644
--- a/components/module_installer/android/build/ModuleInstallerConfig.template
+++ b/components/module_installer/android/build/ModuleInstallerConfig.template
@@ -4,16 +4,8 @@
 
 package org.chromium.components.module_installer.builder;
 
-/** Build config for DFMs. */
-public class ModuleInstallerConfig {
-
-#if defined(IS_BUNDLE_BUILD)
-    public static final boolean IS_BUNDLE = true;
-#elif defined(IS_APK_BUILD)
-    public static final boolean IS_BUNDLE = false;
-#else
-    // This needs to not be final in order to avoid being inlined.
-    public static boolean IS_BUNDLE;
-#endif
-
-}
+/**
+  * Build config for DFMs.
+  * TODO(fredmello): Temporary code to keep downstream unbroken
+  */
+public class ModuleInstallerConfig { }
diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/EngineFactory.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/EngineFactory.java
index 4afcf5fd..e72e19b07 100644
--- a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/EngineFactory.java
+++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/EngineFactory.java
@@ -4,15 +4,15 @@
 
 package org.chromium.components.module_installer.engine;
 
+import org.chromium.base.BuildConfig;
 import org.chromium.base.CommandLine;
-import org.chromium.components.module_installer.builder.ModuleInstallerConfig;
 
 /**
  * Factory used to build concrete engines.
  */
 public class EngineFactory {
     public InstallEngine getEngine() {
-        if (!ModuleInstallerConfig.IS_BUNDLE) {
+        if (!BuildConfig.IS_BUNDLE) {
             return new ApkEngine();
         }
         if (CommandLine.getInstance().hasSwitch("fake-feature-module-install")) {
diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java
index 3de119b..62023a0 100644
--- a/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java
+++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java
@@ -4,8 +4,8 @@
 
 package org.chromium.components.module_installer.util;
 
+import org.chromium.base.BuildConfig;
 import org.chromium.base.annotations.MainDex;
-import org.chromium.components.module_installer.builder.ModuleInstallerConfig;
 import org.chromium.components.module_installer.logger.SplitAvailabilityLogger;
 
 /**
@@ -20,7 +20,7 @@
      * unnecessary code (modules are not supported in APKs).
      */
     public static void recordStartupTime() {
-        if (!ModuleInstallerConfig.IS_BUNDLE) return;
+        if (!BuildConfig.IS_BUNDLE) return;
 
         Timer.recordStartupTime();
     }
@@ -29,7 +29,7 @@
      * Records the start time in order to later report the install duration via UMA.
      */
     public static void recordModuleAvailability() {
-        if (!ModuleInstallerConfig.IS_BUNDLE) return;
+        if (!BuildConfig.IS_BUNDLE) return;
 
         try (Timer timer = new Timer()) {
             initApplication();
@@ -41,7 +41,7 @@
      * Updates the CrashKey report containing modules currently present.
      */
     public static void updateCrashKeys() {
-        if (!ModuleInstallerConfig.IS_BUNDLE) return;
+        if (!BuildConfig.IS_BUNDLE) return;
 
         try (Timer timer = new Timer()) {
             CrashKeyRecorder.updateCrashKeys();
@@ -52,7 +52,7 @@
      * Initializes the PlayCore SplitCompat framework.
      */
     public static void initApplication() {
-        if (!ModuleInstallerConfig.IS_BUNDLE) return;
+        if (!BuildConfig.IS_BUNDLE) return;
 
         try (Timer timer = new Timer()) {
             SplitCompatInitializer.initApplication();
diff --git a/components/module_installer/android/junit/src/org/chromium/components/module_installer/engine/ApkEngineTest.java b/components/module_installer/android/junit/src/org/chromium/components/module_installer/engine/ApkEngineTest.java
new file mode 100644
index 0000000..403e89f
--- /dev/null
+++ b/components/module_installer/android/junit/src/org/chromium/components/module_installer/engine/ApkEngineTest.java
@@ -0,0 +1,43 @@
+// Copyright 2019 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.components.module_installer.engine;
+
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InOrder;
+
+import org.chromium.base.test.BaseRobolectricTestRunner;
+
+/**
+ * Test suite for the ApkEngine class.
+ */
+@RunWith(BaseRobolectricTestRunner.class)
+public class ApkEngineTest {
+    private ApkEngine mEngine;
+
+    @Before
+    public void setUp() {
+        mEngine = new ApkEngine();
+    }
+
+    @Test
+    public void whenInstalling_verifyCompleteWithFailure() {
+        // Arrange.
+        String moduleName = "whenInstalling_verifyCompleteWithFailure";
+        InstallListener listener = mock(InstallListener.class);
+        InOrder inOrder = inOrder(listener);
+
+        // Act.
+        mEngine.install(moduleName, listener);
+
+        // Assert.
+        inOrder.verify(listener).onComplete(false);
+        inOrder.verifyNoMoreInteractions();
+    }
+}
diff --git a/components/module_installer/android/junit/src/org/chromium/components/module_installer/engine/SplitCompatEngineTest.java b/components/module_installer/android/junit/src/org/chromium/components/module_installer/engine/SplitCompatEngineTest.java
index f28f694..b7779ae 100644
--- a/components/module_installer/android/junit/src/org/chromium/components/module_installer/engine/SplitCompatEngineTest.java
+++ b/components/module_installer/android/junit/src/org/chromium/components/module_installer/engine/SplitCompatEngineTest.java
@@ -219,15 +219,33 @@
         verify(mLogger, times(2)).logRequestStart(moduleName);
     }
 
+    @Test(expected = UnsupportedOperationException.class)
+    public void whenInstallingWithMoreThanOneModule_verifyException() {
+        // Arrange.
+        String moduleName = "whenInstallingWithMoreThanOneModule_verifyException";
+        InstallListener listener = mock(InstallListener.class);
+
+        // Mock SplitInstallSessionState.
+        SplitInstallSessionState state = mock(SplitInstallSessionState.class);
+        doReturn(Arrays.asList("m1", "m2")).when(state).moduleNames();
+
+        ArgumentCaptor<SplitInstallStateUpdatedListener> arg =
+                ArgumentCaptor.forClass(SplitInstallStateUpdatedListener.class);
+
+        // Act & Assert.
+        mInstaller.install(moduleName, listener);
+        verify(mManager).registerListener(arg.capture());
+        arg.getValue().onStateUpdate(state);
+    }
+
     @Test
     public void whenInstalled_verifyListenerAndLogger() {
         // Arrange.
         String moduleName = "whenInstalled_verifyListenerAndLogger";
         Integer status = SplitInstallSessionStatus.INSTALLED;
-        String message = String.format("Module '%s' Installed", moduleName);
         InstallListener listener = mock(InstallListener.class);
 
-        // Mock SplitInstallSessionState
+        // Mock SplitInstallSessionState.
         SplitInstallSessionState state = mock(SplitInstallSessionState.class);
         doReturn(status).when(state).status();
         doReturn(Arrays.asList(moduleName)).when(state).moduleNames();
@@ -254,7 +272,6 @@
         String moduleName = "whenFailureToInstall_verifyListenerAndLogger";
         Integer status = SplitInstallSessionStatus.FAILED;
         Integer errorCode = SplitInstallErrorCode.NO_ERROR;
-        String message = String.format("Failed with code: %d", errorCode);
         InstallListener listener = mock(InstallListener.class);
 
         // Mock SplitInstallSessionState.
diff --git a/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/LoggerTestUtil.java b/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/LoggerTestUtil.java
new file mode 100644
index 0000000..153cd15
--- /dev/null
+++ b/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/LoggerTestUtil.java
@@ -0,0 +1,40 @@
+// Copyright 2019 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.components.module_installer.logger;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.verify;
+
+import org.mockito.ArgumentCaptor;
+
+import org.chromium.base.metrics.CachedMetrics;
+import org.chromium.base.metrics.RecordHistogram;
+
+/**
+ * Util class for supporting logger testing.
+ */
+public class LoggerTestUtil {
+    public static int getHistogramStatus(
+            RecordHistogram.Natives mockHistogram, String expectedName, Integer expectedBoundary) {
+        ArgumentCaptor<String> name = ArgumentCaptor.forClass(String.class);
+        ArgumentCaptor<Long> key = ArgumentCaptor.forClass(Long.class);
+        ArgumentCaptor<Integer> sample = ArgumentCaptor.forClass(Integer.class);
+        ArgumentCaptor<Integer> boundary = ArgumentCaptor.forClass(Integer.class);
+
+        // Make sure the metrics are flushed.
+        // Needed by the EnumeratedHistogramSample but not for RecordHistogram.
+        CachedMetrics.commitCachedMetrics();
+
+        verify(mockHistogram, atLeast(1))
+                .recordEnumeratedHistogram(
+                        name.capture(), key.capture(), sample.capture(), boundary.capture());
+
+        assertEquals(expectedName, name.getValue());
+        assertEquals(expectedBoundary, boundary.getValue());
+
+        return sample.getValue();
+    }
+}
\ No newline at end of file
diff --git a/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/PlayCoreLoggerTest.java b/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/PlayCoreLoggerTest.java
new file mode 100644
index 0000000..4a0da28
--- /dev/null
+++ b/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/PlayCoreLoggerTest.java
@@ -0,0 +1,158 @@
+// Copyright 2019 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.components.module_installer.logger;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.verify;
+
+import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InOrder;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import org.chromium.base.test.BaseRobolectricTestRunner;
+
+/**
+ * Test suite for the PlayCoreLogger class.
+ */
+@RunWith(BaseRobolectricTestRunner.class)
+public class PlayCoreLoggerTest {
+    @Mock
+    private SplitInstallFailureLogger mFailureLogger;
+
+    @Mock
+    private SplitInstallStatusLogger mStatusLogger;
+
+    @Mock
+    private SplitAvailabilityLogger mAvailabilityLogger;
+
+    private PlayCoreLogger mPlayCoreLogger;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mPlayCoreLogger = new PlayCoreLogger(mFailureLogger, mStatusLogger, mAvailabilityLogger);
+    }
+
+    @Test
+    public void whenLogRequestFailure_verifyLogged() {
+        // Arrange.
+        String moduleName = "whenLogRequestFailure_verifyLogged";
+        Integer errorCode = 1;
+
+        // Act.
+        mPlayCoreLogger.logRequestFailure(moduleName, errorCode);
+
+        // Assert.
+        verify(mFailureLogger).logRequestFailure(moduleName, errorCode);
+    }
+
+    @Test
+    public void whenLogStatusFailure_verifyLogged() {
+        // Arrange.
+        String moduleName = "whenLogStatusFailure_verifyLogged";
+        Integer errorCode = 1;
+
+        // Act.
+        mPlayCoreLogger.logStatusFailure(moduleName, errorCode);
+
+        // Assert.
+        verify(mFailureLogger).logStatusFailure(moduleName, errorCode);
+    }
+
+    @Test
+    public void whenLogInstalledStatus_verifyLogged() {
+        // Arrange.
+        String moduleName = "whenLogInstalledStatus_verifyLogged";
+        Integer status = SplitInstallSessionStatus.INSTALLED;
+        InOrder inOrder = inOrder(mStatusLogger, mAvailabilityLogger, mFailureLogger);
+
+        // Act.
+        mPlayCoreLogger.logStatus(moduleName, status);
+
+        // Assert.
+        inOrder.verify(mStatusLogger).logStatusChange(moduleName, status);
+        inOrder.verify(mAvailabilityLogger).storeModuleInstalled(moduleName, status);
+        inOrder.verify(mAvailabilityLogger).logInstallTimes(moduleName);
+        inOrder.verify(mFailureLogger).logStatusSuccess(moduleName);
+        inOrder.verifyNoMoreInteractions();
+    }
+
+    @Test
+    public void whenLogCanceledStatus_verifyLogged() {
+        // Arrange.
+        String moduleName = "whenLogCanceledStatus_verifyLogged";
+        Integer status = SplitInstallSessionStatus.CANCELED;
+        InOrder inOrder = inOrder(mStatusLogger, mFailureLogger);
+
+        // Act.
+        mPlayCoreLogger.logStatus(moduleName, status);
+
+        // Assert.
+        inOrder.verify(mStatusLogger).logStatusChange(moduleName, status);
+        inOrder.verify(mFailureLogger).logStatusCanceled(moduleName);
+        inOrder.verifyNoMoreInteractions();
+    }
+
+    @Test
+    public void whenLogDownloadedStatus_verifyLogged() {
+        // Arrange.
+        String moduleName = "whenLogDownloadedStatus_verifyLogged";
+        Integer status = SplitInstallSessionStatus.DOWNLOADED;
+        InOrder inOrder = inOrder(mStatusLogger, mFailureLogger);
+
+        // Act.
+        mPlayCoreLogger.logStatus(moduleName, status);
+
+        // Assert.
+        inOrder.verify(mStatusLogger).logStatusChange(moduleName, status);
+        inOrder.verify(mFailureLogger).logStatusNoSplitCompat(moduleName);
+        inOrder.verifyNoMoreInteractions();
+    }
+
+    @Test
+    public void whenLogRequestStart_verifyLogged() {
+        // Arrange.
+        String moduleName = "whenLogRequestStart_verifyLogged";
+
+        // Act.
+        mPlayCoreLogger.logRequestStart(moduleName);
+
+        // Assert.
+        verify(mStatusLogger).logRequestStart(moduleName);
+        verify(mAvailabilityLogger).storeRequestStart(moduleName);
+    }
+
+    @Test
+    public void whenLogRequestDeferredStart_verifyLogged() {
+        // Arrange.
+        String moduleName = "whenLogRequestDeferredStart_verifyLogged";
+
+        // Act.
+        mPlayCoreLogger.logRequestDeferredStart(moduleName);
+
+        // Assert.
+        verify(mStatusLogger).logRequestDeferredStart(moduleName);
+        verify(mAvailabilityLogger).storeRequestDeferredStart(moduleName);
+    }
+
+    @Test
+    public void whenGetUnknownRequest_verifyCorrectErrorCode() {
+        // Arrange.
+        Integer expectedCode = SplitInstallFailureLogger.UNKNOWN_REQUEST_ERROR;
+
+        // Act.
+        Integer actualCode = mPlayCoreLogger.getUnknownRequestErrorCode();
+
+        // Assert.
+        assertEquals(actualCode, expectedCode);
+    }
+}
diff --git a/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/SplitInstallFailureLoggerTest.java b/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/SplitInstallFailureLoggerTest.java
new file mode 100644
index 0000000..9189974
--- /dev/null
+++ b/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/SplitInstallFailureLoggerTest.java
@@ -0,0 +1,145 @@
+// Copyright 2019 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.components.module_installer.logger;
+
+import static org.junit.Assert.assertEquals;
+
+import com.google.android.play.core.splitinstall.model.SplitInstallErrorCode;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import org.chromium.base.metrics.RecordHistogram;
+import org.chromium.base.metrics.RecordHistogramJni;
+import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.base.test.util.JniMocker;
+
+/**
+ * Test suite for the SplitInstallFailureLogger class.
+ */
+@RunWith(BaseRobolectricTestRunner.class)
+public class SplitInstallFailureLoggerTest {
+    @Mock
+    private RecordHistogram.Natives mRecordHistogramMock;
+
+    @Rule
+    public JniMocker mocker = new JniMocker();
+
+    private SplitInstallFailureLogger mFailureLogger;
+
+    private int mErrorCodeMapping[][] = {
+            {4, SplitInstallErrorCode.ACCESS_DENIED},
+            {5, SplitInstallErrorCode.ACTIVE_SESSIONS_LIMIT_EXCEEDED},
+            {6, SplitInstallErrorCode.API_NOT_AVAILABLE},
+            {7, SplitInstallErrorCode.INCOMPATIBLE_WITH_EXISTING_SESSION},
+            {8, SplitInstallErrorCode.INSUFFICIENT_STORAGE},
+            {9, SplitInstallErrorCode.INVALID_REQUEST},
+            {10, SplitInstallErrorCode.MODULE_UNAVAILABLE},
+            {11, SplitInstallErrorCode.NETWORK_ERROR},
+            {12, SplitInstallErrorCode.NO_ERROR},
+            {13, SplitInstallErrorCode.SERVICE_DIED},
+            {14, SplitInstallErrorCode.SESSION_NOT_FOUND},
+            {15, SplitInstallErrorCode.SPLITCOMPAT_COPY_ERROR},
+            {16, SplitInstallErrorCode.SPLITCOMPAT_EMULATION_ERROR},
+            {17, SplitInstallErrorCode.SPLITCOMPAT_VERIFICATION_ERROR},
+            {18, SplitInstallErrorCode.INTERNAL_ERROR},
+    };
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mocker.mock(RecordHistogramJni.TEST_HOOKS, mRecordHistogramMock);
+
+        mFailureLogger = new SplitInstallFailureLogger();
+    }
+
+    @Test
+    public void whenLogSuccess_verifyHistogramCode() {
+        // Arrange.
+        String moduleName = "whenLogSuccess_verifyHistogramCode";
+        int expectedCode = 0;
+
+        // Act.
+        mFailureLogger.logStatusSuccess(moduleName);
+
+        // Assert.
+        assertEquals(expectedCode, getHistogramStatus(moduleName));
+    }
+
+    @Test
+    public void whenLogCancelation_verifyHistogramCode() {
+        // Arrange.
+        String moduleName = "whenLogCancelation_verifyHistogramCode";
+        int expectedCode = 3;
+
+        // Act.
+        mFailureLogger.logStatusCanceled(moduleName);
+
+        // Assert.
+        assertEquals(expectedCode, getHistogramStatus(moduleName));
+    }
+
+    @Test
+    public void whenLogNoSplitCompat_verifyHistogramCode() {
+        // Arrange.
+        String moduleName = "whenLogNoSplitCompat_verifyHistogramCode";
+        int expectedCode = 21;
+
+        // Act.
+        mFailureLogger.logStatusNoSplitCompat(moduleName);
+
+        // Assert.
+        assertEquals(expectedCode, getHistogramStatus(moduleName));
+    }
+
+    @Test
+    public void whenLogStatusFailure_verifyHistogramCode() {
+        // Arrange.
+        String moduleName = "whenLogStatusFailure_verifyHistogramCode";
+        int unknownCode = 999;
+        int expectedUnknownCode = 19;
+
+        // Act & Assert.
+        for (int[] tuple : mErrorCodeMapping) {
+            int expectedOutputCode = tuple[0];
+            int inputCode = tuple[1];
+            mFailureLogger.logStatusFailure(moduleName, inputCode);
+            assertEquals(expectedOutputCode, getHistogramStatus(moduleName));
+        }
+
+        mFailureLogger.logStatusFailure(moduleName, unknownCode);
+        assertEquals(expectedUnknownCode, getHistogramStatus(moduleName));
+    }
+
+    @Test
+    public void whenLogRequestFailure_verifyHistogramCode() {
+        // Arrange.
+        String moduleName = "whenLogRequestFailure_verifyHistogramCode";
+        int unknownCode = 999;
+        int expectedUnknownCode = 20;
+
+        // Act & Assert.
+        for (int[] tuple : mErrorCodeMapping) {
+            int expectedOutputCode = tuple[0];
+            int inputCode = tuple[1];
+            mFailureLogger.logRequestFailure(moduleName, inputCode);
+            assertEquals(expectedOutputCode, getHistogramStatus(moduleName));
+        }
+
+        mFailureLogger.logRequestFailure(moduleName, unknownCode);
+        assertEquals(expectedUnknownCode, getHistogramStatus(moduleName));
+    }
+
+    private int getHistogramStatus(String moduleName) {
+        String expName = "Android.FeatureModules.InstallStatus." + moduleName;
+        Integer expBoundary = 22;
+        return LoggerTestUtil.getHistogramStatus(mRecordHistogramMock, expName, expBoundary);
+    }
+}
diff --git a/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/SplitInstallStatusLoggerTest.java b/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/SplitInstallStatusLoggerTest.java
new file mode 100644
index 0000000..d6f91c7
--- /dev/null
+++ b/components/module_installer/android/junit/src/org/chromium/components/module_installer/logger/SplitInstallStatusLoggerTest.java
@@ -0,0 +1,101 @@
+// Copyright 2019 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.components.module_installer.logger;
+
+import static org.junit.Assert.assertEquals;
+
+import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import org.chromium.base.metrics.RecordHistogram;
+import org.chromium.base.metrics.RecordHistogramJni;
+import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.base.test.util.JniMocker;
+
+/**
+ * Test suite for the SplitInstallStatusLogger class.
+ */
+@RunWith(BaseRobolectricTestRunner.class)
+public class SplitInstallStatusLoggerTest {
+    @Mock
+    private RecordHistogram.Natives mRecordHistogramMock;
+
+    @Rule
+    public JniMocker mocker = new JniMocker();
+
+    private SplitInstallStatusLogger mStatusLogger;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mocker.mock(RecordHistogramJni.TEST_HOOKS, mRecordHistogramMock);
+
+        mStatusLogger = new SplitInstallStatusLogger();
+    }
+
+    @Test
+    public void whenLogRequestStart_verifyHistogramCode() {
+        // Arrange.
+        String moduleName = "whenLogRequestStart_verifyHistogramCode";
+        int expectedCode = 1;
+
+        // Act.
+        mStatusLogger.logRequestStart(moduleName);
+
+        // Assert.
+        assertEquals(expectedCode, getHistogramStatus(moduleName));
+    }
+
+    @Test
+    public void whenLogRequestDeferredStart_verifyHistogramCode() {
+        // Arrange.
+        String moduleName = "whenLogRequestDeferredStart_verifyHistogramCode";
+        int expectedCode = 11;
+
+        // Act.
+        mStatusLogger.logRequestDeferredStart(moduleName);
+
+        // Assert.
+        assertEquals(expectedCode, getHistogramStatus(moduleName));
+    }
+
+    @Test
+    public void whenLogStatusChange_verifyHistogramCode() {
+        // Arrange.
+        String moduleName = "whenLogStatusChange_verifyHistogramCode";
+        int unknownCode = 999;
+
+        // Act & Assert.
+        assertEquals(0, logStatusChange(moduleName, unknownCode));
+        assertEquals(2, logStatusChange(moduleName, SplitInstallSessionStatus.PENDING));
+        assertEquals(3, logStatusChange(moduleName, SplitInstallSessionStatus.DOWNLOADING));
+        assertEquals(4, logStatusChange(moduleName, SplitInstallSessionStatus.DOWNLOADED));
+        assertEquals(5, logStatusChange(moduleName, SplitInstallSessionStatus.INSTALLING));
+        assertEquals(6, logStatusChange(moduleName, SplitInstallSessionStatus.INSTALLED));
+        assertEquals(7, logStatusChange(moduleName, SplitInstallSessionStatus.FAILED));
+        assertEquals(8, logStatusChange(moduleName, SplitInstallSessionStatus.CANCELING));
+        assertEquals(9, logStatusChange(moduleName, SplitInstallSessionStatus.CANCELED));
+        assertEquals(10,
+                logStatusChange(moduleName, SplitInstallSessionStatus.REQUIRES_USER_CONFIRMATION));
+    }
+
+    private int logStatusChange(String moduleName, int status) {
+        mStatusLogger.logStatusChange(moduleName, status);
+        return getHistogramStatus(moduleName);
+    }
+
+    private int getHistogramStatus(String moduleName) {
+        String expName = "Android.FeatureModules.InstallingStatus." + moduleName;
+        Integer expBoundary = 12;
+        return LoggerTestUtil.getHistogramStatus(mRecordHistogramMock, expName, expBoundary);
+    }
+}
diff --git a/components/neterror/resources/offline.js b/components/neterror/resources/offline.js
index f170440..3cdea7d 100644
--- a/components/neterror/resources/offline.js
+++ b/components/neterror/resources/offline.js
@@ -98,8 +98,8 @@
 // but navigator.userAgent includes /Safari/.
 // TODO(crbug.com/998999): Fix navigator.userAgent such that it reliably
 // returns an agent string containing "CriOS".
-var IS_IOS = /iPad|iPhone|iPod|MacIntel/.test(navigator.platform) &&
-    !(/Safari/.test(navigator.userAgent));
+var IS_IOS = /iPad|iPhone|iPod|MacIntel/.test(window.navigator.platform) &&
+    !(/Safari/.test(window.navigator.userAgent));
 
 
 /** @const */
diff --git a/components/page_info_strings.grdp b/components/page_info_strings.grdp
index 87a1e7a8..ce5891d 100644
--- a/components/page_info_strings.grdp
+++ b/components/page_info_strings.grdp
@@ -39,17 +39,20 @@
   <message name="IDS_PAGE_INFO_SAFETY_TIP_BAD_REPUTATION_DESCRIPTION" desc="Body of message to display in the page info bubble when you are viewing a page that triggered a safety tip.">
     This site could be fake or fraudulent. Chrome recommends leaving now.
   </message>
-  <message name="IDS_PAGE_INFO_SAFETY_TIP_LEAVE_BUTTON" desc="Text of button to leave a suspicious page shown on the safety tip page info bubble.">
-    Leave this site
+  <message name="IDS_PAGE_INFO_SAFETY_TIP_MORE_INFO_LINK" desc="Text of link to Help Center page on safety tip page info bubble.">
+    Learn more
   </message>
-  <message name="IDS_PAGE_INFO_SAFETY_TIP_GO_TO_SITE_BUTTON" desc="Text of button to leave a suspicious page shown on the safety tip page info bubble.">
-    Yes. Go there.
+  <message name="IDS_PAGE_INFO_SAFETY_TIP_IGNORE_BUTTON" desc="Text of button to ignore a safety tip page info bubble.">
+    Ignore
+  </message>
+  <message name="IDS_PAGE_INFO_SAFETY_TIP_LEAVE_BUTTON" desc="Text of button to leave a suspicious page shown on the safety tip page info bubble.">
+    Leave site
   </message>
   <message name="IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_TITLE" desc="Title of Safety Tip infobar on a domain that looks like another domain.">
     Did you mean <ph name='LOOKALIKE_DOMAIN'>$1<ex>google.com</ex></ph>?
   </message>
   <message name="IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_DESCRIPTION" desc="Body of an infobar warning when the user visits a page that triggered a Safety Tip because the domain looked like another domain.">
-    This site's name looks similar to that of another site. Attackers sometimes mimic sites by making small, hard-to-see changes to the domain name.
+    This site's name looks similar to <ph name='LOOKALIKE_DOMAIN'>$1<ex>google.com</ex></ph>. Attackers sometimes mimic sites by making small, hard-to-see changes to the domain name.
   </message>
 
   <!-- Viewing file strings -->
diff --git a/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_IGNORE_BUTTON.png.sha1 b/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_IGNORE_BUTTON.png.sha1
new file mode 100644
index 0000000..0f1eae2
--- /dev/null
+++ b/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_IGNORE_BUTTON.png.sha1
@@ -0,0 +1 @@
+df14c960857c08e55816d0cd50445988f337be8a
\ No newline at end of file
diff --git a/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_LEAVE_BUTTON.png.sha1 b/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_LEAVE_BUTTON.png.sha1
index db9fb7b..0f1eae2 100644
--- a/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_LEAVE_BUTTON.png.sha1
+++ b/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_LEAVE_BUTTON.png.sha1
@@ -1 +1 @@
-286691c1acd6ead1593fb72f3bc054fb607a67ed
\ No newline at end of file
+df14c960857c08e55816d0cd50445988f337be8a
\ No newline at end of file
diff --git a/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_DESCRIPTION.png.sha1 b/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_DESCRIPTION.png.sha1
index e68090a..e2295a9f 100644
--- a/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_DESCRIPTION.png.sha1
+++ b/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_DESCRIPTION.png.sha1
@@ -1 +1 @@
-f0b39b6ee075f05cb44cae77812ac7e185a57581
\ No newline at end of file
+aa71f67fa4b2adea131a4862a5b639f7e12b69e0
\ No newline at end of file
diff --git a/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_MORE_INFO_LINK.png.sha1 b/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_MORE_INFO_LINK.png.sha1
new file mode 100644
index 0000000..0f1eae2
--- /dev/null
+++ b/components/page_info_strings_grdp/IDS_PAGE_INFO_SAFETY_TIP_MORE_INFO_LINK.png.sha1
@@ -0,0 +1 @@
+df14c960857c08e55816d0cd50445988f337be8a
\ No newline at end of file
diff --git a/components/printing/test/print_mock_render_thread.cc b/components/printing/test/print_mock_render_thread.cc
index b126747b..8ee41919 100644
--- a/components/printing/test/print_mock_render_thread.cc
+++ b/components/printing/test/print_mock_render_thread.cc
@@ -6,8 +6,6 @@
 
 #include <stddef.h>
 
-#include <vector>
-
 #include "base/values.h"
 #include "build/build_config.h"
 #include "components/printing/test/mock_printer.h"
@@ -24,10 +22,7 @@
 
 PrintMockRenderThread::PrintMockRenderThread()
 #if BUILDFLAG(ENABLE_PRINTING)
-    : printer_(new MockPrinter),
-      print_dialog_user_response_(true),
-      print_preview_cancel_page_number_(-1),
-      print_preview_pages_remaining_(0)
+    : printer_(std::make_unique<MockPrinter>())
 #endif
 {
 }
diff --git a/components/printing/test/print_mock_render_thread.h b/components/printing/test/print_mock_render_thread.h
index 695da05..7e175b8 100644
--- a/components/printing/test/print_mock_render_thread.h
+++ b/components/printing/test/print_mock_render_thread.h
@@ -9,6 +9,8 @@
 
 #include <memory>
 #include <string>
+#include <utility>
+#include <vector>
 
 #include "base/compiler_specific.h"
 #include "base/macros.h"
@@ -96,14 +98,14 @@
   std::unique_ptr<MockPrinter> printer_;
 
   // True to simulate user clicking print. False to cancel.
-  bool print_dialog_user_response_;
+  bool print_dialog_user_response_ = true;
 
   // Simulates cancelling print preview if |print_preview_pages_remaining_|
   // equals this.
-  int print_preview_cancel_page_number_;
+  int print_preview_cancel_page_number_ = -1;
 
   // Number of pages to generate for print preview.
-  int print_preview_pages_remaining_;
+  int print_preview_pages_remaining_ = 0;
 
   // Vector of <page_number, content_data_size> that were previewed.
   std::vector<std::pair<int, uint32_t>> print_preview_pages_;
diff --git a/components/printing/test/print_render_frame_helper_browsertest.cc b/components/printing/test/print_render_frame_helper_browsertest.cc
index 49939078..2fe59f8 100644
--- a/components/printing/test/print_render_frame_helper_browsertest.cc
+++ b/components/printing/test/print_render_frame_helper_browsertest.cc
@@ -800,7 +800,6 @@
   base::DictionaryValue dict;
   CreatePrintSettingsDictionary(&dict);
   dict.SetBoolean(kSettingPrintToPDF, false);
-  dict.SetInteger(kSettingMarginsType, DEFAULT_MARGINS);
   OnPrintPreview(dict);
 
   EXPECT_EQ(0, print_render_thread()->print_preview_pages_remaining());
@@ -845,7 +844,6 @@
   // Fill in some dummy values.
   base::DictionaryValue dict;
   CreatePrintSettingsDictionary(&dict);
-  dict.SetBoolean(kSettingPrintToPDF, true);
   dict.SetInteger(kSettingMarginsType, PRINTABLE_AREA_MARGINS);
   OnPrintPreview(dict);
 
@@ -971,7 +969,6 @@
   base::DictionaryValue dict;
   CreatePrintSettingsDictionary(&dict);
   dict.SetBoolean(kSettingPrintToPDF, false);
-  dict.SetInteger(kSettingMarginsType, DEFAULT_MARGINS);
   OnPrintPreview(dict);
 
   EXPECT_EQ(0, print_render_thread()->print_preview_pages_remaining());
@@ -1005,8 +1002,6 @@
   // Fill in some dummy values.
   base::DictionaryValue dict;
   CreatePrintSettingsDictionary(&dict);
-  dict.SetBoolean(kSettingPrintToPDF, true);
-  dict.SetInteger(kSettingMarginsType, DEFAULT_MARGINS);
   OnPrintPreview(dict);
 
   EXPECT_EQ(0, print_render_thread()->print_preview_pages_remaining());
@@ -1030,7 +1025,6 @@
   base::DictionaryValue dict;
   CreatePrintSettingsDictionary(&dict);
   dict.SetBoolean(kSettingPrintToPDF, false);
-  dict.SetInteger(kSettingMarginsType, DEFAULT_MARGINS);
   OnPrintPreview(dict);
 
   EXPECT_EQ(0, print_render_thread()->print_preview_pages_remaining());
@@ -1063,7 +1057,6 @@
   base::DictionaryValue dict;
   CreatePrintSettingsDictionary(&dict);
   dict.SetBoolean(kSettingPrintToPDF, false);
-  dict.SetInteger(kSettingMarginsType, DEFAULT_MARGINS);
   OnPrintPreview(dict);
 
   EXPECT_EQ(0, print_render_thread()->print_preview_pages_remaining());
@@ -1108,7 +1101,6 @@
   // Fill in some dummy values.
   base::DictionaryValue dict;
   CreatePrintSettingsDictionary(&dict);
-  dict.SetBoolean(kSettingPrintToPDF, true);
   dict.SetInteger(kSettingMarginsType, CUSTOM_MARGINS);
   OnPrintPreview(dict);
 
diff --git a/components/safe_browsing/features.cc b/components/safe_browsing/features.cc
index c016215..66d7f41188 100644
--- a/components/safe_browsing/features.cc
+++ b/components/safe_browsing/features.cc
@@ -45,7 +45,7 @@
     "ForceUseAPDownloadProtection", base::FEATURE_DISABLED_BY_DEFAULT};
 
 const base::Feature kPasswordProtectionForSavedPasswords{
-    "SafeBrowsingPasswordProtectionForSignedInUsers",
+    "SafeBrowsingPasswordProtectionForSavedPasswords",
     base::FEATURE_DISABLED_BY_DEFAULT};
 
 const base::Feature kPasswordProtectionForSignedInUsers{
diff --git a/components/safe_browsing/triggers/ad_popup_trigger_unittest.cc b/components/safe_browsing/triggers/ad_popup_trigger_unittest.cc
index f388596b..f344c4d 100644
--- a/components/safe_browsing/triggers/ad_popup_trigger_unittest.cc
+++ b/components/safe_browsing/triggers/ad_popup_trigger_unittest.cc
@@ -172,7 +172,7 @@
       AdPopupTriggerAction::POPUP_COULD_NOT_START_REPORT, 2);
 }
 
-TEST_F(AdPopupTriggerTest, PopupWithNoAds) {
+TEST_F(AdPopupTriggerTest, DISABLED_PopupWithNoAds) {
   // Make sure the trigger doesn't fire when there are no ads on the page.
   CreateTrigger();
   EXPECT_CALL(*get_trigger_manager(),
diff --git a/components/security_interstitials_strings.grdp b/components/security_interstitials_strings.grdp
index b3920e5..c072689 100644
--- a/components/security_interstitials_strings.grdp
+++ b/components/security_interstitials_strings.grdp
@@ -461,7 +461,7 @@
   <message name="IDS_SAFETY_TIP_ANDROID_LEAVE_BUTTON" desc="Text of button to ignore the warning on a suspicious page. Shown on the safety tip infobar.">
     Leave site
   </message>
-  <message name="IDS_SAFETY_TIP_ANDROID_GO_TO_SITE_BUTTON" desc="Text of button to ignore the warning on a suspicious page. Shown on the safety tip infobar when we suggest an alternate (safe) destination.">
-    Yes. Go there.
+  <message name="IDS_SAFETY_TIP_ANDROID_LOOKALIKE_TITLE" desc="Title of Safety Tip infobar on a domain that looks like another domain.">
+    Is this the right site?
   </message>
 </grit-part>
diff --git a/components/security_interstitials_strings_grdp/IDS_SAFETY_TIP_ANDROID_LOOKALIKE_TITLE.png.sha1 b/components/security_interstitials_strings_grdp/IDS_SAFETY_TIP_ANDROID_LOOKALIKE_TITLE.png.sha1
new file mode 100644
index 0000000..48073e1c
--- /dev/null
+++ b/components/security_interstitials_strings_grdp/IDS_SAFETY_TIP_ANDROID_LOOKALIKE_TITLE.png.sha1
@@ -0,0 +1 @@
+c25e67e85068abb61bdb2e4e17f836429c4b9a04
\ No newline at end of file
diff --git a/components/variations/BUILD.gn b/components/variations/BUILD.gn
index a11a63e..3d36206 100644
--- a/components/variations/BUILD.gn
+++ b/components/variations/BUILD.gn
@@ -130,6 +130,7 @@
   sources = [
     "active_field_trials_unittest.cc",
     "child_process_field_trial_syncer_unittest.cc",
+    "client_filterable_state_unittest.cc",
     "entropy_provider_unittest.cc",
     "hashing_unittest.cc",
     "net/variations_command_line_unittest.cc",
diff --git a/components/variations/client_filterable_state.cc b/components/variations/client_filterable_state.cc
index 6fda4f4..f39123e 100644
--- a/components/variations/client_filterable_state.cc
+++ b/components/variations/client_filterable_state.cc
@@ -31,7 +31,15 @@
 #endif
 }
 
-ClientFilterableState::ClientFilterableState() {}
+ClientFilterableState::ClientFilterableState(
+    IsEnterpriseFunction is_enterprise_function)
+    : is_enterprise_function_(std::move(is_enterprise_function)) {}
 ClientFilterableState::~ClientFilterableState() {}
 
+bool ClientFilterableState::IsEnterprise() const {
+  if (!is_enterprise_.has_value())
+    is_enterprise_ = std::move(is_enterprise_function_).Run();
+  return is_enterprise_.value();
+}
+
 }  // namespace variations
diff --git a/components/variations/client_filterable_state.h b/components/variations/client_filterable_state.h
index 44cc17b..6a3bdd1 100644
--- a/components/variations/client_filterable_state.h
+++ b/components/variations/client_filterable_state.h
@@ -7,20 +7,29 @@
 
 #include <string>
 
+#include "base/callback.h"
 #include "base/macros.h"
+#include "base/optional.h"
 #include "base/time/time.h"
 #include "base/version.h"
 #include "components/variations/proto/study.pb.h"
 
 namespace variations {
 
+using IsEnterpriseFunction = base::OnceCallback<bool()>;
+
 // A container for all of the client state which is used for filtering studies.
 struct ClientFilterableState {
   static Study::Platform GetCurrentPlatform();
 
-  ClientFilterableState();
+  ClientFilterableState(IsEnterpriseFunction is_enterprise_function);
   ~ClientFilterableState();
 
+  // Whether this is an enterprise client. Always false on android, iOS, and
+  // linux. Determined by VariationsServiceClient::IsEnterprise for windows,
+  // chromeOs, and mac.
+  bool IsEnterprise() const;
+
   // The system locale.
   std::string locale;
 
@@ -51,11 +60,6 @@
   // Based on base::SysInfo::IsLowEndDevice().
   bool is_low_end_device = false;
 
-  // Whether this is an enterprise client. Always false on android, iOS, and
-  // linux. Determined by VariationsServiceClient::IsEnterprise for windows,
-  // chromeOs, and mac.
-  bool is_enterprise = false;
-
   // The country code to use for studies configured with session consistency.
   std::string session_consistency_country;
 
@@ -63,6 +67,12 @@
   std::string permanent_consistency_country;
 
  private:
+  // Evaluating enterprise status negatively affects performance, so we only
+  // evaluate it if needed (i.e. if a study is filtering by enterprise) and at
+  // most once.
+  mutable IsEnterpriseFunction is_enterprise_function_;
+  mutable base::Optional<bool> is_enterprise_;
+
   DISALLOW_COPY_AND_ASSIGN(ClientFilterableState);
 };
 
diff --git a/components/variations/client_filterable_state_unittest.cc b/components/variations/client_filterable_state_unittest.cc
new file mode 100644
index 0000000..2c0173a
--- /dev/null
+++ b/components/variations/client_filterable_state_unittest.cc
@@ -0,0 +1,25 @@
+// Copyright 2019 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/variations/client_filterable_state.h"
+
+#include "base/bind.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace variations {
+
+TEST(VariationsClientFilterableStateTest, IsEnterprise) {
+  // Test, for non enterprise clients, is_enterprise_function_ is called once.
+  ClientFilterableState client_non_enterprise(
+      base::BindOnce([] { return false; }));
+  EXPECT_FALSE(client_non_enterprise.IsEnterprise());
+  EXPECT_FALSE(client_non_enterprise.IsEnterprise());
+
+  // Test, for enterprise clients, is_enterprise_function_ is called once.
+  ClientFilterableState client_enterprise(base::BindOnce([] { return true; }));
+  EXPECT_TRUE(client_enterprise.IsEnterprise());
+  EXPECT_TRUE(client_enterprise.IsEnterprise());
+}
+
+}  // namespace variations
diff --git a/components/variations/service/safe_seed_manager_unittest.cc b/components/variations/service/safe_seed_manager_unittest.cc
index 28f28d6..40d3b11 100644
--- a/components/variations/service/safe_seed_manager_unittest.cc
+++ b/components/variations/service/safe_seed_manager_unittest.cc
@@ -81,7 +81,7 @@
 // |safe_seed_manager|.
 void SetDefaultActiveState(SafeSeedManager* safe_seed_manager) {
   std::unique_ptr<ClientFilterableState> client_state =
-      std::make_unique<ClientFilterableState>();
+      std::make_unique<ClientFilterableState>(base::OnceCallback<bool()>());
   client_state->locale = kTestLocale;
   client_state->permanent_consistency_country =
       kTestPermanentConsistencyCountry;
diff --git a/components/variations/service/variations_field_trial_creator.cc b/components/variations/service/variations_field_trial_creator.cc
index 6744746..01d097f 100644
--- a/components/variations/service/variations_field_trial_creator.cc
+++ b/components/variations/service/variations_field_trial_creator.cc
@@ -234,8 +234,12 @@
 std::unique_ptr<ClientFilterableState>
 VariationsFieldTrialCreator::GetClientFilterableStateForVersion(
     const base::Version& version) {
+  // Note that passing base::Unretained(client_) is safe here because |client_|
+  // lives until Chrome exits.
+  auto IsEnterpriseCallback = base::Bind(&VariationsServiceClient::IsEnterprise,
+                                         base::Unretained(client_));
   std::unique_ptr<ClientFilterableState> state =
-      std::make_unique<ClientFilterableState>();
+      std::make_unique<ClientFilterableState>(IsEnterpriseCallback);
   state->locale = application_locale_;
   state->reference_date = GetReferenceDateForExpiryChecks(local_state());
   state->version = version;
@@ -252,7 +256,6 @@
   // evaluated, that field trial would not be able to apply for this case.
   state->is_low_end_device = base::SysInfo::IsLowEndDevice();
 #endif
-  state->is_enterprise = client_->IsEnterprise();
   state->session_consistency_country = GetLatestCountry();
   state->permanent_consistency_country = LoadPermanentConsistencyCountry(
       version, state->session_consistency_country);
diff --git a/components/variations/study_filtering.cc b/components/variations/study_filtering.cc
index 8338088..51fddcf 100644
--- a/components/variations/study_filtering.cc
+++ b/components/variations/study_filtering.cc
@@ -119,8 +119,10 @@
          filter.is_low_end_device() == is_low_end_device;
 }
 
-bool CheckStudyEnterprise(const Study::Filter& filter, bool is_enterprise) {
-  return !filter.has_is_enterprise() || filter.is_enterprise() == is_enterprise;
+bool CheckStudyEnterprise(const Study::Filter& filter,
+                          const ClientFilterableState& client_state) {
+  return !filter.has_is_enterprise() ||
+         filter.is_enterprise() == client_state.IsEnterprise();
 }
 
 bool CheckStudyStartDate(const Study::Filter& filter,
@@ -278,7 +280,7 @@
       return false;
     }
 
-    if (!CheckStudyEnterprise(study.filter(), client_state.is_enterprise)) {
+    if (!CheckStudyEnterprise(study.filter(), client_state)) {
       DVLOG(1) << "Filtered out study " << study.name()
                << " due to enterprise state.";
       return false;
diff --git a/components/variations/study_filtering.h b/components/variations/study_filtering.h
index c1cf9c3..fd8ffdf 100644
--- a/components/variations/study_filtering.h
+++ b/components/variations/study_filtering.h
@@ -46,7 +46,8 @@
                             bool is_low_end_device);
 
 // Checks whether a study is applicable given |is_enterprise| per |filter|.
-bool CheckStudyEnterprise(const Study::Filter& filter, bool is_enterprise);
+bool CheckStudyEnterprise(const Study::Filter& filter,
+                          const ClientFilterableState& client_state);
 
 // Checks whether a study is applicable for the given date/time per |filter|.
 bool CheckStudyStartDate(const Study::Filter& filter,
diff --git a/components/variations/study_filtering_unittest.cc b/components/variations/study_filtering_unittest.cc
index f17149a..30e0305 100644
--- a/components/variations/study_filtering_unittest.cc
+++ b/components/variations/study_filtering_unittest.cc
@@ -10,6 +10,8 @@
 
 #include <vector>
 
+#include "base/bind.h"
+#include "base/bind_helpers.h"
 #include "base/macros.h"
 #include "base/stl_util.h"
 #include "base/strings/string_split.h"
@@ -272,19 +274,22 @@
 
 TEST(VariationsStudyFilteringTest, CheckStudyEnterprise) {
   Study::Filter filter;
+  ClientFilterableState client_non_enterprise(
+      base::BindOnce([] { return false; }));
+  ClientFilterableState client_enterprise(base::BindOnce([] { return true; }));
 
   // Check that if the filter is not set, study applies to both enterprise and
   // non-enterprise clients.
-  EXPECT_TRUE(internal::CheckStudyEnterprise(filter, true));
-  EXPECT_TRUE(internal::CheckStudyEnterprise(filter, false));
+  EXPECT_TRUE(internal::CheckStudyEnterprise(filter, client_enterprise));
+  EXPECT_TRUE(internal::CheckStudyEnterprise(filter, client_non_enterprise));
 
   filter.set_is_enterprise(true);
-  EXPECT_TRUE(internal::CheckStudyEnterprise(filter, true));
-  EXPECT_FALSE(internal::CheckStudyEnterprise(filter, false));
+  EXPECT_TRUE(internal::CheckStudyEnterprise(filter, client_enterprise));
+  EXPECT_FALSE(internal::CheckStudyEnterprise(filter, client_non_enterprise));
 
   filter.set_is_enterprise(false);
-  EXPECT_FALSE(internal::CheckStudyEnterprise(filter, true));
-  EXPECT_TRUE(internal::CheckStudyEnterprise(filter, false));
+  EXPECT_FALSE(internal::CheckStudyEnterprise(filter, client_enterprise));
+  EXPECT_TRUE(internal::CheckStudyEnterprise(filter, client_non_enterprise));
 }
 
 TEST(VariationsStudyFilteringTest, CheckStudyStartDate) {
@@ -637,7 +642,7 @@
   AddExperiment("A", 10, study3);
   AddExperiment("Default", 25, study3);
 
-  ClientFilterableState client_state;
+  ClientFilterableState client_state({});
   client_state.locale = "en-CA";
   client_state.reference_date = base::Time::Now();
   client_state.version = base::Version("20.0.0.0");
@@ -696,7 +701,7 @@
     if (test.filter_exclude_country)
       study->mutable_filter()->add_exclude_country(test.filter_exclude_country);
 
-    ClientFilterableState client_state;
+    ClientFilterableState client_state({});
     client_state.locale = "en-CA";
     client_state.reference_date = base::Time::Now();
     client_state.version = base::Version("20.0.0.0");
@@ -714,7 +719,7 @@
 }
 
 TEST(VariationsStudyFilteringTest, GetClientCountryForStudy_Session) {
-  ClientFilterableState client_state;
+  ClientFilterableState client_state({});
   client_state.session_consistency_country = "session_country";
   client_state.permanent_consistency_country = "permanent_country";
 
@@ -725,7 +730,7 @@
 }
 
 TEST(VariationsStudyFilteringTest, GetClientCountryForStudy_Permanent) {
-  ClientFilterableState client_state;
+  ClientFilterableState client_state({});
   client_state.session_consistency_country = "session_country";
   client_state.permanent_consistency_country = "permanent_country";
 
diff --git a/components/variations/variations_seed_processor_unittest.cc b/components/variations/variations_seed_processor_unittest.cc
index 5a6e7bbd..6d39a69 100644
--- a/components/variations/variations_seed_processor_unittest.cc
+++ b/components/variations/variations_seed_processor_unittest.cc
@@ -13,6 +13,7 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/bind_helpers.h"
 #include "base/command_line.h"
 #include "base/feature_list.h"
 #include "base/format_macros.h"
@@ -266,7 +267,7 @@
   const base::Time year_ago =
       base::Time::Now() - base::TimeDelta::FromDays(365);
 
-  ClientFilterableState client_state;
+  ClientFilterableState client_state({});
   client_state.locale = "en-CA";
   client_state.reference_date = base::Time::Now();
   client_state.version = base::Version("20.0.0.0");
@@ -548,7 +549,7 @@
   AddExperiment("Default", 0, study3);
   study3->set_activation_type(Study_ActivationType_ACTIVATE_ON_QUERY);
 
-  ClientFilterableState client_state;
+  ClientFilterableState client_state({});
   client_state.locale = "en-CA";
   client_state.reference_date = base::Time::Now();
   client_state.version = base::Version("20.0.0.0");
diff --git a/components/variations/variations_seed_store_unittest.cc b/components/variations/variations_seed_store_unittest.cc
index 4c9e957..df0bbe5d 100644
--- a/components/variations/variations_seed_store_unittest.cc
+++ b/components/variations/variations_seed_store_unittest.cc
@@ -108,7 +108,7 @@
 // for testing.
 std::unique_ptr<ClientFilterableState> CreateTestClientFilterableState() {
   std::unique_ptr<ClientFilterableState> client_state =
-      std::make_unique<ClientFilterableState>();
+      std::make_unique<ClientFilterableState>(base::OnceCallback<bool()>());
   client_state->locale = "es-MX";
   client_state->reference_date = WrapTime(1234554321);
   client_state->version = base::Version("1.2.3.4");
@@ -568,7 +568,7 @@
   // Loading an empty seed should return false.
   TestVariationsSeedStore seed_store(&prefs);
   VariationsSeed loaded_seed;
-  ClientFilterableState client_state;
+  ClientFilterableState client_state({});
   base::Time fetch_time;
   EXPECT_FALSE(
       seed_store.LoadSafeSeed(&loaded_seed, &client_state, &fetch_time));
@@ -578,7 +578,7 @@
   const VariationsSeed seed = CreateTestSeed();
   const std::string serialized_seed = SerializeSeed(seed);
   const std::string signature = "a completely ignored signature";
-  ClientFilterableState client_state;
+  ClientFilterableState client_state({});
   client_state.locale = "en-US";
   client_state.reference_date = WrapTime(12345);
   client_state.session_consistency_country = "US";
@@ -618,7 +618,7 @@
 TEST(VariationsSeedStoreTest, StoreSafeSeed_EmptySeed) {
   const std::string serialized_seed;
   const std::string signature = "a completely ignored signature";
-  ClientFilterableState client_state;
+  ClientFilterableState client_state({});
   client_state.locale = "en-US";
   client_state.reference_date = WrapTime(54321);
   client_state.session_consistency_country = "US";
@@ -663,7 +663,7 @@
 TEST(VariationsSeedStoreTest, StoreSafeSeed_InvalidSeed) {
   const std::string serialized_seed = "a nonsense seed";
   const std::string signature = "a completely ignored signature";
-  ClientFilterableState client_state;
+  ClientFilterableState client_state({});
   client_state.locale = "en-US";
   client_state.reference_date = WrapTime(12345);
   client_state.session_consistency_country = "US";
@@ -711,7 +711,7 @@
   const std::string serialized_seed = SerializeSeed(seed);
   // A valid signature, but for a different seed.
   const std::string signature = kBase64SeedSignature;
-  ClientFilterableState client_state;
+  ClientFilterableState client_state({});
   client_state.locale = "en-US";
   client_state.reference_date = WrapTime(12345);
   client_state.session_consistency_country = "US";
@@ -762,7 +762,7 @@
   ASSERT_TRUE(
       base::Base64Decode(kUncompressedBase64SeedData, &serialized_seed));
   const std::string signature = kBase64SeedSignature;
-  ClientFilterableState client_state;
+  ClientFilterableState client_state({});
   client_state.locale = "en-US";
   client_state.reference_date = WrapTime(12345);
   client_state.session_consistency_country = "US";
@@ -807,7 +807,7 @@
   const std::string serialized_seed = SerializeSeed(seed);
   const std::string base64_seed = SerializeSeedBase64(seed);
   const std::string signature = "a completely ignored signature";
-  ClientFilterableState unused_client_state;
+  ClientFilterableState unused_client_state({});
   const base::Time fetch_time = WrapTime(12345);
 
   TestingPrefServiceSimple prefs;
@@ -865,7 +865,7 @@
   const std::string base64_new_seed = SerializeSeedBase64(new_seed);
   const std::string signature = "a completely ignored signature";
   const base::Time fetch_time = WrapTime(12345);
-  ClientFilterableState unused_client_state;
+  ClientFilterableState unused_client_state({});
 
   TestingPrefServiceSimple prefs;
   VariationsSeedStore::RegisterPrefs(prefs.registry());
diff --git a/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc b/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc
index 5e1bdff..fb11dd1 100644
--- a/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc
+++ b/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc
@@ -1537,7 +1537,7 @@
                                    /*expected_count*/ -1);
 
   text_range_provider->ExpandToEnclosingUnit(TextUnit_Line);
-  EXPECT_UIA_TEXTRANGE_EQ(text_range_provider, L"Text in iframe\n");
+  EXPECT_UIA_TEXTRANGE_EQ(text_range_provider, L"Text in iframe");
 
   text_range_provider->ExpandToEnclosingUnit(TextUnit_Document);
   EXPECT_UIA_TEXTRANGE_EQ(text_range_provider,
@@ -1703,7 +1703,7 @@
 
   ASSERT_HRESULT_SUCCEEDED(
       text_range_provider->ExpandToEnclosingUnit(TextUnit_Format));
-  EXPECT_UIA_TEXTRANGE_EQ(text_range_provider, L"plain\ntext\n");
+  EXPECT_UIA_TEXTRANGE_EQ(text_range_provider, L"plain\ntext");
 
   EXPECT_UIA_MOVE_ENDPOINT_BY_UNIT(
       text_range_provider, TextPatternRangeEndpoint_End, TextUnit_Character,
diff --git a/content/browser/appcache/appcache_storage.h b/content/browser/appcache/appcache_storage.h
index 50515fa..9d9aed4 100644
--- a/content/browser/appcache/appcache_storage.h
+++ b/content/browser/appcache/appcache_storage.h
@@ -49,36 +49,38 @@
     Delegate(const Delegate&) = delete;
     Delegate& operator=(const Delegate&) = delete;
 
-    // If retrieval fails, 'collection' will be NULL.
+    // If retrieval fails, |collection| will be null.
     virtual void OnAllInfo(AppCacheInfoCollection* collection) {}
 
-    // If a load fails the 'cache' will be NULL.
+    // If the load fails, |cache| will be null.
     virtual void OnCacheLoaded(AppCache* cache, int64_t cache_id) {}
 
-    // If a load fails the 'group' will be NULL.
+    // If the load fails, |group| will be null.
     virtual void OnGroupLoaded(
         AppCacheGroup* group, const GURL& manifest_url) {}
 
-    // If successfully stored 'success' will be true.
+    // If successfully stored, |success| will be true.
     virtual void OnGroupAndNewestCacheStored(
         AppCacheGroup* group, AppCache* newest_cache, bool success,
         bool would_exceed_quota) {}
 
-    // If the operation fails, success will be false.
+    // If the operation fails, |success| will be false.
     virtual void OnGroupMadeObsolete(AppCacheGroup* group,
                                      bool success,
                                      int response_code) {}
 
-    // If a load fails the 'response_info' will be NULL.
+    // If a load fails, |response_info| will be null.
     virtual void OnResponseInfoLoaded(AppCacheResponseInfo* response_info,
                                       int64_t response_id) {}
 
-    // If no response is found, entry.response_id() and
-    // fallback_entry.response_id() will be kAppCacheNoResponseId.
-    // If the response is the entry for an intercept or fallback
-    // namespace, the url of the namespece entry is returned.
-    // If a response is found, the cache id and manifest url of the
-    // containing cache and group are also returned.
+    // If no response is found, |entry|'s response_id() and |fallback_entry|'s
+    // response_id() will be kAppCacheNoResponseId.
+    //
+    // If the response is the entry for an intercept or fallback namespace,
+    // |namespace_entry_url| refers to the entry. Otherwise, it is empty.
+    //
+    // If a response is found, |cache_id|, |group_id|, and |manifest_url|
+    // identify the cache containing the response.
     virtual void OnMainResponseFound(const GURL& url,
                                      const AppCacheEntry& entry,
                                      const GURL& namespace_entry_url,
diff --git a/content/browser/frame_host/back_forward_cache_impl.cc b/content/browser/frame_host/back_forward_cache_impl.cc
index 67a146d..8db526d 100644
--- a/content/browser/frame_host/back_forward_cache_impl.cc
+++ b/content/browser/frame_host/back_forward_cache_impl.cc
@@ -49,6 +49,9 @@
     //
     // See: https://developers.google.com/web/updates/2018/07/page-lifecycle-api
     int rvh_routing_id = render_view_host->GetRoutingID();
+    // TODO(dcheng): Page messages should be used in conjunction with
+    // SendPageMessage(). Having it used to directly route a message to a
+    // RenderView is somewhat unusual. Figure out why this is needed.
     if (frozen) {
       render_view_host->Send(
           new PageMsg_PutPageIntoBackForwardCache(rvh_routing_id));
diff --git a/content/browser/frame_host/mixed_content_navigation_throttle_unittest.cc b/content/browser/frame_host/mixed_content_navigation_throttle_unittest.cc
index 244a4a5f..06f53c2 100644
--- a/content/browser/frame_host/mixed_content_navigation_throttle_unittest.cc
+++ b/content/browser/frame_host/mixed_content_navigation_throttle_unittest.cc
@@ -55,4 +55,4 @@
   }
 }
 
-}  // content
\ No newline at end of file
+}  // namespace content
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
index b1be2765..2973d39 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -2874,7 +2874,13 @@
                                              SiteInstance* instance_to_skip) {
   DCHECK(IPC_MESSAGE_CLASS(*msg) == PageMsgStart);
 
-  // We should always deliver page messages through the main frame.
+  // We should always deliver page messages through the main frame. This is done
+  // because at the time, we wanted to avoid routing messages to swapped-out
+  // RenderViews. The idea was that we might introduce a separate RenderPage
+  // interface.
+  //
+  // TODO(dcheng): Now that RenderView and RenderWidget are increasingly
+  // separated, it might be possible/desirable to just route to the view.
   DCHECK(!frame_tree_node_->parent());
 
   if ((IPC_MESSAGE_CLASS(*msg) != PageMsgStart) || frame_tree_node_->parent()) {
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index f26cab9..a02393b 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -27,7 +27,6 @@
 #include "base/debug/dump_without_crashing.h"
 #include "base/feature_list.h"
 #include "base/files/file.h"
-#include "base/lazy_instance.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/memory/memory_pressure_monitor.h"
@@ -326,8 +325,10 @@
 bool has_done_stun_trials = false;
 
 // the global list of all renderer processes
-base::LazyInstance<base::IDMap<RenderProcessHost*>>::Leaky g_all_hosts =
-    LAZY_INSTANCE_INITIALIZER;
+base::IDMap<RenderProcessHost*>& GetAllHosts() {
+  static base::NoDestructor<base::IDMap<RenderProcessHost*>> s_all_hosts;
+  return *s_all_hosts;
+}
 
 // Returns the global list of RenderProcessHostCreationObserver objects.
 std::vector<RenderProcessHostCreationObserver*>& GetAllCreationObservers() {
@@ -483,7 +484,7 @@
 // This class manages spare RenderProcessHosts.
 //
 // There is a singleton instance of this class which manages a single spare
-// renderer (g_spare_render_process_host_manager, below). This class
+// renderer (SpareRenderProcessHostManager::GetInstance(), below). This class
 // encapsulates the implementation of
 // RenderProcessHost::WarmupSpareRenderProcessHost()
 //
@@ -503,6 +504,11 @@
  public:
   SpareRenderProcessHostManager() {}
 
+  static SpareRenderProcessHostManager& GetInstance() {
+    static base::NoDestructor<SpareRenderProcessHostManager> s_instance;
+    return *s_instance;
+  }
+
   void WarmupSpareRenderProcessHost(BrowserContext* browser_context) {
     if (spare_render_process_host_ &&
         spare_render_process_host_->GetBrowserContext() == browser_context) {
@@ -517,7 +523,7 @@
     // got too many processes. See also ShouldTryToUseExistingProcessHost in
     // this file.
     if (RenderProcessHost::run_renderer_in_process() ||
-        g_all_hosts.Get().size() >=
+        GetAllHosts().size() >=
             RenderProcessHostImpl::GetMaxRendererProcessCount())
       return;
 
@@ -599,7 +605,7 @@
       // If the spare shouldn't be kept around, then discard it as soon as we
       // find that the current spare was mismatched.
       CleanupSpareRenderProcessHost();
-    } else if (g_all_hosts.Get().size() >=
+    } else if (GetAllHosts().size() >=
                RenderProcessHostImpl::GetMaxRendererProcessCount()) {
       // Drop the spare if we are at a process limit and the spare wasn't taken.
       // This helps avoid process reuse.
@@ -670,15 +676,12 @@
   }
 
   // This is a bare pointer, because RenderProcessHost manages the lifetime of
-  // all its instances; see g_all_hosts, above.
+  // all its instances; see GetAllHosts().
   RenderProcessHost* spare_render_process_host_ = nullptr;
 
   DISALLOW_COPY_AND_ASSIGN(SpareRenderProcessHostManager);
 };
 
-base::LazyInstance<SpareRenderProcessHostManager>::Leaky
-    g_spare_render_process_host_manager = LAZY_INSTANCE_INITIALIZER;
-
 const void* const kDefaultSubframeProcessHostHolderKey =
     &kDefaultSubframeProcessHostHolderKey;
 
@@ -1418,8 +1421,10 @@
 // static
 void RenderProcessHost::SetMaxRendererProcessCount(size_t count) {
   g_max_renderer_count_override = count;
-  if (g_all_hosts.Get().size() > count)
-    g_spare_render_process_host_manager.Get().CleanupSpareRenderProcessHost();
+  if (GetAllHosts().size() > count) {
+    SpareRenderProcessHostManager::GetInstance()
+        .CleanupSpareRenderProcessHost();
+  }
 }
 
 // static
@@ -1530,7 +1535,7 @@
 
   CHECK(!BrowserMainRunner::ExitedMainMessageLoop());
   RegisterHost(GetID(), this);
-  g_all_hosts.Get().set_check_on_null_data(true);
+  GetAllHosts().set_check_on_null_data(true);
   // Initialize |child_process_activity_time_| to a reasonable value.
   mark_child_process_activity_time();
 
@@ -1570,7 +1575,7 @@
 void RenderProcessHostImpl::ShutDownInProcessRenderer() {
   DCHECK(g_run_renderer_in_process);
 
-  switch (g_all_hosts.Pointer()->size()) {
+  switch (GetAllHosts().size()) {
     case 0:
       return;
     case 1: {
@@ -2849,19 +2854,20 @@
 // static
 void RenderProcessHostImpl::NotifySpareManagerAboutRecentlyUsedBrowserContext(
     BrowserContext* browser_context) {
-  g_spare_render_process_host_manager.Get().PrepareForFutureRequests(
+  SpareRenderProcessHostManager::GetInstance().PrepareForFutureRequests(
       browser_context);
 }
 
 // static
 RenderProcessHost*
 RenderProcessHostImpl::GetSpareRenderProcessHostForTesting() {
-  return g_spare_render_process_host_manager.Get().spare_render_process_host();
+  return SpareRenderProcessHostManager::GetInstance()
+      .spare_render_process_host();
 }
 
 // static
 void RenderProcessHostImpl::DiscardSpareRenderProcessHostForTesting() {
-  g_spare_render_process_host_manager.Get().CleanupSpareRenderProcessHost();
+  SpareRenderProcessHostManager::GetInstance().CleanupSpareRenderProcessHost();
 }
 
 // static
@@ -3688,16 +3694,16 @@
 
 // static
 void RenderProcessHostImpl::RegisterHost(int host_id, RenderProcessHost* host) {
-  g_all_hosts.Get().AddWithID(host, host_id);
+  GetAllHosts().AddWithID(host, host_id);
 }
 
 // static
 void RenderProcessHostImpl::UnregisterHost(int host_id) {
-  RenderProcessHost* host = g_all_hosts.Get().Lookup(host_id);
+  RenderProcessHost* host = GetAllHosts().Lookup(host_id);
   if (!host)
     return;
 
-  g_all_hosts.Get().Remove(host_id);
+  GetAllHosts().Remove(host_id);
 
   // Look up the map of site to process for the given browser_context,
   // in case we need to remove this process from it.  It will be registered
@@ -3857,7 +3863,7 @@
 // static
 void RenderProcessHost::WarmupSpareRenderProcessHost(
     content::BrowserContext* browser_context) {
-  g_spare_render_process_host_manager.Get().WarmupSpareRenderProcessHost(
+  SpareRenderProcessHostManager::GetInstance().WarmupSpareRenderProcessHost(
       browser_context);
 }
 
@@ -3889,13 +3895,13 @@
 // static
 RenderProcessHost::iterator RenderProcessHost::AllHostsIterator() {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  return iterator(g_all_hosts.Pointer());
+  return iterator(&GetAllHosts());
 }
 
 // static
 RenderProcessHost* RenderProcessHost::FromID(int render_process_id) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  return g_all_hosts.Get().Lookup(render_process_id);
+  return GetAllHosts().Lookup(render_process_id);
 }
 
 // static
@@ -3922,7 +3928,7 @@
   //       a renderer process for a browser context that has no existing
   //       renderers. This is OK in moderation, since the
   //       GetMaxRendererProcessCount() is conservative.
-  if (g_all_hosts.Get().size() >= GetMaxRendererProcessCount())
+  if (GetAllHosts().size() >= GetMaxRendererProcessCount())
     return true;
 
   return GetContentClient()->browser()->ShouldTryToUseExistingProcessHost(
@@ -3934,7 +3940,7 @@
     SiteInstanceImpl* site_instance) {
   // First figure out which existing renderers we can use.
   std::vector<RenderProcessHost*> suitable_renderers;
-  suitable_renderers.reserve(g_all_hosts.Get().size());
+  suitable_renderers.reserve(GetAllHosts().size());
 
   iterator iter(AllHostsIterator());
   while (!iter.IsAtEnd()) {
@@ -3945,7 +3951,7 @@
             site_instance->lock_url())) {
       // The spare is always considered before process reuse.
       DCHECK_NE(iter.GetCurrentValue(),
-                g_spare_render_process_host_manager.Get()
+                SpareRenderProcessHostManager::GetInstance()
                     .spare_render_process_host());
 
       suitable_renderers.push_back(iter.GetCurrentValue());
@@ -4096,8 +4102,7 @@
   }
 
   // See if the spare RenderProcessHost can be used.
-  SpareRenderProcessHostManager& spare_process_manager =
-      g_spare_render_process_host_manager.Get();
+  auto& spare_process_manager = SpareRenderProcessHostManager::GetInstance();
   bool spare_was_taken = false;
   if (!render_process_host) {
     render_process_host = spare_process_manager.MaybeTakeSpareRenderProcessHost(
diff --git a/content/browser/sandbox_parameters_mac.mm b/content/browser/sandbox_parameters_mac.mm
index 5eead918..e0810387 100644
--- a/content/browser/sandbox_parameters_mac.mm
+++ b/content/browser/sandbox_parameters_mac.mm
@@ -53,8 +53,8 @@
   return std::to_string(final_os_version);
 }
 
-// Retrieves the users shared cache and adds it to the profile.
-void AddDarwinUserCache(sandbox::SeatbeltExecClient* client) {
+// Retrieves the users shared darwin dirs and adds it to the profile.
+void AddDarwinDirs(sandbox::SeatbeltExecClient* client) {
   char dir_path[PATH_MAX + 1];
 
   size_t rv = confstr(_CS_DARWIN_USER_CACHE_DIR, dir_path, sizeof(dir_path));
@@ -63,6 +63,20 @@
       "DARWIN_USER_CACHE_DIR",
       service_manager::SandboxMac::GetCanonicalPath(base::FilePath(dir_path))
           .value()));
+
+  rv = confstr(_CS_DARWIN_USER_DIR, dir_path, sizeof(dir_path));
+  PCHECK(rv != 0);
+  CHECK(client->SetParameter(
+      "DARWIN_USER_DIR",
+      service_manager::SandboxMac::GetCanonicalPath(base::FilePath(dir_path))
+          .value()));
+
+  rv = confstr(_CS_DARWIN_USER_TEMP_DIR, dir_path, sizeof(dir_path));
+  PCHECK(rv != 0);
+  CHECK(client->SetParameter(
+      "DARWIN_USER_TEMP_DIR",
+      service_manager::SandboxMac::GetCanonicalPath(base::FilePath(dir_path))
+          .value()));
 }
 
 // All of the below functions populate the |client| with the parameters that the
@@ -128,7 +142,7 @@
   std::vector<base::FilePath> storage_paths =
       GetContentClient()->browser()->GetNetworkContextsParentDirectory();
 
-  AddDarwinUserCache(client);
+  AddDarwinDirs(client);
 
   CHECK(client->SetParameter("NETWORK_SERVICE_STORAGE_PATHS_COUNT",
                              base::NumberToString(storage_paths.size())));
@@ -204,7 +218,7 @@
       break;
     case service_manager::SANDBOX_TYPE_GPU:
       SetupCommonSandboxParameters(client);
-      AddDarwinUserCache(client);
+      AddDarwinDirs(client);
       break;
     case service_manager::SANDBOX_TYPE_CDM:
       SetupCDMSandboxParameters(client);
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
index e7b15abb2..bd104ed 100644
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -156,6 +156,9 @@
   if (base::FeatureList::IsEnabled(features::kWebXr))
     WebRuntimeFeatures::EnableWebXR(true);
 
+  if (base::FeatureList::IsEnabled(features::kWebXrArDOMOverlay))
+    WebRuntimeFeatures::EnableWebXRARDOMOverlay(true);
+
   if (base::FeatureList::IsEnabled(features::kWebXrArModule))
     WebRuntimeFeatures::EnableWebXRARModule(true);
 
@@ -383,11 +386,6 @@
                                                 true);
   }
 
-  if (!base::FeatureList::IsEnabled(
-          features::kPauseExecutionContextOnBackgroundFreeze)) {
-    WebRuntimeFeatures::EnablePauseExecutionContextOnBackgroundFreeze(false);
-  }
-
   WebRuntimeFeatures::EnableConsolidatedMovementXY(
       base::FeatureList::IsEnabled(features::kConsolidatedMovementXY));
 
diff --git a/content/child/webthemeengine_impl_default_browsertest.cc b/content/child/webthemeengine_impl_default_browsertest.cc
index 4fb934b..30ae37df 100644
--- a/content/child/webthemeengine_impl_default_browsertest.cc
+++ b/content/child/webthemeengine_impl_default_browsertest.cc
@@ -6,6 +6,10 @@
 #include "content/public/test/content_browser_test.h"
 #include "content/public/test/content_browser_test_utils.h"
 
+#if defined(OS_WIN)
+#include "base/win/windows_version.h"
+#endif  // defined (OS_WIN)
+
 namespace content {
 
 class WebThemeEngineImplDefaultBrowserTest : public ContentBrowserTest {
@@ -14,8 +18,7 @@
 };
 
 #if defined(OS_WIN)
-IN_PROC_BROWSER_TEST_F(WebThemeEngineImplDefaultBrowserTest,
-                       DISABLED_GetSystemColor) {
+IN_PROC_BROWSER_TEST_F(WebThemeEngineImplDefaultBrowserTest, GetSystemColor) {
   GURL url(
       "data:text/html,"
       "<!doctype html><html>"
@@ -91,17 +94,32 @@
                                   "window",
                                   "windowFrame",
                                   "windowText"};
-  std::vector<std::string> expected_colors = {
-      "rgb(255, 255, 255)", "rgb(204, 204, 204)", "rgb(255, 255, 255)",
-      "rgb(99, 99, 206)",   "rgb(240, 240, 240)", "rgb(221, 221, 221)",
-      "rgb(136, 136, 136)", "rgb(0, 0, 0)",       "rgb(0, 0, 0)",
-      "rgb(109, 109, 109)", "rgb(0, 120, 215)",   "rgb(255, 255, 255)",
-      "rgb(255, 255, 255)", "rgb(255, 255, 255)", "rgb(127, 127, 127)",
-      "rgb(251, 252, 197)", "rgb(0, 0, 0)",       "rgb(0, 102, 204)",
-      "rgb(247, 247, 247)", "rgb(0, 0, 0)",       "rgb(255, 255, 255)",
-      "rgb(102, 102, 102)", "rgb(192, 192, 192)", "rgb(221, 221, 221)",
-      "rgb(192, 192, 192)", "rgb(136, 136, 136)", "rgb(0, 102, 204)",
-      "rgb(255, 255, 255)", "rgb(204, 204, 204)", "rgb(0, 0, 0)"};
+  std::vector<std::string> expected_colors;
+  if (base::win::GetVersion() <= base::win::Version::WIN8_1) {
+    expected_colors = {
+        "rgb(255, 255, 255)", "rgb(204, 204, 204)", "rgb(255, 255, 255)",
+        "rgb(99, 99, 206)",   "rgb(240, 240, 240)", "rgb(221, 221, 221)",
+        "rgb(136, 136, 136)", "rgb(0, 0, 0)",       "rgb(0, 0, 0)",
+        "rgb(109, 109, 109)", "rgb(51, 153, 255)",  "rgb(255, 255, 255)",
+        "rgb(255, 255, 255)", "rgb(255, 255, 255)", "rgb(127, 127, 127)",
+        "rgb(251, 252, 197)", "rgb(0, 0, 0)",       "rgb(0, 102, 204)",
+        "rgb(247, 247, 247)", "rgb(0, 0, 0)",       "rgb(255, 255, 255)",
+        "rgb(102, 102, 102)", "rgb(192, 192, 192)", "rgb(221, 221, 221)",
+        "rgb(192, 192, 192)", "rgb(136, 136, 136)", "rgb(0, 102, 204)",
+        "rgb(255, 255, 255)", "rgb(204, 204, 204)", "rgb(0, 0, 0)"};
+  } else {
+    expected_colors = {
+        "rgb(255, 255, 255)", "rgb(204, 204, 204)", "rgb(255, 255, 255)",
+        "rgb(99, 99, 206)",   "rgb(240, 240, 240)", "rgb(221, 221, 221)",
+        "rgb(136, 136, 136)", "rgb(0, 0, 0)",       "rgb(0, 0, 0)",
+        "rgb(109, 109, 109)", "rgb(0, 120, 215)",   "rgb(255, 255, 255)",
+        "rgb(255, 255, 255)", "rgb(255, 255, 255)", "rgb(127, 127, 127)",
+        "rgb(251, 252, 197)", "rgb(0, 0, 0)",       "rgb(0, 102, 204)",
+        "rgb(247, 247, 247)", "rgb(0, 0, 0)",       "rgb(255, 255, 255)",
+        "rgb(102, 102, 102)", "rgb(192, 192, 192)", "rgb(221, 221, 221)",
+        "rgb(192, 192, 192)", "rgb(136, 136, 136)", "rgb(0, 102, 204)",
+        "rgb(255, 255, 255)", "rgb(204, 204, 204)", "rgb(0, 0, 0)"};
+  }
 
   ASSERT_EQ(ids.size(), expected_colors.size());
 
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
index 1efa61ee1..5ca2dba5 100644
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -344,11 +344,6 @@
 const base::Feature kPassiveEventListenersDueToFling{
     "PassiveEventListenersDueToFling", base::FEATURE_ENABLED_BY_DEFAULT};
 
-// Whether ExecutionContext is paused (and workers) on background freeze.
-const base::Feature kPauseExecutionContextOnBackgroundFreeze = {
-    "PauseExecutionContextOnBackgroundFreeze",
-    base::FEATURE_ENABLED_BY_DEFAULT};
-
 // Whether web apps can run periodic tasks upon network connectivity.
 const base::Feature kPeriodicBackgroundSync{"PeriodicBackgroundSync",
                                             base::FEATURE_DISABLED_BY_DEFAULT};
@@ -711,6 +706,10 @@
 const base::Feature kWebXrPlaneDetection{"WebXRPlaneDetection",
                                          base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Enables access to planes detected in the user's environment.
+const base::Feature kWebXrArDOMOverlay{"WebXRARDOMOverlay",
+                                       base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Start streaming scripts on script preload.
 const base::Feature kScriptStreamingOnPreload{"ScriptStreamingOnPreload",
                                               base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
index 5e321d5..8874f58 100644
--- a/content/public/common/content_features.h
+++ b/content/public/common/content_features.h
@@ -81,8 +81,6 @@
 CONTENT_EXPORT extern const base::Feature kPassiveDocumentEventListeners;
 CONTENT_EXPORT extern const base::Feature kPassiveDocumentWheelEventListeners;
 CONTENT_EXPORT extern const base::Feature kPassiveEventListenersDueToFling;
-CONTENT_EXPORT extern const base::Feature
-    kPauseExecutionContextOnBackgroundFreeze;
 CONTENT_EXPORT extern const base::Feature kPeriodicBackgroundSync;
 CONTENT_EXPORT extern const base::Feature kPerNavigationMojoInterface;
 CONTENT_EXPORT extern const base::Feature kPepper3DImageChromium;
@@ -149,6 +147,7 @@
 CONTENT_EXPORT extern const base::Feature kWebXr;
 CONTENT_EXPORT extern const base::Feature kWebXrArModule;
 CONTENT_EXPORT extern const base::Feature kWebXrAnchors;
+CONTENT_EXPORT extern const base::Feature kWebXrArDOMOverlay;
 CONTENT_EXPORT extern const base::Feature kWebXrHitTest;
 CONTENT_EXPORT extern const base::Feature kWebXrPlaneDetection;
 CONTENT_EXPORT extern const base::Feature kScriptStreamingOnPreload;
diff --git a/content/public/test/android/BUILD.gn b/content/public/test/android/BUILD.gn
index 4cd17c4..d2a6025e 100644
--- a/content/public/test/android/BUILD.gn
+++ b/content/public/test/android/BUILD.gn
@@ -2,6 +2,7 @@
 import("//build/config/android/rules.gni")
 
 generate_jni("test_support_content_jni_headers") {
+  testonly = true
   sources = [
     "javatests/src/org/chromium/content_public/browser/test/NestedSystemMessageHandler.java",
   ]
diff --git a/content/renderer/input/frame_input_handler_impl.cc b/content/renderer/input/frame_input_handler_impl.cc
index 7a9098c..2b3feaa 100644
--- a/content/renderer/input/frame_input_handler_impl.cc
+++ b/content/renderer/input/frame_input_handler_impl.cc
@@ -286,7 +286,7 @@
 
   if (!render_frame_)
     return;
-  RenderWidget* window_widget = render_frame_->render_view()->GetWidget();
+  RenderWidget* window_widget = render_frame_->GetLocalRootRenderWidget();
   HandlingState handling_state(render_frame_, UpdateState::kIsSelectingRange);
   render_frame_->GetWebFrame()->SelectRange(
       window_widget->ConvertWindowPointToViewport(base),
@@ -383,7 +383,7 @@
     return;
   HandlingState handling_state(render_frame_, UpdateState::kIsSelectingRange);
   render_frame_->GetWebFrame()->MoveRangeSelectionExtent(
-      render_frame_->render_view()->GetWidget()->ConvertWindowPointToViewport(
+      render_frame_->GetLocalRootRenderWidget()->ConvertWindowPointToViewport(
           extent));
 }
 
@@ -418,7 +418,7 @@
     return;
 
   render_frame_->GetWebFrame()->MoveCaretSelection(
-      render_frame_->render_view()->GetWidget()->ConvertWindowPointToViewport(
+      render_frame_->GetLocalRootRenderWidget()->ConvertWindowPointToViewport(
           point));
 }
 
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index f98f1689..63be2c1 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -2239,7 +2239,9 @@
 #endif
 
 bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) {
-  // Forward Page IPCs to the RenderView.
+  // Page IPCs are routed via the main frame (both local and remote) and then
+  // forwarded to the RenderView. See comment in
+  // RenderFrameHostManager::SendPageMessage() for more information.
   if ((IPC_MESSAGE_CLASS(msg) == PageMsgStart)) {
     if (render_view())
       return render_view()->OnMessageReceived(msg);
@@ -4231,11 +4233,17 @@
   // popup. So from the user perspective, only the first one will show, and
   // will have to close the first one before another one can be shown.
   if (external_popup_menu_)
-    return NULL;
-  external_popup_menu_.reset(
-      new ExternalPopupMenu(this, popup_menu_info, popup_menu_client));
-  render_view_->GetWidget()->SetExternalPopupOriginAdjustmentsForEmulation(
-      external_popup_menu_.get());
+    return nullptr;
+  external_popup_menu_ = std::make_unique<ExternalPopupMenu>(
+      this, popup_menu_info, popup_menu_client);
+
+  // Emulation has never worked appropriately for subframes. Don't bother
+  // applying them if this is not a main frame.
+  if (IsMainFrame() &&
+      render_view_->page_properties()->ScreenMetricsEmulator()) {
+    external_popup_menu_->SetOriginScaleForEmulation(
+        render_view_->page_properties()->ScreenMetricsEmulator()->scale());
+  }
   return external_popup_menu_.get();
 #else
   return nullptr;
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index a4892fc..3368d7d 100644
--- a/content/renderer/render_frame_proxy.cc
+++ b/content/renderer/render_frame_proxy.cc
@@ -375,7 +375,9 @@
 }
 
 bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) {
-  // Forward Page IPCs to the RenderView.
+  // Page IPCs are routed via the main frame (both local and remote) and then
+  // forwarded to the RenderView. See comment in
+  // RenderFrameHostManager::SendPageMessage() for more information.
   if ((IPC_MESSAGE_CLASS(msg) == PageMsgStart)) {
     if (render_view())
       return render_view()->OnMessageReceived(msg);
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index e6d5b700d..c6ad6ff 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1823,11 +1823,17 @@
 
 void RenderViewImpl::SetEditCommandForNextKeyEvent(const std::string& name,
                                                    const std::string& value) {
-  render_widget_->SetEditCommandForNextKeyEvent(name, value);
+  // This is test-only code. Only propagate the command if there is a main
+  // render frame.
+  if (main_render_frame_)
+    render_widget_->SetEditCommandForNextKeyEvent(name, value);
 }
 
 void RenderViewImpl::ClearEditCommands() {
-  render_widget_->ClearEditCommands();
+  // This is test-only code. Only propagate the command if there is a main
+  // render frame.
+  if (main_render_frame_)
+    render_widget_->ClearEditCommands();
 }
 
 const std::string& RenderViewImpl::GetAcceptLanguages() {
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 669d6a0b..a61ad9e6b 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -590,15 +590,6 @@
   RenderThread::Get()->AddRoute(routing_id_, this);
 }
 
-#if BUILDFLAG(USE_EXTERNAL_POPUP_MENU)
-void RenderWidget::SetExternalPopupOriginAdjustmentsForEmulation(
-    ExternalPopupMenu* popup) {
-  if (page_properties_->ScreenMetricsEmulator())
-    popup->SetOriginScaleForEmulation(
-        page_properties_->ScreenMetricsEmulator()->scale());
-}
-#endif
-
 bool RenderWidget::OnMessageReceived(const IPC::Message& message) {
   // TODO(https://crbug.com/1000502): Don't process IPC messages on undead
   // RenderWidgets. We would like to eventually remove them altogether, so they
diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h
index caa53d5..42c6dd9 100644
--- a/content/renderer/render_widget.h
+++ b/content/renderer/render_widget.h
@@ -112,7 +112,6 @@
 namespace content {
 class BrowserPlugin;
 class CompositorDependencies;
-class ExternalPopupMenu;
 class FrameSwapMessageQueue;
 class ImeEventGuard;
 class LayerTreeView;
@@ -739,10 +738,6 @@
   // is always in physical pixels.
   gfx::Rect CompositorViewportRect() const;
 
-#if BUILDFLAG(USE_EXTERNAL_POPUP_MENU)
-  void SetExternalPopupOriginAdjustmentsForEmulation(ExternalPopupMenu* popup);
-#endif
-
   // RenderWidget IPC message handlers.
   void OnHandleInputEvent(
       const blink::WebInputEvent* event,
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index c9e4a7c..fef7219 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -2449,6 +2449,7 @@
   ]
 
   generate_jni("content_unittests_jni_headers") {
+    testonly = true
     sources = content_java_sources_needing_jni
   }
 
diff --git a/content/test/web_test_support.cc b/content/test/web_test_support.cc
index 46891a4..2b6187c2 100644
--- a/content/test/web_test_support.cc
+++ b/content/test/web_test_support.cc
@@ -206,7 +206,9 @@
 }
 
 void ForceResizeRenderView(RenderView* render_view, const WebSize& new_size) {
-  auto* render_view_impl = static_cast<RenderViewImpl*>(render_view);
+  RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view);
+  if (!render_view_impl->GetMainRenderFrame())
+    return;
   RenderWidget* render_widget = render_view_impl->GetWidget();
   gfx::Rect window_rect(render_widget->WindowRect().x,
                         render_widget->WindowRect().y, new_size.width,
@@ -215,14 +217,17 @@
 }
 
 void SetDeviceScaleFactor(RenderView* render_view, float factor) {
-  RenderWidget* render_widget =
-      static_cast<RenderViewImpl*>(render_view)->GetWidget();
-  render_widget->SetDeviceScaleFactorForTesting(factor);
+  RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view);
+  if (!render_view_impl->GetMainRenderFrame())
+    return;
+  render_view_impl->GetWidget()->SetDeviceScaleFactorForTesting(factor);
 }
 
 float GetWindowToViewportScale(RenderView* render_view) {
-  return GetWindowToViewportScale(
-      static_cast<RenderViewImpl*>(render_view)->GetWidget());
+  RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view);
+  blink::WebFloatRect rect(0, 0, 1.0f, 0.0);
+  render_view_impl->page_properties()->ConvertWindowToViewport(&rect);
+  return rect.width;
 }
 
 std::unique_ptr<blink::WebInputEvent> TransformScreenToWidgetCoordinates(
@@ -256,9 +261,10 @@
 
 void SetDeviceColorSpace(RenderView* render_view,
                          const gfx::ColorSpace& color_space) {
-  RenderWidget* render_widget =
-      static_cast<RenderViewImpl*>(render_view)->GetWidget();
-  render_widget->SetDeviceColorSpaceForTesting(color_space);
+  RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view);
+  if (!render_view_impl->GetMainRenderFrame())
+    return;
+  render_view_impl->GetWidget()->SetDeviceColorSpaceForTesting(color_space);
 }
 
 void SetTestBluetoothScanDuration(BluetoothTestScanDurationSetting setting) {
@@ -277,23 +283,26 @@
 }
 
 void UseSynchronousResizeMode(RenderView* render_view, bool enable) {
-  RenderWidget* render_widget =
-      static_cast<RenderViewImpl*>(render_view)->GetWidget();
-  render_widget->UseSynchronousResizeModeForTesting(enable);
+  RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view);
+  if (!render_view_impl->GetMainRenderFrame())
+    return;
+  render_view_impl->GetWidget()->UseSynchronousResizeModeForTesting(enable);
 }
 
 void EnableAutoResizeMode(RenderView* render_view,
                           const WebSize& min_size,
                           const WebSize& max_size) {
-  RenderWidget* render_widget =
-      static_cast<RenderViewImpl*>(render_view)->GetWidget();
-  render_widget->EnableAutoResizeForTesting(min_size, max_size);
+  RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view);
+  if (!render_view_impl->GetMainRenderFrame())
+    return;
+  render_view_impl->GetWidget()->EnableAutoResizeForTesting(min_size, max_size);
 }
 
 void DisableAutoResizeMode(RenderView* render_view, const WebSize& new_size) {
-  RenderWidget* render_widget =
-      static_cast<RenderViewImpl*>(render_view)->GetWidget();
-  render_widget->DisableAutoResizeForTesting(new_size);
+  RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view);
+  if (!render_view_impl->GetMainRenderFrame())
+    return;
+  render_view_impl->GetWidget()->DisableAutoResizeForTesting(new_size);
 }
 
 void SchedulerRunIdleTasks(base::OnceClosure callback) {
diff --git a/device/BUILD.gn b/device/BUILD.gn
index ea1d749e5..3ddcd149 100644
--- a/device/BUILD.gn
+++ b/device/BUILD.gn
@@ -366,6 +366,7 @@
   ]
 
   generate_jni("bluetooth_test_jni_headers") {
+    testonly = true
     sources = bluetooth_java_sources_needing_jni
   }
 
diff --git a/device/vr/public/mojom/isolated_xr_service.mojom b/device/vr/public/mojom/isolated_xr_service.mojom
index 7754ce5..45cf27b 100644
--- a/device/vr/public/mojom/isolated_xr_service.mojom
+++ b/device/vr/public/mojom/isolated_xr_service.mojom
@@ -46,6 +46,10 @@
   bool immersive;
   bool environment_integration;
 
+  // The enabled features combine the active required and optional features as
+  // resolved by BrowserXRRuntime and VRServiceImpl.
+  array<XRSessionFeature> enabled_features;
+
   // The following options are used for permission requests and showing module
   // install UI.
   // TODO(crbug.com/854655): Remove these fields, and do permission checks, show
diff --git a/device/vr/public/mojom/vr_service.mojom b/device/vr/public/mojom/vr_service.mojom
index 63f3fdc..361143f 100644
--- a/device/vr/public/mojom/vr_service.mojom
+++ b/device/vr/public/mojom/vr_service.mojom
@@ -52,6 +52,9 @@
   REF_SPACE_LOCAL_FLOOR = 3,
   REF_SPACE_BOUNDED_FLOOR = 4,
   REF_SPACE_UNBOUNDED = 5,
+
+  // Experimental or not-yet-standardized feature names.
+  DOM_OVERLAY_FOR_HANDHELD_AR = 6,
 };
 
 struct XRSessionOptions {
diff --git a/extensions/common/api/automation.idl b/extensions/common/api/automation.idl
index 0099eff..4f07a25d 100644
--- a/extensions/common/api/automation.idl
+++ b/extensions/common/api/automation.idl
@@ -822,7 +822,7 @@
     long? tableCellColumnIndex;
 
     // The ARIA column index as specified by the page author.
-    long? ariaCellColumnIndex;
+    long? tableCellAriaColumnIndex;
 
     // The number of columns that this cell spans (default is 1).
     long? tableCellColumnSpan;
@@ -832,7 +832,7 @@
     long? tableCellRowIndex;
 
     // The ARIA row index as specified by the page author.
-    long? ariaCellRowIndex;
+    long? tableCellAriaRowIndex;
 
     // The number of rows that this cell spans (default is 1).
     long? tableCellRowSpan;
diff --git a/extensions/renderer/api/automation/automation_internal_custom_bindings.cc b/extensions/renderer/api/automation/automation_internal_custom_bindings.cc
index 90dc3ef3..ad6e32a 100644
--- a/extensions/renderer/api/automation/automation_internal_custom_bindings.cc
+++ b/extensions/renderer/api/automation/automation_internal_custom_bindings.cc
@@ -1394,6 +1394,20 @@
         if (node->GetTableCellRowIndex())
           result.Set(*node->GetTableCellRowIndex());
       });
+  RouteNodeIDFunction(
+      "GetTableCellAriaColumnIndex",
+      [](v8::Isolate* isolate, v8::ReturnValue<v8::Value> result,
+         AutomationAXTreeWrapper* tree_wrapper, ui::AXNode* node) {
+        if (node->GetTableCellAriaColIndex())
+          result.Set(*node->GetTableCellAriaColIndex());
+      });
+  RouteNodeIDFunction(
+      "GetTableCellAriaRowIndex",
+      [](v8::Isolate* isolate, v8::ReturnValue<v8::Value> result,
+         AutomationAXTreeWrapper* tree_wrapper, ui::AXNode* node) {
+        if (node->GetTableCellAriaRowIndex())
+          result.Set(*node->GetTableCellAriaRowIndex());
+      });
 }
 
 void AutomationInternalCustomBindings::Invalidate() {
diff --git a/extensions/renderer/resources/automation/automation_node.js b/extensions/renderer/resources/automation/automation_node.js
index 61c4551..a2310bd7 100644
--- a/extensions/renderer/resources/automation/automation_node.js
+++ b/extensions/renderer/resources/automation/automation_node.js
@@ -450,6 +450,20 @@
 var GetTableCellRowIndex = natives.GetTableCellRowIndex;
 
 /**
+ * @param {string} axTreeID The id of the accessibility tree.
+ * @param {number} nodeID The id of a node.
+ * @return {number} Column index for this cell.
+ */
+var GetTableCellAriaColumnIndex = natives.GetTableCellAriaColumnIndex;
+
+/**
+ * @param {string} axTreeID The id of the accessibility tree.
+ * @param {number} nodeID The id of a node.
+ * @return {number} Row index for this cell.
+ */
+var GetTableCellAriaRowIndex = natives.GetTableCellAriaRowIndex;
+
+/**
  * @param {string} axTreeId The id of the accessibility tree.
  * @param {number} nodeID The id of a node.
  * @return {string} Detected language for this node.
@@ -721,6 +735,15 @@
     return GetTableCellRowIndex(this.treeID, this.id);
   },
 
+
+  get tableCellAriaColumnIndex() {
+    return GetTableCellAriaColumnIndex(this.treeID, this.id);
+  },
+
+  get tableCellAriaRowIndex() {
+    return GetTableCellAriaRowIndex(this.treeID, this.id);
+  },
+
   get nonInlineTextWordStarts() {
     return GetWordStartOffsets(this.treeID, this.id);
   },
@@ -1162,9 +1185,7 @@
     'scrollYMax',
     'scrollYMin',
     'setSize',
-    'ariaCellColumnIndex',
     'tableCellColumnSpan',
-    'ariaCellRowIndex',
     'tableCellRowSpan',
     'tableColumnCount',
     'ariaColumnCount',
@@ -1739,6 +1760,8 @@
         'tableCellRowHeaders',
         'tableCellColumnIndex',
         'tableCellRowIndex',
+        'tableCellAriaRowIndex',
+        'tableCellAriaColumnIndex',
         'nonInlineTextWordStarts',
         'nonInlineTextWordEnds',
       ]),
diff --git a/fuchsia/base/BUILD.gn b/fuchsia/base/BUILD.gn
index ccb22a144..686741d 100644
--- a/fuchsia/base/BUILD.gn
+++ b/fuchsia/base/BUILD.gn
@@ -5,7 +5,7 @@
 assert(is_fuchsia)
 
 import("//build/config/fuchsia/fidl_library.gni")
-import("//build/config/fuchsia/rules.gni")
+import("//build/config/fuchsia/generate_runner_scripts.gni")
 import("//testing/test.gni")
 
 # Integration helpers for commonly used fuchsia.* APIs.
diff --git a/fuchsia/engine/BUILD.gn b/fuchsia/engine/BUILD.gn
index 5edf7431..e2f1395b 100644
--- a/fuchsia/engine/BUILD.gn
+++ b/fuchsia/engine/BUILD.gn
@@ -4,7 +4,7 @@
 
 assert(is_fuchsia)
 
-import("//build/config/fuchsia/rules.gni")
+import("//build/config/fuchsia/generate_runner_scripts.gni")
 import("//build/config/fuchsia/symbol_archive.gni")
 import("//mojo/public/tools/bindings/mojom.gni")
 import("//testing/test.gni")
diff --git a/fuchsia/engine/renderer/web_engine_content_renderer_client.cc b/fuchsia/engine/renderer/web_engine_content_renderer_client.cc
index 17c53ae9..141f41b 100644
--- a/fuchsia/engine/renderer/web_engine_content_renderer_client.cc
+++ b/fuchsia/engine/renderer/web_engine_content_renderer_client.cc
@@ -104,6 +104,11 @@
       supported_video_codecs |= media::EME_CODEC_AVC1;
     }
 
+    media::SupportedCodecs supported_audio_codecs = media::EME_CODEC_AUDIO_ALL;
+
+    media::SupportedCodecs supported_codecs =
+        supported_video_codecs | supported_audio_codecs;
+
     base::flat_set<media::EncryptionMode> encryption_schemes{
         media::EncryptionMode::kCenc, media::EncryptionMode::kCbcs};
 
@@ -111,10 +116,10 @@
     // Chromium. Hardware secured decoders are only available for supported
     // video codecs.
     key_systems->emplace_back(new cdm::WidevineKeySystemProperties(
-        media::EME_CODEC_AUDIO_ALL | supported_video_codecs,  // codecs
-        encryption_schemes,      // encryption schemes
-        supported_video_codecs,  // hw secure codecs
-        encryption_schemes,      // hw secure encryption schemes
+        supported_codecs,    // codecs
+        encryption_schemes,  // encryption schemes
+        supported_codecs,    // hw secure codecs
+        encryption_schemes,  // hw secure encryption schemes
         cdm::WidevineKeySystemProperties::Robustness::
             HW_SECURE_CRYPTO,  // max audio robustness
         cdm::WidevineKeySystemProperties::Robustness::
diff --git a/fuchsia/http/BUILD.gn b/fuchsia/http/BUILD.gn
index 27ec910..60087cc 100644
--- a/fuchsia/http/BUILD.gn
+++ b/fuchsia/http/BUILD.gn
@@ -5,7 +5,7 @@
 assert(is_fuchsia)
 
 import("//build/config/fuchsia/fidl_library.gni")
-import("//build/config/fuchsia/rules.gni")
+import("//build/config/fuchsia/generate_runner_scripts.gni")
 import("//build/config/fuchsia/symbol_archive.gni")
 import("//build/util/process_version.gni")
 import("//testing/test.gni")
diff --git a/fuchsia/runners/BUILD.gn b/fuchsia/runners/BUILD.gn
index 32a63fa..38c4cc9 100644
--- a/fuchsia/runners/BUILD.gn
+++ b/fuchsia/runners/BUILD.gn
@@ -5,7 +5,7 @@
 assert(is_fuchsia)
 
 import("//build/buildflag_header.gni")
-import("//build/config/fuchsia/rules.gni")
+import("//build/config/fuchsia/generate_runner_scripts.gni")
 import("//build/config/fuchsia/symbol_archive.gni")
 import("//testing/test.gni")
 
diff --git a/gpu/command_buffer/service/external_vk_image_backing.cc b/gpu/command_buffer/service/external_vk_image_backing.cc
index 054b174..cc0af9d 100644
--- a/gpu/command_buffer/service/external_vk_image_backing.cc
+++ b/gpu/command_buffer/service/external_vk_image_backing.cc
@@ -9,6 +9,7 @@
 
 #include "base/memory/unsafe_shared_memory_region.h"
 #include "base/posix/eintr_wrapper.h"
+#include "base/stl_util.h"
 #include "base/system/sys_info.h"
 #include "build/build_config.h"
 #include "components/viz/common/resources/resource_sizes.h"
@@ -41,6 +42,35 @@
 
 namespace {
 
+static const struct {
+  GLenum gl_format;
+  GLenum gl_type;
+  GLuint bytes_per_pixel;
+} kFormatTable[] = {
+    {GL_RGBA, GL_UNSIGNED_BYTE, 4},                // RGBA_8888
+    {GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 2},       // RGBA_4444
+    {GL_BGRA, GL_UNSIGNED_BYTE, 4},                // BGRA_8888
+    {GL_RED, GL_UNSIGNED_BYTE, 1},                 // ALPHA_8
+    {GL_RED, GL_UNSIGNED_BYTE, 1},                 // LUMINANCE_8
+    {GL_RGB, GL_UNSIGNED_SHORT_5_6_5, 2},          // RGB_565
+    {GL_BGR, GL_UNSIGNED_SHORT_5_6_5, 2},          // BGR_565
+    {GL_ZERO, GL_ZERO, 0},                         // ETC1
+    {GL_RED, GL_UNSIGNED_BYTE, 1},                 // RED_8
+    {GL_RG, GL_UNSIGNED_BYTE, 2},                  // RG_88
+    {GL_RED, GL_HALF_FLOAT_OES, 2},                // LUMINANCE_F16
+    {GL_RGBA, GL_HALF_FLOAT_OES, 8},               // RGBA_F16
+    {GL_RED, GL_UNSIGNED_SHORT, 2},                // R16_EXT
+    {GL_RGBA, GL_UNSIGNED_BYTE, 4},                // RGBX_8888
+    {GL_BGRA, GL_UNSIGNED_BYTE, 4},                // BGRX_8888
+    {GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, 4},  // RGBX_1010102
+    {GL_BGRA, GL_UNSIGNED_INT_2_10_10_10_REV, 4},  // BGRX_1010102
+    {GL_ZERO, GL_ZERO, 0},                         // YVU_420
+    {GL_ZERO, GL_ZERO, 0},                         // YUV_420_BIPLANAR
+    {GL_ZERO, GL_ZERO, 0},                         // P010
+};
+static_assert(base::size(kFormatTable) == (viz::RESOURCE_FORMAT_MAX + 1),
+              "kFormatTable does not handle all cases.");
+
 GrVkImageInfo CreateGrVkImageInfo(
     VkImage image,
     VkFormat vk_format,
@@ -690,13 +720,17 @@
       return;
     }
     if ((latest_content_ & kInGLTexture) && use_separate_gl_texture()) {
-      CopyPixelsFromGLTexture();
+      CopyPixelsFromGLTextureToVkImage();
       latest_content_ |= kInVkImage;
       return;
     }
   } else if (content_flags == kInGLTexture) {
-    // TODO(penghuang): support updating content in gl texture.
-    NOTIMPLEMENTED_LOG_ONCE();
+    DCHECK(use_separate_gl_texture());
+    if (latest_content_ & kInSharedMemory) {
+      CopyPixelsFromShmToGLTexture();
+    } else if (latest_content_ & kInVkImage) {
+      NOTIMPLEMENTED_LOG_ONCE();
+    }
   } else if (content_flags == kInSharedMemory) {
     // TODO(penghuang): read pixels back from VkImage to shared memory GMB, if
     // this feature is needed.
@@ -843,57 +877,19 @@
   return true;
 }
 
-void ExternalVkImageBacking::CopyPixelsFromGLTexture() {
+void ExternalVkImageBacking::CopyPixelsFromGLTextureToVkImage() {
   DCHECK(use_separate_gl_texture());
   DCHECK(texture_);
 
-  GLenum gl_format = GL_NONE;
-  GLenum gl_type = GL_NONE;
-  size_t bytes_per_pixel = 0;
-  switch (ToVkFormat(format())) {
-    case VK_FORMAT_R8G8B8A8_UNORM:
-      gl_format = GL_RGBA;
-      gl_type = GL_UNSIGNED_BYTE;
-      bytes_per_pixel = 4;
-      break;
-    case VK_FORMAT_B8G8R8A8_UNORM:
-      gl_format = GL_BGRA;
-      gl_type = GL_UNSIGNED_BYTE;
-      bytes_per_pixel = 4;
-      break;
-    case VK_FORMAT_R8_UNORM:
-      gl_format = GL_RED;
-      gl_type = GL_UNSIGNED_BYTE;
-      bytes_per_pixel = 1;
-      break;
-    case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
-      gl_format = GL_RGBA;
-      gl_type = GL_UNSIGNED_SHORT_4_4_4_4;
-      bytes_per_pixel = 2;
-      break;
-    case VK_FORMAT_R5G6B5_UNORM_PACK16:
-      gl_format = GL_RGB;
-      gl_type = GL_UNSIGNED_SHORT_5_6_5;
-      bytes_per_pixel = 2;
-      break;
-    case VK_FORMAT_R16_UNORM:
-      gl_format = GL_RED;
-      gl_type = GL_UNSIGNED_SHORT;
-      bytes_per_pixel = 2;
-      break;
-    case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
-      gl_format = GL_RGBA;
-      gl_type = GL_UNSIGNED_INT_2_10_10_10_REV;
-      bytes_per_pixel = 4;
-      break;
-    case VK_FORMAT_R16G16B16A16_SFLOAT:
-      gl_format = GL_RGBA;
-      gl_type = GL_HALF_FLOAT;
-      bytes_per_pixel = 8;
-      break;
-    default:
-      NOTREACHED() << "Not supported resource format=" << format();
-      return;
+  DCHECK_GE(format(), 0);
+  DCHECK_LE(format(), viz::RESOURCE_FORMAT_MAX);
+  auto gl_format = kFormatTable[format()].gl_format;
+  auto gl_type = kFormatTable[format()].gl_type;
+  auto bytes_per_pixel = kFormatTable[format()].bytes_per_pixel;
+
+  if (gl_format == GL_ZERO) {
+    NOTREACHED() << "Not supported resource format=" << format();
+    return;
   }
 
   // Make sure GrContext is not using GL. So we don't need reset GrContext
@@ -941,6 +937,50 @@
   api->glDeleteFramebuffersEXTFn(1, &framebuffer);
 }
 
+void ExternalVkImageBacking::CopyPixelsFromShmToGLTexture() {
+  DCHECK(use_separate_gl_texture());
+  DCHECK(texture_);
+
+  DCHECK_GE(format(), 0);
+  DCHECK_LE(format(), viz::RESOURCE_FORMAT_MAX);
+  auto gl_format = kFormatTable[format()].gl_format;
+  auto gl_type = kFormatTable[format()].gl_type;
+  auto bytes_per_pixel = kFormatTable[format()].bytes_per_pixel;
+
+  if (gl_format == GL_ZERO) {
+    NOTREACHED() << "Not supported resource format=" << format();
+    return;
+  }
+
+  // Make sure GrContext is not using GL. So we don't need reset GrContext
+  DCHECK(!context_state_->GrContextIsGL());
+
+  // Make sure a gl context is current, since textures are shared between all gl
+  // contexts, we don't care which gl context is current.
+  if (!gl::GLContext::GetCurrent() &&
+      !context_state_->MakeCurrent(nullptr, true /* needs_gl */))
+    return;
+
+  gl::GLApi* api = gl::g_current_gl_context;
+  GLint old_texture;
+  api->glGetIntegervFn(GL_TEXTURE_BINDING_2D, &old_texture);
+  api->glBindTextureFn(GL_TEXTURE_2D, texture_->service_id());
+
+  base::CheckedNumeric<size_t> checked_size = bytes_per_pixel;
+  checked_size *= size().width();
+  checked_size *= size().height();
+  DCHECK(checked_size.IsValid());
+
+  auto pixel_data =
+      shared_memory_mapping_.GetMemoryAsSpan<const uint8_t>().subspan(
+          memory_offset_);
+  api->glTexSubImage2DFn(GL_TEXTURE_2D, 0, 0, 0, size().width(),
+                         size().height(), gl_format, gl_type,
+                         pixel_data.data());
+  DCHECK_EQ(api->glGetErrorFn(), static_cast<GLenum>(GL_NO_ERROR));
+  api->glBindTextureFn(GL_TEXTURE_2D, old_texture);
+}
+
 bool ExternalVkImageBacking::BeginAccessInternal(
     bool readonly,
     std::vector<SemaphoreHandle>* semaphore_handles) {
diff --git a/gpu/command_buffer/service/external_vk_image_backing.h b/gpu/command_buffer/service/external_vk_image_backing.h
index 7e89c89..fb5d8590 100644
--- a/gpu/command_buffer/service/external_vk_image_backing.h
+++ b/gpu/command_buffer/service/external_vk_image_backing.h
@@ -146,7 +146,8 @@
   bool WritePixels(size_t data_size,
                    size_t stride,
                    FillBufferCallback callback);
-  void CopyPixelsFromGLTexture();
+  void CopyPixelsFromGLTextureToVkImage();
+  void CopyPixelsFromShmToGLTexture();
 
   SharedContextState* const context_state_;
   GrBackendTexture backend_texture_;
diff --git a/gpu/command_buffer/service/shared_image_factory.cc b/gpu/command_buffer/service/shared_image_factory.cc
index 3a29bec2..4e5ec471 100644
--- a/gpu/command_buffer/service/shared_image_factory.cc
+++ b/gpu/command_buffer/service/shared_image_factory.cc
@@ -105,7 +105,10 @@
           workarounds, gpu_feature_info, use_gl);
 #else
   // Others
-  DCHECK(!using_vulkan_);
+  if (using_vulkan_)
+    LOG(ERROR) << "ERROR: using_vulkan_ = true and interop_backing_factory_ is "
+                  "not set";
+
 #endif
   if (enable_wrapped_sk_image && context_state) {
     wrapped_sk_image_factory_ =
diff --git a/ios/build/bots/chromium.clang/ToTiOS.json b/ios/build/bots/chromium.clang/ToTiOS.json
index c26b2f37..d18da56 100644
--- a/ios/build/bots/chromium.clang/ToTiOS.json
+++ b/ios/build/bots/chromium.clang/ToTiOS.json
@@ -22,119 +22,119 @@
     {
       "app": "base_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "boringssl_crypto_tests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "boringssl_ssl_tests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "components_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "crypto_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "gfx_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "google_apis_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "ios_chrome_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "ios_net_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "ios_web_inttests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "ios_web_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "ios_web_view_inttests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "net_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "skia_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "sql_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "ui_base_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     },
     {
       "app": "url_unittests",
       "device type": "iPhone 6s",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "os": "12.2"
     }
diff --git a/ios/build/bots/chromium.fyi/ios-simulator-cronet.json b/ios/build/bots/chromium.fyi/ios-simulator-cronet.json
index cdca8e66..ecb0680 100644
--- a/ios/build/bots/chromium.fyi/ios-simulator-cronet.json
+++ b/ios/build/bots/chromium.fyi/ios-simulator-cronet.json
@@ -27,14 +27,14 @@
       "app": "cronet_test",
       "device type": "iPhone X",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome"
     },
     {
       "app": "cronet_test",
       "device type": "iPhone X",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome"
     }
   ]
diff --git a/ios/build/bots/chromium.fyi/ios-simulator.json b/ios/build/bots/chromium.fyi/ios-simulator.json
index 21be940f..7e80ce6 100644
--- a/ios/build/bots/chromium.fyi/ios-simulator.json
+++ b/ios/build/bots/chromium.fyi/ios-simulator.json
@@ -21,7 +21,7 @@
       ],
       "device type": "iPhone 6s",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome"
     },
     {
@@ -32,7 +32,7 @@
       "device type": "iPhone 6s",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome"
     },
     {
@@ -43,7 +43,7 @@
       "device type": "iPad Air 2",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome"
     },
     {
@@ -54,7 +54,7 @@
       "device type": "iPhone 6s",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome"
     },
     {
@@ -65,7 +65,7 @@
       "device type": "iPhone 6s",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome"
     },
     {
@@ -76,7 +76,7 @@
       "device type": "iPhone 6s",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome"
     },
     {
@@ -87,7 +87,7 @@
       "device type": "iPhone 6s",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome"
     },
     {
@@ -98,7 +98,7 @@
       "device type": "iPhone 6s",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome"
     }
   ]
diff --git a/ios/build/bots/chromium.fyi/ios13-beta-simulator.json b/ios/build/bots/chromium.fyi/ios13-beta-simulator.json
index a1a73c9..44acd764 100644
--- a/ios/build/bots/chromium.fyi/ios13-beta-simulator.json
+++ b/ios/build/bots/chromium.fyi/ios13-beta-simulator.json
@@ -24,12 +24,7 @@
       "os": "13.0",
       "xcode build version": "11a420a",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6"
     },
     {
       "xcode parallelization": true,
@@ -38,12 +33,7 @@
       "os": "13.0",
       "xcode build version": "11a420a",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6"
     },
     {
       "xcode parallelization": true,
@@ -52,12 +42,7 @@
       "os": "12.2",
       "xcode build version": "11a420a",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6"
     },
     {
       "xcode parallelization": true,
@@ -66,116 +51,71 @@
       "os": "12.2",
       "xcode build version": "11a420a",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6"
     },
     {
       "include": "common_tests.json",
       "device type": "iPhone X",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "eg_cq_tests.json",
       "device type": "iPhone X",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "eg_cq_tests.json",
       "device type": "iPad Pro (12.9-inch)",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "eg_tests.json",
       "device type": "iPhone X",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "eg_tests.json",
       "device type": "iPad Air (3rd generation)",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "screen_size_dependent_tests.json",
       "device type": "iPhone 6s Plus",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "screen_size_dependent_tests.json",
       "device type": "iPhone X",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "screen_size_dependent_tests.json",
       "device type": "iPad Air 2",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     }
   ]
 }
diff --git a/ios/build/bots/chromium.fyi/ios13-sdk-simulator.json b/ios/build/bots/chromium.fyi/ios13-sdk-simulator.json
index 69bdf19e..5bdafed9 100644
--- a/ios/build/bots/chromium.fyi/ios13-sdk-simulator.json
+++ b/ios/build/bots/chromium.fyi/ios13-sdk-simulator.json
@@ -23,12 +23,7 @@
       "device type": "iPhone 6s Plus",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -36,12 +31,7 @@
       "device type": "iPhone 6s",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -49,12 +39,7 @@
       "device type": "iPhone 6s",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -62,12 +47,7 @@
       "device type": "iPhone 7",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -75,12 +55,7 @@
       "device type": "iPad Air 2",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -88,12 +63,7 @@
       "device type": "iPhone X",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -101,12 +71,7 @@
       "device type": "iPhone X",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -114,12 +79,7 @@
       "device type": "iPad Air 2",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     }
   ]
diff --git a/ios/build/bots/chromium.mac/ios-simulator-cronet.json b/ios/build/bots/chromium.mac/ios-simulator-cronet.json
index a5938f92d..348a2fa 100644
--- a/ios/build/bots/chromium.mac/ios-simulator-cronet.json
+++ b/ios/build/bots/chromium.mac/ios-simulator-cronet.json
@@ -25,7 +25,7 @@
       "app": "cronet_unittests_ios",
       "device type": "iPhone 6s",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "priority": 30
     },
@@ -33,7 +33,7 @@
       "app": "cronet_unittests_ios",
       "device type": "iPhone 6s",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "priority": 30
     },
@@ -41,7 +41,7 @@
       "app": "cronet_test",
       "device type": "iPad Air 2",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "priority": 30
     },
@@ -49,7 +49,7 @@
       "app": "cronet_test",
       "device type": "iPad Air 2",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome",
       "priority": 30
     }
diff --git a/ios/build/bots/chromium.mac/ios-simulator-full-configs.json b/ios/build/bots/chromium.mac/ios-simulator-full-configs.json
index 04a7977c..da3b9fb 100644
--- a/ios/build/bots/chromium.mac/ios-simulator-full-configs.json
+++ b/ios/build/bots/chromium.mac/ios-simulator-full-configs.json
@@ -22,7 +22,7 @@
       "include": "eg_tests.json",
       "device type": "iPad Air 2",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -30,7 +30,7 @@
       "include": "eg_tests.json",
       "device type": "iPhone X",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -38,7 +38,7 @@
       "include": "eg_cq_tests.json",
       "device type": "iPad Air 2",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -46,7 +46,7 @@
       "include": "eg_tests.json",
       "device type": "iPhone 7",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -54,7 +54,7 @@
       "include": "eg_tests.json",
       "device type": "iPad Air 2",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -62,7 +62,7 @@
       "include": "eg_tests.json",
       "device type": "iPhone X",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -70,7 +70,7 @@
       "include": "eg_cq_tests.json",
       "device type": "iPhone X",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -78,7 +78,7 @@
       "include": "eg_cq_tests.json",
       "device type": "iPad Air 2",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     }
diff --git a/ios/build/bots/chromium.mac/ios-simulator.json b/ios/build/bots/chromium.mac/ios-simulator.json
index 556e4f7..28446d92 100644
--- a/ios/build/bots/chromium.mac/ios-simulator.json
+++ b/ios/build/bots/chromium.mac/ios-simulator.json
@@ -23,7 +23,7 @@
       "include": "common_tests.json",
       "device type": "iPhone 6s",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -31,7 +31,7 @@
       "include": "eg_cq_tests.json",
       "device type": "iPhone 6s",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -39,7 +39,7 @@
       "include": "screen_size_dependent_tests.json",
       "device type": "iPhone 6s Plus",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -47,7 +47,7 @@
       "include": "screen_size_dependent_tests.json",
       "device type": "iPhone 6s",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -55,7 +55,7 @@
       "include": "screen_size_dependent_tests.json",
       "device type": "iPhone SE",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -63,7 +63,7 @@
       "include": "common_tests.json",
       "device type": "iPhone 6s",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -71,7 +71,7 @@
       "include": "screen_size_dependent_tests.json",
       "device type": "iPad Air 2",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -79,7 +79,7 @@
       "include": "eg_cq_tests.json",
       "device type": "iPhone 6s",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     }
diff --git a/ios/build/bots/chromium.mac/ios-slimnav.json b/ios/build/bots/chromium.mac/ios-slimnav.json
index 66ef88e..ddafa20 100644
--- a/ios/build/bots/chromium.mac/ios-slimnav.json
+++ b/ios/build/bots/chromium.mac/ios-slimnav.json
@@ -21,7 +21,7 @@
       ],
       "device type": "iPhone 6s Plus",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -32,7 +32,7 @@
       ],
       "device type": "iPhone 6s",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -43,7 +43,7 @@
       ],
       "device type": "iPhone 6s",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -54,7 +54,7 @@
       ],
       "device type": "iPad Air 2",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -65,7 +65,7 @@
       ],
       "device type": "iPhone 6s",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -79,7 +79,7 @@
       "device type": "iPad Air 2",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -91,7 +91,7 @@
       "device type": "iPad Air 2",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -103,7 +103,7 @@
       "device type": "iPad Air 2",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -115,7 +115,7 @@
       "device type": "iPad Air 2",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -127,7 +127,7 @@
       "device type": "iPad Air 2",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -139,7 +139,7 @@
       "device type": "iPad Air 2",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -153,7 +153,7 @@
       "device type": "iPhone X",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -165,7 +165,7 @@
       "device type": "iPhone X",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -177,7 +177,7 @@
       "device type": "iPhone X",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -189,7 +189,7 @@
       "device type": "iPhone X",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -201,7 +201,7 @@
       "device type": "iPhone X",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -213,7 +213,7 @@
       "device type": "iPhone X",
       "os": "12.2",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -224,7 +224,7 @@
       ],
       "device type": "iPhone X",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -235,7 +235,7 @@
       ],
       "device type": "iPhone 6s Plus",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -246,7 +246,7 @@
       ],
       "device type": "iPhone 6s",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -257,7 +257,7 @@
       ],
       "device type": "iPhone 6s",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -268,7 +268,7 @@
       ],
       "device type": "iPad Air 2",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -279,7 +279,7 @@
       ],
       "device type": "iPhone 6s",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -293,7 +293,7 @@
       "device type": "iPad Air 2",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -305,7 +305,7 @@
       "device type": "iPad Air 2",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -317,7 +317,7 @@
       "device type": "iPad Air 2",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -329,7 +329,7 @@
       "device type": "iPad Air 2",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -341,7 +341,7 @@
       "device type": "iPad Air 2",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -353,7 +353,7 @@
       "device type": "iPad Air 2",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -367,7 +367,7 @@
       "device type": "iPhone X",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -379,7 +379,7 @@
       "device type": "iPhone X",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -391,7 +391,7 @@
       "device type": "iPhone X",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -403,7 +403,7 @@
       "device type": "iPhone X",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -415,7 +415,7 @@
       "device type": "iPhone X",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -427,7 +427,7 @@
       "device type": "iPhone X",
       "os": "13.0",
       "xctest": true,
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     },
@@ -438,7 +438,7 @@
       ],
       "device type": "iPhone X",
       "os": "13.0",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool":"Chrome",
       "priority": 30
     }
diff --git a/ios/build/bots/chromium.mac/ios12-beta-simulator.json b/ios/build/bots/chromium.mac/ios12-beta-simulator.json
index 4088f07..f9f6224 100644
--- a/ios/build/bots/chromium.mac/ios12-beta-simulator.json
+++ b/ios/build/bots/chromium.mac/ios12-beta-simulator.json
@@ -16,213 +16,5 @@
     "use_goma=true"
   ],
   "tests": [
-    {
-      "include": "common_tests.json",
-      "device type": "iPhone X",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "eg_cq_tests.json",
-      "device type": "iPhone X",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "eg_cq_tests.json",
-      "device type": "iPhone 6 Plus",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "eg_cq_tests.json",
-      "device type": "iPhone 5s",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "eg_cq_tests.json",
-      "device type": "iPad Pro (12.9-inch)",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "eg_tests.json",
-      "device type": "iPhone X",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "eg_tests.json",
-      "device type": "iPhone 6 Plus",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "eg_tests.json",
-      "device type": "iPad Air",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "eg_tests.json",
-      "device type": "iPhone 5s",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "screen_size_dependent_tests.json",
-      "device type": "iPhone 6s Plus",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "screen_size_dependent_tests.json",
-      "device type": "iPhone X",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "screen_size_dependent_tests.json",
-      "device type": "iPhone 5s",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    },
-    {
-      "include": "screen_size_dependent_tests.json",
-      "device type": "iPad Air 2",
-      "os": "12.1",
-      "xcode build version": "10o45e",
-      "host os": "Mac-10.13.6",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.4"
-          }],
-          "120": [{
-            "host os": "Mac-10.14.3"
-          }]
-      }
-    }
   ]
 }
diff --git a/ios/build/bots/chromium.mac/ios13-beta-simulator.json b/ios/build/bots/chromium.mac/ios13-beta-simulator.json
index 55b4dc0..5ed874f 100644
--- a/ios/build/bots/chromium.mac/ios13-beta-simulator.json
+++ b/ios/build/bots/chromium.mac/ios13-beta-simulator.json
@@ -26,12 +26,7 @@
       "os": "13.0",
       "xcode build version": "11a420a",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6"
     },
     {
       "xcode parallelization": true,
@@ -40,12 +35,7 @@
       "os": "13.0",
       "xcode build version": "11a420a",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6"
     },
     {
       "xcode parallelization": true,
@@ -54,12 +44,7 @@
       "os": "12.2",
       "xcode build version": "11a420a",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6"
     },
     {
       "xcode parallelization": true,
@@ -67,117 +52,71 @@
       "device type": "iPad (6th generation)",
       "os": "12.2",
       "xcode build version": "11a420a",
-      "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "pool":"Chrome"
     },
     {
       "include": "common_tests.json",
       "device type": "iPhone X",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "eg_cq_tests.json",
       "device type": "iPhone X",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "eg_cq_tests.json",
       "device type": "iPad Pro (12.9-inch)",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "eg_tests.json",
       "device type": "iPhone X",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "eg_tests.json",
       "device type": "iPad Air (3rd generation)",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "screen_size_dependent_tests.json",
       "device type": "iPhone 6s Plus",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "screen_size_dependent_tests.json",
       "device type": "iPhone X",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     },
     {
       "include": "screen_size_dependent_tests.json",
       "device type": "iPad Air 2",
       "os": "13.0",
       "xcode build version": "11a420a",
-      "host os": "Mac-10.14.4",
-      "pool":"Chrome",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      }
+      "host os": "Mac-10.14.6",
+      "pool":"Chrome"
     }
   ]
 }
diff --git a/ios/build/bots/chromium.mac/ios13-sdk-simulator.json b/ios/build/bots/chromium.mac/ios13-sdk-simulator.json
index 11508be..6341195a 100644
--- a/ios/build/bots/chromium.mac/ios13-sdk-simulator.json
+++ b/ios/build/bots/chromium.mac/ios13-sdk-simulator.json
@@ -26,12 +26,7 @@
       "device type": "iPhone 6s Plus",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -39,12 +34,7 @@
       "device type": "iPhone 6s",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -52,12 +42,7 @@
       "device type": "iPhone 6s",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -65,12 +50,7 @@
       "device type": "iPhone 7",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -78,12 +58,7 @@
       "device type": "iPad Air 2",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -91,12 +66,7 @@
       "device type": "iPhone X",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -104,12 +74,7 @@
       "device type": "iPhone X",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     },
     {
@@ -117,12 +82,7 @@
       "device type": "iPad Air 2",
       "os": "13.0",
       "pool":"Chrome",
-      "host os": "Mac-10.14.4",
-      "optional_dimensions": {
-          "60": [{
-            "host os": "Mac-10.14.5"
-          }]
-      },
+      "host os": "Mac-10.14.6",
       "priority": 30
     }
   ]
diff --git a/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-simulator.json b/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-simulator.json
index 131d2a0..551e1dd 100644
--- a/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-simulator.json
+++ b/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-simulator.json
@@ -23,21 +23,21 @@
       "include": "webrtc_tests.json",
       "device type": "iPhone 6s Plus",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome"
     },
     {
       "include": "webrtc_tests.json",
       "device type": "iPhone 6s",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome"
     },
     {
       "include": "webrtc_tests.json",
       "device type": "iPad Air 2",
       "os": "12.2",
-      "host os": "Mac-10.14.4",
+      "host os": "Mac-10.14.6",
       "pool": "Chrome"
     }
   ]
diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
index ad3ac22..985611705 100644
--- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -1801,9 +1801,12 @@
       // by the |completion| block below.
       UIView* launchScreenView = launchScreenController.view;
       launchScreenView.userInteractionEnabled = NO;
-      UIWindow* window = UIApplication.sharedApplication.keyWindow;
-      launchScreenView.frame = window.bounds;
-      [window addSubview:launchScreenView];
+      // TODO(crbug.com/1011155): Displaying the launch screen is a hack to hide
+      // the build up of the UI from the user. To implement the hack, this view
+      // controller uses information that it should not know or care about: this
+      // BVC is contained and its parent bounds to the full screen.
+      launchScreenView.frame = self.parentViewController.view.bounds;
+      [self.parentViewController.view addSubview:launchScreenView];
 
       // Replace the completion handler sent to the superclass with one which
       // removes |launchScreenView| and resets the status bar. If |completion|
diff --git a/media/base/waiting.h b/media/base/waiting.h
index 2b0cc47..93d1889 100644
--- a/media/base/waiting.h
+++ b/media/base/waiting.h
@@ -20,9 +20,15 @@
 // https://www.w3.org/TR/html5/semantics-embedded-content.html#eventdef-media-waiting
 
 enum class WaitingReason {
+  // The playback cannot start because "Media Data May Contain Encrypted Blocks"
+  // and no CDM is available. The playback will start after a CDM is set. See
+  // https://www.w3.org/TR/encrypted-media/#media-may-contain-encrypted-blocks
+  kNoCdm,
+
   // The playback cannot proceed because some decryption key is not available.
   // This could happen when the license exchange is delayed or failed. The
   // playback will resume after the decryption key becomes available.
+  // See https://www.w3.org/TR/encrypted-media/#encrypted-block-encountered
   kNoDecryptionKey,
 
   // The playback cannot proceed because the decoder has lost its state, e.g.
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index ab05ee8e..0734cc1 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -2180,6 +2180,7 @@
   DCHECK(main_task_runner_->BelongsToCurrentThread());
 
   switch (reason) {
+    case WaitingReason::kNoCdm:
     case WaitingReason::kNoDecryptionKey:
       encrypted_client_->DidBlockPlaybackWaitingForKey();
       // TODO(jrummell): didResumePlaybackBlockedForKey() should only be called
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
index 94b782eb..6edb274 100644
--- a/media/filters/chunk_demuxer.cc
+++ b/media/filters/chunk_demuxer.cc
@@ -136,10 +136,7 @@
 
   base::AutoLock auto_lock(lock_);
   DCHECK_NE(state_, SHUTDOWN);
-  if (!stream_->Append(buffers)) {
-    DVLOG(1) << "ChunkDemuxerStream::Append() : stream append failed";
-    return false;
-  }
+  stream_->Append(buffers);
 
   if (read_cb_)
     CompletePendingReadIfPossible_Locked();
diff --git a/media/filters/source_buffer_stream.cc b/media/filters/source_buffer_stream.cc
index 44a2d71..80053cc 100644
--- a/media/filters/source_buffer_stream.cc
+++ b/media/filters/source_buffer_stream.cc
@@ -246,7 +246,7 @@
   }
 }
 
-bool SourceBufferStream::Append(const BufferQueue& buffers) {
+void SourceBufferStream::Append(const BufferQueue& buffers) {
   TRACE_EVENT2("media", "SourceBufferStream::Append",
                "stream type", GetStreamTypeName(),
                "buffers to append", buffers.size());
@@ -269,9 +269,8 @@
       << buffers.front()->timestamp().InMicroseconds() << "us";
 
   // New coded frame groups emitted by the coded frame processor must begin with
-  // a keyframe. TODO(wolenetz): Change this to [DCHECK + MEDIA_LOG(ERROR...) +
-  // return false] once the CHECK has baked in a stable release. See
-  // https://crbug.com/580621.
+  // a keyframe. Avoid propagating with escalating impact if this assumption is
+  // broken.
   CHECK(!new_coded_frame_group_ || buffers.front()->is_key_frame());
 
   // Buffers within each GOP in a coded frame group must be monotonically
@@ -358,7 +357,7 @@
                     " Skipping further processing.";
         DVLOG(1) << __func__ << " " << GetStreamTypeName()
                  << ": done. ranges_=" << RangesToString(ranges_);
-        return true;
+        return;
       } else if (itr != buffers.begin()) {
         // Copy the first key frame and everything after it into
         // |trimmed_buffers|.
@@ -434,7 +433,6 @@
            << ": done. ranges_=" << RangesToString(ranges_);
   DCHECK(IsRangeListSorted(ranges_));
   DCHECK(OnlySelectedRangeIsSeeked());
-  return true;
 }
 
 void SourceBufferStream::Remove(base::TimeDelta start,
diff --git a/media/filters/source_buffer_stream.h b/media/filters/source_buffer_stream.h
index d771151..fa70e48 100644
--- a/media/filters/source_buffer_stream.h
+++ b/media/filters/source_buffer_stream.h
@@ -77,8 +77,7 @@
   // expected to be in order, but multiple calls to Append() may add buffers out
   // of order or overlapping. Assumes all buffers within |buffers| are in
   // presentation order and are non-overlapping.
-  // Returns true if Append() was successful, false if |buffers| are not added.
-  bool Append(const BufferQueue& buffers);
+  void Append(const BufferQueue& buffers);
 
   // Removes buffers between |start| and |end| according to the steps
   // in the "Coded Frame Removal Algorithm" in the Media Source
diff --git a/media/filters/source_buffer_stream_unittest.cc b/media/filters/source_buffer_stream_unittest.cc
index c028858..8364ab7d 100644
--- a/media/filters/source_buffer_stream_unittest.cc
+++ b/media/filters/source_buffer_stream_unittest.cc
@@ -106,15 +106,15 @@
   }
 
   void NewCodedFrameGroupAppend(int starting_position, int number_of_buffers) {
-    AppendBuffers(starting_position, number_of_buffers, true,
-                  base::TimeDelta(), true, &kDataA, kDataSize);
+    AppendBuffers(starting_position, number_of_buffers, true, base::TimeDelta(),
+                  &kDataA, kDataSize);
   }
 
   void NewCodedFrameGroupAppend(int starting_position,
                                 int number_of_buffers,
                                 const uint8_t* data) {
-    AppendBuffers(starting_position, number_of_buffers, true,
-                  base::TimeDelta(), true, data, kDataSize);
+    AppendBuffers(starting_position, number_of_buffers, true, base::TimeDelta(),
+                  data, kDataSize);
   }
 
   void NewCodedFrameGroupAppend_OffsetFirstBuffer(
@@ -122,40 +122,40 @@
       int number_of_buffers,
       base::TimeDelta first_buffer_offset) {
     AppendBuffers(starting_position, number_of_buffers, true,
-                  first_buffer_offset, true, &kDataA, kDataSize);
+                  first_buffer_offset, &kDataA, kDataSize);
   }
 
   void AppendBuffers(int starting_position, int number_of_buffers) {
     AppendBuffers(starting_position, number_of_buffers, false,
-                  base::TimeDelta(), true, &kDataA, kDataSize);
+                  base::TimeDelta(), &kDataA, kDataSize);
   }
 
   void AppendBuffers(int starting_position,
                      int number_of_buffers,
                      const uint8_t* data) {
     AppendBuffers(starting_position, number_of_buffers, false,
-                  base::TimeDelta(), true, data, kDataSize);
+                  base::TimeDelta(), data, kDataSize);
   }
 
   void NewCodedFrameGroupAppend(const std::string& buffers_to_append) {
-    AppendBuffers(buffers_to_append, true, kNoTimestamp, false, true);
+    AppendBuffers(buffers_to_append, true, kNoTimestamp, false);
   }
 
   void NewCodedFrameGroupAppend(base::TimeDelta start_timestamp,
                                 const std::string& buffers_to_append) {
-    AppendBuffers(buffers_to_append, true, start_timestamp, false, true);
+    AppendBuffers(buffers_to_append, true, start_timestamp, false);
   }
 
   void AppendBuffers(const std::string& buffers_to_append) {
-    AppendBuffers(buffers_to_append, false, kNoTimestamp, false, true);
+    AppendBuffers(buffers_to_append, false, kNoTimestamp, false);
   }
 
   void NewCodedFrameGroupAppendOneByOne(const std::string& buffers_to_append) {
-    AppendBuffers(buffers_to_append, true, kNoTimestamp, true, true);
+    AppendBuffers(buffers_to_append, true, kNoTimestamp, true);
   }
 
   void AppendBuffersOneByOne(const std::string& buffers_to_append) {
-    AppendBuffers(buffers_to_append, false, kNoTimestamp, true, true);
+    AppendBuffers(buffers_to_append, false, kNoTimestamp, true);
   }
 
   void Seek(int position) { stream_->Seek(position * frame_duration_); }
@@ -457,7 +457,6 @@
                      int number_of_buffers,
                      bool begin_coded_frame_group,
                      base::TimeDelta first_buffer_offset,
-                     bool expect_success,
                      const uint8_t* data,
                      int size) {
     if (begin_coded_frame_group) {
@@ -499,7 +498,7 @@
       queue.push_back(buffer);
     }
     if (!queue.empty())
-      EXPECT_EQ(expect_success, stream_->Append(queue));
+      stream_->Append(queue);
   }
 
   void UpdateLastBufferDuration(DecodeTimestamp current_dts,
@@ -666,8 +665,7 @@
   void AppendBuffers(const std::string& buffers_to_append,
                      bool start_new_coded_frame_group,
                      base::TimeDelta coded_frame_group_start_timestamp,
-                     bool one_by_one,
-                     bool expect_success) {
+                     bool one_by_one) {
     BufferQueue buffers = StringToBufferQueue(buffers_to_append);
 
     if (start_new_coded_frame_group) {
@@ -684,7 +682,7 @@
     }
 
     if (!one_by_one) {
-      EXPECT_EQ(expect_success, stream_->Append(buffers));
+      stream_->Append(buffers);
       return;
     }
 
@@ -692,7 +690,7 @@
     for (size_t i = 0; i < buffers.size(); i++) {
       BufferQueue wrapper;
       wrapper.push_back(buffers[i]);
-      EXPECT_TRUE(stream_->Append(wrapper));
+      stream_->Append(wrapper);
     }
   }
 
diff --git a/media/fuchsia/cdm/fuchsia_decryptor.cc b/media/fuchsia/cdm/fuchsia_decryptor.cc
index e1c8ba7..8666cfb 100644
--- a/media/fuchsia/cdm/fuchsia_decryptor.cc
+++ b/media/fuchsia/cdm/fuchsia_decryptor.cc
@@ -40,7 +40,7 @@
 }
 
 void FuchsiaDecryptor::CancelDecrypt(StreamType stream_type) {
-  if (stream_type == StreamType::kAudio) {
+  if (stream_type == StreamType::kAudio && audio_decryptor_) {
     audio_decryptor_->CancelDecrypt();
   }
 }
diff --git a/media/renderers/renderer_impl.cc b/media/renderers/renderer_impl.cc
index 8a12f77..9fad1576 100644
--- a/media/renderers/renderer_impl.cc
+++ b/media/renderers/renderer_impl.cc
@@ -157,6 +157,7 @@
   if (HasEncryptedStream() && !cdm_context_) {
     DVLOG(1) << __func__ << ": Has encrypted stream but CDM is not set.";
     state_ = STATE_INIT_PENDING_CDM;
+    OnWaiting(WaitingReason::kNoCdm);
     return;
   }
 
diff --git a/media/renderers/renderer_impl_unittest.cc b/media/renderers/renderer_impl_unittest.cc
index 27e074f..89667c1 100644
--- a/media/renderers/renderer_impl_unittest.cc
+++ b/media/renderers/renderer_impl_unittest.cc
@@ -126,7 +126,8 @@
   void InitializeAndExpect(PipelineStatus start_status) {
     EXPECT_CALL(callbacks_, OnInitialize(start_status))
         .WillOnce(SaveArg<0>(&initialization_status_));
-    EXPECT_CALL(callbacks_, OnWaiting(_)).Times(0);
+    if (is_encrypted_ && !is_cdm_set_)
+      EXPECT_CALL(callbacks_, OnWaiting(WaitingReason::kNoCdm));
 
     if (start_status == PIPELINE_OK && audio_stream_) {
       EXPECT_CALL(*audio_renderer_, GetTimeSource())
@@ -171,6 +172,7 @@
   }
 
   void CreateVideoStream(bool is_encrypted = false) {
+    is_encrypted_ = is_encrypted;
     video_stream_ = CreateStream(DemuxerStream::VIDEO);
     video_stream_->set_video_decoder_config(
         is_encrypted ? TestVideoConfig::NormalEncrypted()
@@ -303,7 +305,8 @@
   }
 
   void SetCdmAndExpect(bool expected_result) {
-    EXPECT_CALL(callbacks_, OnCdmAttached(expected_result));
+    EXPECT_CALL(callbacks_, OnCdmAttached(expected_result))
+        .WillOnce(SaveArg<0>(&is_cdm_set_));
     renderer_impl_->SetCdm(cdm_context_.get(),
                            base::Bind(&CallbackHelper::OnCdmAttached,
                                       base::Unretained(&callbacks_)));
@@ -364,6 +367,8 @@
   RendererClient* audio_renderer_client_;
   VideoDecoderConfig video_decoder_config_;
   PipelineStatus initialization_status_;
+  bool is_encrypted_ = false;
+  bool is_cdm_set_ = false;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(RendererImplTest);
diff --git a/mojo/public/java/system/BUILD.gn b/mojo/public/java/system/BUILD.gn
index 2984d4b..b669abc7 100644
--- a/mojo/public/java/system/BUILD.gn
+++ b/mojo/public/java/system/BUILD.gn
@@ -14,6 +14,7 @@
 }
 
 generate_jni("jni_headers") {
+  testonly = true
   sources = [
     "javatests/src/org/chromium/mojo/MojoTestRule.java",
     "javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java",
diff --git a/net/BUILD.gn b/net/BUILD.gn
index 5b8409e9..8c6bd3c9 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1722,6 +1722,8 @@
       "third_party/quiche/src/quic/platform/api/quic_text_utils.h",
       "third_party/quiche/src/quic/platform/api/quic_thread.h",
       "third_party/quiche/src/quic/platform/api/quic_uint128.h",
+      "third_party/quiche/src/quic/quic_transport/quic_transport_client_session.cc",
+      "third_party/quiche/src/quic/quic_transport/quic_transport_client_session.h",
       "third_party/quiche/src/spdy/core/fifo_write_scheduler.h",
       "third_party/quiche/src/spdy/core/hpack/hpack_constants.cc",
       "third_party/quiche/src/spdy/core/hpack/hpack_constants.h",
@@ -3300,6 +3302,7 @@
     ]
   }
   generate_jni("net_test_jni_headers") {
+    testonly = true
     sources = [
       "android/javatests/src/org/chromium/net/AndroidKeyStoreTestUtil.java",
       "android/javatests/src/org/chromium/net/AndroidNetworkLibraryTestUtil.java",
@@ -5620,6 +5623,7 @@
     "third_party/quiche/src/quic/platform/api/quic_str_cat_test.cc",
     "third_party/quiche/src/quic/platform/api/quic_string_utils_test.cc",
     "third_party/quiche/src/quic/platform/api/quic_text_utils_test.cc",
+    "third_party/quiche/src/quic/quic_transport/quic_transport_client_session_test.cc",
     "third_party/quiche/src/quic/test_tools/crypto_test_utils_test.cc",
     "third_party/quiche/src/quic/test_tools/mock_quic_time_wait_list_manager.cc",
     "third_party/quiche/src/quic/test_tools/mock_quic_time_wait_list_manager.h",
diff --git a/net/cert/cert_verifier.cc b/net/cert/cert_verifier.cc
index d29b77d..fbf17c71 100644
--- a/net/cert/cert_verifier.cc
+++ b/net/cert/cert_verifier.cc
@@ -8,6 +8,7 @@
 
 #include "base/strings/string_util.h"
 #include "build/build_config.h"
+#include "net/base/features.h"
 #include "net/cert/cert_verify_proc.h"
 #include "net/cert/crl_set.h"
 #include "third_party/boringssl/src/include/openssl/pool.h"
@@ -82,9 +83,25 @@
   NOTIMPLEMENTED();
   return std::unique_ptr<CertVerifier>();
 #else
+  scoped_refptr<CertVerifyProc> verify_proc;
+#if defined(OS_FUCHSIA)
+  verify_proc =
+      CertVerifyProc::CreateBuiltinVerifyProc(std::move(cert_net_fetcher));
+#elif BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
+  if (base::FeatureList::IsEnabled(features::kCertVerifierBuiltinFeature)) {
+    verify_proc =
+        CertVerifyProc::CreateBuiltinVerifyProc(std::move(cert_net_fetcher));
+  } else {
+    verify_proc =
+        CertVerifyProc::CreateSystemVerifyProc(std::move(cert_net_fetcher));
+  }
+#else
+  verify_proc =
+      CertVerifyProc::CreateSystemVerifyProc(std::move(cert_net_fetcher));
+#endif
+
   return std::make_unique<CachingCertVerifier>(
-      std::make_unique<MultiThreadedCertVerifier>(
-          CertVerifyProc::CreateDefault(std::move(cert_net_fetcher))));
+      std::make_unique<MultiThreadedCertVerifier>(std::move(verify_proc)));
 #endif
 }
 
diff --git a/net/cert/cert_verify_proc.cc b/net/cert/cert_verify_proc.cc
index 551de06..0d0bfee6 100644
--- a/net/cert/cert_verify_proc.cc
+++ b/net/cert/cert_verify_proc.cc
@@ -17,7 +17,6 @@
 #include "base/strings/stringprintf.h"
 #include "base/threading/scoped_blocking_call.h"
 #include "base/time/time.h"
-#include "build/build_config.h"
 #include "crypto/sha2.h"
 #include "net/base/features.h"
 #include "net/base/net_errors.h"
@@ -43,7 +42,8 @@
 #include "third_party/boringssl/src/include/openssl/pool.h"
 #include "url/url_canon.h"
 
-#if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
+#if defined(OS_FUCHSIA) || defined(USE_NSS_CERTS) || \
+    (defined(OS_MACOSX) && !defined(OS_IOS))
 #include "net/cert/cert_verify_proc_builtin.h"
 #endif
 
@@ -58,10 +58,6 @@
 #elif defined(OS_WIN)
 #include "base/win/windows_version.h"
 #include "net/cert/cert_verify_proc_win.h"
-#elif defined(OS_FUCHSIA)
-#include "net/cert/cert_verify_proc_builtin.h"
-#else
-#error Implement certificate verification.
 #endif
 
 namespace net {
@@ -457,16 +453,10 @@
 
 }  // namespace
 
+#if !defined(OS_FUCHSIA)
 // static
-scoped_refptr<CertVerifyProc> CertVerifyProc::CreateDefault(
+scoped_refptr<CertVerifyProc> CertVerifyProc::CreateSystemVerifyProc(
     scoped_refptr<CertNetFetcher> cert_net_fetcher) {
-#if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
-  if (base::FeatureList::IsEnabled(features::kCertVerifierBuiltinFeature)) {
-    return CreateCertVerifyProcBuiltin(
-        std::move(cert_net_fetcher),
-        SystemTrustStoreProvider::CreateDefaultForSSL());
-  }
-#endif
 #if defined(USE_NSS_CERTS)
   return new CertVerifyProcNSS();
 #elif defined(OS_ANDROID)
@@ -477,14 +467,22 @@
   return new CertVerifyProcMac();
 #elif defined(OS_WIN)
   return new CertVerifyProcWin();
-#elif defined(OS_FUCHSIA)
-  return CreateCertVerifyProcBuiltin(
-      std::move(cert_net_fetcher),
-      SystemTrustStoreProvider::CreateDefaultForSSL());
 #else
 #error Unsupported platform
 #endif
 }
+#endif
+
+#if defined(OS_FUCHSIA) || defined(USE_NSS_CERTS) || \
+    (defined(OS_MACOSX) && !defined(OS_IOS))
+// static
+scoped_refptr<CertVerifyProc> CertVerifyProc::CreateBuiltinVerifyProc(
+    scoped_refptr<CertNetFetcher> cert_net_fetcher) {
+  return CreateCertVerifyProcBuiltin(
+      std::move(cert_net_fetcher),
+      SystemTrustStoreProvider::CreateDefaultForSSL());
+}
+#endif
 
 CertVerifyProc::CertVerifyProc() {}
 
diff --git a/net/cert/cert_verify_proc.h b/net/cert/cert_verify_proc.h
index af2219d8..ed812373 100644
--- a/net/cert/cert_verify_proc.h
+++ b/net/cert/cert_verify_proc.h
@@ -12,6 +12,7 @@
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "build/build_config.h"
 #include "net/base/net_export.h"
 #include "net/cert/x509_cert_types.h"
 
@@ -64,10 +65,19 @@
     kMaxValue = kChainLengthOne
   };
 
-  // Creates and returns the default CertVerifyProc. |cert_net_fetcher| may not
-  // be used, depending on the implementation.
-  static scoped_refptr<CertVerifyProc> CreateDefault(
+#if !defined(OS_FUCHSIA)
+  // Creates and returns a CertVerifyProc that uses the system verifier.
+  // |cert_net_fetcher| may not be used, depending on the implementation.
+  static scoped_refptr<CertVerifyProc> CreateSystemVerifyProc(
       scoped_refptr<CertNetFetcher> cert_net_fetcher);
+#endif
+
+#if defined(OS_FUCHSIA) || defined(USE_NSS_CERTS) || \
+    (defined(OS_MACOSX) && !defined(OS_IOS))
+  // Creates and returns a CertVerifyProcBuiltin using the SSL SystemTrustStore.
+  static scoped_refptr<CertVerifyProc> CreateBuiltinVerifyProc(
+      scoped_refptr<CertNetFetcher> cert_net_fetcher);
+#endif
 
   // Verifies the certificate against the given hostname as an SSL server
   // certificate. Returns OK if successful or an error code upon failure.
diff --git a/net/cert/cert_verify_proc_unittest.cc b/net/cert/cert_verify_proc_unittest.cc
index 03e7dbf..5835917 100644
--- a/net/cert/cert_verify_proc_unittest.cc
+++ b/net/cert/cert_verify_proc_unittest.cc
@@ -139,8 +139,8 @@
 
 // This enum identifies a concrete implemenation of CertVerifyProc.
 //
-// The type is erased by CertVerifyProc::CreateDefault(), however
-// needs to be known for some of the test expectations.
+// The type is erased by CreateCertVerifyProc(), however needs to be known for
+// some of the test expectations.
 enum CertVerifyProcType {
   CERT_VERIFY_PROC_NSS,
   CERT_VERIFY_PROC_ANDROID,
@@ -212,7 +212,8 @@
 }
 
 // The set of all CertVerifyProcTypes that tests should be parameterized on.
-// This needs to be kept in sync with CertVerifyProc::CreateDefault().
+// This needs to be kept in sync with CertVerifyProc::CreateSystemVerifyProc()
+// and the platforms where CreateSslSystemTrustStore() is not a dummy store.
 // TODO(crbug.com/649017): Enable CERT_VERIFY_PROC_BUILTIN everywhere. Right
 // now this is gated on having CertVerifyProcBuiltin understand the roots added
 // via TestRootCerts.
diff --git a/net/cert/test_root_certs_unittest.cc b/net/cert/test_root_certs_unittest.cc
index 62e2365..5740686 100644
--- a/net/cert/test_root_certs_unittest.cc
+++ b/net/cert/test_root_certs_unittest.cc
@@ -6,6 +6,7 @@
 
 #include "base/files/file_path.h"
 #include "build/build_config.h"
+#include "net/base/features.h"
 #include "net/base/net_errors.h"
 #include "net/cert/cert_net_fetcher.h"
 #include "net/cert/cert_status_flags.h"
@@ -36,6 +37,21 @@
 // A certificate issued by the local test root for 127.0.0.1.
 const char kGoodCertificateFile[] = "ok_cert.pem";
 
+scoped_refptr<CertVerifyProc> CreateCertVerifyProc() {
+#if defined(OS_FUCHSIA)
+  return CertVerifyProc::CreateBuiltinVerifyProc(/*cert_net_fetcher=*/nullptr);
+#elif BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
+  if (base::FeatureList::IsEnabled(features::kCertVerifierBuiltinFeature)) {
+    return CertVerifyProc::CreateBuiltinVerifyProc(
+        /*cert_net_fetcher=*/nullptr);
+  } else {
+    return CertVerifyProc::CreateSystemVerifyProc(/*cert_net_fetcher=*/nullptr);
+  }
+#else
+  return CertVerifyProc::CreateSystemVerifyProc(/*cert_net_fetcher=*/nullptr);
+#endif
+}
+
 }  // namespace
 
 // Test basic functionality when adding from an existing X509Certificate.
@@ -89,8 +105,7 @@
   // certificate should not yet be trusted.
   int flags = 0;
   CertVerifyResult bad_verify_result;
-  scoped_refptr<CertVerifyProc> verify_proc(
-      CertVerifyProc::CreateDefault(/*cert_net_fetcher=*/nullptr));
+  scoped_refptr<CertVerifyProc> verify_proc(CreateCertVerifyProc());
   int bad_status = verify_proc->Verify(
       test_cert.get(), "127.0.0.1", /*ocsp_response=*/std::string(),
       /*sct_list=*/std::string(), flags, net::CRLSet::BuiltinCRLSet().get(),
diff --git a/net/log/net_log_event_type_list.h b/net/log/net_log_event_type_list.h
index a98dddf..401b3c6 100644
--- a/net/log/net_log_event_type_list.h
+++ b/net/log/net_log_event_type_list.h
@@ -1327,6 +1327,13 @@
 //   }
 EVENT_TYPE(BIDIRECTIONAL_STREAM_FAILED)
 
+// Identifies the NetLogSource() for the QuicSession that handled the stream.
+// The event parameters are:
+//   {
+//      "source_dependency": <Source identifier for session that was used>,
+//   }
+EVENT_TYPE(BIDIRECTIONAL_STREAM_BOUND_TO_QUIC_SESSION)
+
 // ------------------------------------------------------------------------
 // SERVER_PUSH_LOOKUP_TRANSACTION
 // ------------------------------------------------------------------------
@@ -2080,7 +2087,7 @@
 //   }
 EVENT_TYPE(QUIC_HTTP_STREAM_ADOPTED_PUSH_STREAM)
 
-// Identifies the NetLogSource() for the QuicSesssion that handled the stream.
+// Identifies the NetLogSource() for the QuicSession that handled the stream.
 // The event parameters are:
 //   {
 //      "source_dependency": <Source identifier for session that was used>,
diff --git a/net/quic/bidirectional_stream_quic_impl.cc b/net/quic/bidirectional_stream_quic_impl.cc
index 8e592b8..5d7285e 100644
--- a/net/quic/bidirectional_stream_quic_impl.cc
+++ b/net/quic/bidirectional_stream_quic_impl.cc
@@ -76,6 +76,10 @@
   DLOG_IF(WARNING, !session_->IsConnected())
       << "Trying to start request headers after session has been closed.";
 
+  net_log.AddEventReferencingSource(
+      NetLogEventType::BIDIRECTIONAL_STREAM_BOUND_TO_QUIC_SESSION,
+      session_->net_log().source());
+
   send_request_headers_automatically_ = send_request_headers_automatically;
   delegate_ = delegate;
   request_info_ = request_info;
diff --git a/net/quic/quic_connection_logger.cc b/net/quic/quic_connection_logger.cc
index 7845dcc..9150434 100644
--- a/net/quic/quic_connection_logger.cc
+++ b/net/quic/quic_connection_logger.cc
@@ -56,9 +56,9 @@
               NetLogNumberValue(serialized_packet.packet_number.ToUint64()));
   dict.SetIntKey("size", serialized_packet.encrypted_length);
   dict.SetKey("sent_time_us", NetLogNumberValue(sent_time.ToDebuggingValue()));
-  dict.SetStringKey("encryption_level",
-                    quic::QuicUtils::EncryptionLevelToString(
-                        serialized_packet.encryption_level));
+  dict.SetStringKey(
+      "encryption_level",
+      quic::EncryptionLevelToString(serialized_packet.encryption_level));
   return dict;
 }
 
@@ -250,7 +250,7 @@
                                         bool has_buffer) {
   base::Value dict(base::Value::Type::DICTIONARY);
   dict.SetStringKey("encryption_level",
-                    quic::QuicUtils::EncryptionLevelToString(frame->level));
+                    quic::EncryptionLevelToString(frame->level));
   dict.SetIntKey("data_length", frame->data_length);
   dict.SetKey("offset", NetLogNumberValue(frame->offset));
   if (has_buffer) {
diff --git a/net/quic/quic_test_packet_maker.cc b/net/quic/quic_test_packet_maker.cc
index 9a815318..b03014b 100644
--- a/net/quic/quic_test_packet_maker.cc
+++ b/net/quic/quic_test_packet_maker.cc
@@ -1330,7 +1330,7 @@
         long_header_type_ = quic::INVALID_PACKET_TYPE;
         break;
       default:
-        QUIC_BUG << quic::QuicUtils::EncryptionLevelToString(level);
+        QUIC_BUG << quic::EncryptionLevelToString(level);
         long_header_type_ = quic::INVALID_PACKET_TYPE;
     }
 }
diff --git a/net/reporting/reporting_cache.h b/net/reporting/reporting_cache.h
index 1eb28b9..bf8f565f 100644
--- a/net/reporting/reporting_cache.h
+++ b/net/reporting/reporting_cache.h
@@ -22,6 +22,7 @@
 
 namespace net {
 
+class NetworkIsolationKey;
 class ReportingContext;
 
 // The cache holds undelivered reports and clients (per-origin endpoint
@@ -189,6 +190,7 @@
   // name |group| with include_subdomains enabled, this method would return
   // endpoints from that group from the earliest-inserted origin.
   virtual std::vector<ReportingEndpoint> GetCandidateEndpointsForDelivery(
+      const NetworkIsolationKey& network_isolation_key,
       const url::Origin& origin,
       const std::string& group_name) = 0;
 
diff --git a/net/reporting/reporting_cache_impl.cc b/net/reporting/reporting_cache_impl.cc
index 8c6df6f..e471f42 100644
--- a/net/reporting/reporting_cache_impl.cc
+++ b/net/reporting/reporting_cache_impl.cc
@@ -492,12 +492,14 @@
 
 std::vector<ReportingEndpoint>
 ReportingCacheImpl::GetCandidateEndpointsForDelivery(
+    const NetworkIsolationKey& network_isolation_key,
     const url::Origin& origin,
     const std::string& group_name) {
   base::Time now = clock().Now();
   SanityCheckClients();
 
   // Look for an exact origin match for |origin| and |group|.
+  // TODO(mmenke): Respect NetworkIsolationKey.
   EndpointGroupMap::iterator group_it =
       FindEndpointGroupIt(ReportingEndpointGroupKey(origin, group_name));
   if (group_it != endpoint_groups_.end() && group_it->second.expires > now) {
diff --git a/net/reporting/reporting_cache_impl.h b/net/reporting/reporting_cache_impl.h
index ac8ca7b..7e73755 100644
--- a/net/reporting/reporting_cache_impl.h
+++ b/net/reporting/reporting_cache_impl.h
@@ -29,6 +29,8 @@
 
 namespace net {
 
+class NetworkIsolationKey;
+
 class ReportingCacheImpl : public ReportingCache {
  public:
   ReportingCacheImpl(ReportingContext* context);
@@ -80,6 +82,7 @@
       std::vector<CachedReportingEndpointGroup> loaded_endpoint_groups)
       override;
   std::vector<ReportingEndpoint> GetCandidateEndpointsForDelivery(
+      const NetworkIsolationKey& network_isolation_key,
       const url::Origin& origin,
       const std::string& group_name) override;
   base::Value GetClientsAsValue() const override;
diff --git a/net/reporting/reporting_cache_unittest.cc b/net/reporting/reporting_cache_unittest.cc
index 11c8716..e48c641 100644
--- a/net/reporting/reporting_cache_unittest.cc
+++ b/net/reporting/reporting_cache_unittest.cc
@@ -14,6 +14,7 @@
 #include "base/test/values_test_util.h"
 #include "base/time/time.h"
 #include "base/values.h"
+#include "net/base/network_isolation_key.h"
 #include "net/reporting/mock_persistent_reporting_store.h"
 #include "net/reporting/reporting_cache_impl.h"
 #include "net/reporting/reporting_cache_observer.h"
@@ -750,15 +751,16 @@
   ASSERT_TRUE(SetEndpointInCache(kOrigin2_, kGroup1_, kEndpoint1_, kExpires1_));
   ASSERT_TRUE(SetEndpointInCache(kOrigin2_, kGroup2_, kEndpoint2_, kExpires1_));
   std::vector<ReportingEndpoint> candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin1_, kGroup1_);
+      cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(),
+                                                kOrigin1_, kGroup1_);
   ASSERT_EQ(2u, candidate_endpoints.size());
   for (const ReportingEndpoint& endpoint : candidate_endpoints) {
     EXPECT_EQ(kOrigin1_, endpoint.group_key.origin);
     EXPECT_EQ(kGroup1_, endpoint.group_key.group_name);
   }
 
-  candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin2_, kGroup1_);
+  candidate_endpoints = cache()->GetCandidateEndpointsForDelivery(
+      NetworkIsolationKey(), kOrigin2_, kGroup1_);
   ASSERT_EQ(1u, candidate_endpoints.size());
   EXPECT_EQ(kOrigin2_, candidate_endpoints[0].group_key.origin);
   EXPECT_EQ(kGroup1_, candidate_endpoints[0].group_key.group_name);
@@ -777,15 +779,16 @@
   ASSERT_LT(clock()->Now(), kExpires2_);
 
   std::vector<ReportingEndpoint> candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin1_, kGroup1_);
+      cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(),
+                                                kOrigin1_, kGroup1_);
   ASSERT_EQ(0u, candidate_endpoints.size());
 
-  candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin2_, kGroup1_);
+  candidate_endpoints = cache()->GetCandidateEndpointsForDelivery(
+      NetworkIsolationKey(), kOrigin2_, kGroup1_);
   ASSERT_EQ(0u, candidate_endpoints.size());
 
-  candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin2_, kGroup2_);
+  candidate_endpoints = cache()->GetCandidateEndpointsForDelivery(
+      NetworkIsolationKey(), kOrigin2_, kGroup2_);
   ASSERT_EQ(1u, candidate_endpoints.size());
   EXPECT_EQ(kEndpoint2_, candidate_endpoints[0].info.url);
 }
@@ -801,7 +804,8 @@
                                  kExpires1_, OriginSubdomains::EXCLUDE));
 
   std::vector<ReportingEndpoint> candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin, kGroup1_);
+      cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(), kOrigin,
+                                                kGroup1_);
   ASSERT_EQ(0u, candidate_endpoints.size());
 }
 
@@ -816,7 +820,8 @@
                                  kExpires1_, OriginSubdomains::EXCLUDE));
 
   std::vector<ReportingEndpoint> candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin, kGroup1_);
+      cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(), kOrigin,
+                                                kGroup1_);
   ASSERT_EQ(0u, candidate_endpoints.size());
 }
 
@@ -831,7 +836,8 @@
                                  kExpires1_, OriginSubdomains::INCLUDE));
 
   std::vector<ReportingEndpoint> candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin, kGroup1_);
+      cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(), kOrigin,
+                                                kGroup1_);
   ASSERT_EQ(1u, candidate_endpoints.size());
   EXPECT_EQ(kDifferentPortOrigin, candidate_endpoints[0].group_key.origin);
 }
@@ -847,7 +853,8 @@
                                  kExpires1_, OriginSubdomains::INCLUDE));
 
   std::vector<ReportingEndpoint> candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin, kGroup1_);
+      cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(), kOrigin,
+                                                kGroup1_);
   ASSERT_EQ(1u, candidate_endpoints.size());
   EXPECT_EQ(kSuperOrigin, candidate_endpoints[0].group_key.origin);
 }
@@ -865,7 +872,8 @@
                                  kExpires1_, OriginSubdomains::INCLUDE));
 
   std::vector<ReportingEndpoint> candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin, kGroup1_);
+      cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(), kOrigin,
+                                                kGroup1_);
   ASSERT_EQ(1u, candidate_endpoints.size());
   EXPECT_EQ(kOrigin, candidate_endpoints[0].group_key.origin);
 }
@@ -883,7 +891,8 @@
                                  kExpires1_, OriginSubdomains::INCLUDE));
 
   std::vector<ReportingEndpoint> candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin, kGroup1_);
+      cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(), kOrigin,
+                                                kGroup1_);
   ASSERT_EQ(1u, candidate_endpoints.size());
   EXPECT_EQ(kOrigin, candidate_endpoints[0].group_key.origin);
 }
@@ -904,7 +913,8 @@
                                  kExpires1_, OriginSubdomains::INCLUDE));
 
   std::vector<ReportingEndpoint> candidate_endpoints =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin, kGroup1_);
+      cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(), kOrigin,
+                                                kGroup1_);
   ASSERT_EQ(1u, candidate_endpoints.size());
   EXPECT_EQ(kSuperOrigin, candidate_endpoints[0].group_key.origin);
 }
@@ -1005,7 +1015,8 @@
 
   // Make the group expired (but not stale).
   clock()->SetNow(kExpires1_ - base::TimeDelta::FromMinutes(1));
-  cache()->GetCandidateEndpointsForDelivery(kOrigin1_, kGroup1_);
+  cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(), kOrigin1_,
+                                            kGroup1_);
   clock()->SetNow(kExpires1_ + base::TimeDelta::FromMinutes(1));
 
   // Insert one more endpoint in a different group (not expired); eviction
@@ -1054,7 +1065,7 @@
     EXPECT_TRUE(EndpointGroupExistsInCache(kOrigin1_, base::NumberToString(i),
                                            OriginSubdomains::DEFAULT));
     // Mark group used.
-    cache()->GetCandidateEndpointsForDelivery(kOrigin1_,
+    cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(), kOrigin1_,
                                               base::NumberToString(i));
     clock()->Advance(base::TimeDelta::FromMinutes(1));
   }
@@ -1098,7 +1109,8 @@
                                          OriginSubdomains::DEFAULT));
   // Count the number of endpoints remaining in kGroup2_.
   std::vector<ReportingEndpoint> endpoints_in_group =
-      cache()->GetCandidateEndpointsForDelivery(kOrigin1_, kGroup2_);
+      cache()->GetCandidateEndpointsForDelivery(NetworkIsolationKey(),
+                                                kOrigin1_, kGroup2_);
   EXPECT_EQ(1u, endpoints_in_group.size());
 }
 
diff --git a/net/reporting/reporting_context.cc b/net/reporting/reporting_context.cc
index b74f32d..b959f7fc 100644
--- a/net/reporting/reporting_context.cc
+++ b/net/reporting/reporting_context.cc
@@ -19,7 +19,6 @@
 #include "net/reporting/reporting_cache_observer.h"
 #include "net/reporting/reporting_delegate.h"
 #include "net/reporting/reporting_delivery_agent.h"
-#include "net/reporting/reporting_endpoint_manager.h"
 #include "net/reporting/reporting_garbage_collector.h"
 #include "net/reporting/reporting_network_change_observer.h"
 #include "net/reporting/reporting_policy.h"
@@ -104,8 +103,7 @@
       delegate_(std::move(delegate)),
       cache_(ReportingCache::Create(this)),
       store_(store),
-      endpoint_manager_(ReportingEndpointManager::Create(this, rand_callback)),
-      delivery_agent_(ReportingDeliveryAgent::Create(this)),
+      delivery_agent_(ReportingDeliveryAgent::Create(this, rand_callback)),
       garbage_collector_(ReportingGarbageCollector::Create(this)),
       network_change_observer_(ReportingNetworkChangeObserver::Create(this)) {}
 
diff --git a/net/reporting/reporting_context.h b/net/reporting/reporting_context.h
index b418868..e0bb4aa 100644
--- a/net/reporting/reporting_context.h
+++ b/net/reporting/reporting_context.h
@@ -25,7 +25,6 @@
 class ReportingCacheObserver;
 class ReportingDelegate;
 class ReportingDeliveryAgent;
-class ReportingEndpointManager;
 class ReportingGarbageCollector;
 class ReportingNetworkChangeObserver;
 class ReportingUploader;
@@ -51,9 +50,6 @@
   ReportingDelegate* delegate() { return delegate_.get(); }
   ReportingCache* cache() { return cache_.get(); }
   ReportingCache::PersistentReportingStore* store() { return store_; }
-  ReportingEndpointManager* endpoint_manager() {
-    return endpoint_manager_.get();
-  }
   ReportingDeliveryAgent* delivery_agent() { return delivery_agent_.get(); }
   ReportingGarbageCollector* garbage_collector() {
     return garbage_collector_.get();
@@ -97,11 +93,8 @@
 
   ReportingCache::PersistentReportingStore* const store_;
 
-  // |endpoint_manager_| must come after |tick_clock_| and |cache_|.
-  std::unique_ptr<ReportingEndpointManager> endpoint_manager_;
-
   // |delivery_agent_| must come after |tick_clock_|, |delegate_|, |uploader_|,
-  // |cache_|, and |endpoint_manager_|.
+  // and |cache_|.
   std::unique_ptr<ReportingDeliveryAgent> delivery_agent_;
 
   // |garbage_collector_| must come after |tick_clock_| and |cache_|.
diff --git a/net/reporting/reporting_delivery_agent.cc b/net/reporting/reporting_delivery_agent.cc
index 19e6b2e..0c64f3c 100644
--- a/net/reporting/reporting_delivery_agent.cc
+++ b/net/reporting/reporting_delivery_agent.cc
@@ -16,8 +16,10 @@
 #include "base/time/tick_clock.h"
 #include "base/timer/timer.h"
 #include "base/values.h"
+#include "net/base/network_isolation_key.h"
 #include "net/reporting/reporting_cache.h"
 #include "net/reporting/reporting_cache_observer.h"
+#include "net/reporting/reporting_context.h"
 #include "net/reporting/reporting_delegate.h"
 #include "net/reporting/reporting_endpoint_manager.h"
 #include "net/reporting/reporting_report.h"
@@ -54,8 +56,16 @@
 class ReportingDeliveryAgentImpl : public ReportingDeliveryAgent,
                                    public ReportingCacheObserver {
  public:
-  ReportingDeliveryAgentImpl(ReportingContext* context)
-      : context_(context), timer_(std::make_unique<base::OneShotTimer>()) {
+  ReportingDeliveryAgentImpl(ReportingContext* context,
+                             const RandIntCallback& rand_callback)
+      : context_(context),
+        timer_(std::make_unique<base::OneShotTimer>()),
+        endpoint_manager_(
+            ReportingEndpointManager::Create(&context->policy(),
+                                             &context->tick_clock(),
+                                             context->delegate(),
+                                             context->cache(),
+                                             rand_callback)) {
     context_->AddCacheObserver(this);
   }
 
@@ -171,8 +181,10 @@
       if (base::Contains(pending_origin_groups_, origin_group))
         continue;
 
+      // TODO(mmenke): Populate NetworkIsolationKey argument.
       const ReportingEndpoint endpoint =
-          endpoint_manager()->FindEndpointForDelivery(report_origin, group);
+          endpoint_manager_->FindEndpointForDelivery(NetworkIsolationKey(),
+                                                     report_origin, group);
       if (!endpoint) {
         // TODO(chlily): Remove reports for which there are no valid
         // delivery endpoints.
@@ -242,10 +254,14 @@
     if (outcome == ReportingUploader::Outcome::SUCCESS) {
       cache()->RemoveReports(delivery->reports,
                              ReportingReport::Outcome::DELIVERED);
-      endpoint_manager()->InformOfEndpointRequest(delivery->endpoint, true);
+      // TODO(mmenke): Populate NetworkIsolationKey argument.
+      endpoint_manager_->InformOfEndpointRequest(NetworkIsolationKey(),
+                                                 delivery->endpoint, true);
     } else {
       cache()->IncrementReportsAttempts(delivery->reports);
-      endpoint_manager()->InformOfEndpointRequest(delivery->endpoint, false);
+      // TODO(mmenke): Populate NetworkIsolationKey argument.
+      endpoint_manager_->InformOfEndpointRequest(NetworkIsolationKey(),
+                                                 delivery->endpoint, false);
     }
 
     if (outcome == ReportingUploader::Outcome::REMOVE_ENDPOINT)
@@ -264,9 +280,6 @@
   ReportingDelegate* delegate() { return context_->delegate(); }
   ReportingCache* cache() { return context_->cache(); }
   ReportingUploader* uploader() { return context_->uploader(); }
-  ReportingEndpointManager* endpoint_manager() {
-    return context_->endpoint_manager();
-  }
 
   ReportingContext* context_;
 
@@ -276,6 +289,8 @@
   // (Would be an unordered_set, but there's no hash on pair.)
   std::set<OriginGroup> pending_origin_groups_;
 
+  std::unique_ptr<ReportingEndpointManager> endpoint_manager_;
+
   base::WeakPtrFactory<ReportingDeliveryAgentImpl> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ReportingDeliveryAgentImpl);
@@ -285,8 +300,9 @@
 
 // static
 std::unique_ptr<ReportingDeliveryAgent> ReportingDeliveryAgent::Create(
-    ReportingContext* context) {
-  return std::make_unique<ReportingDeliveryAgentImpl>(context);
+    ReportingContext* context,
+    const RandIntCallback& rand_callback) {
+  return std::make_unique<ReportingDeliveryAgentImpl>(context, rand_callback);
 }
 
 ReportingDeliveryAgent::~ReportingDeliveryAgent() = default;
diff --git a/net/reporting/reporting_delivery_agent.h b/net/reporting/reporting_delivery_agent.h
index bd15443..b857fd1 100644
--- a/net/reporting/reporting_delivery_agent.h
+++ b/net/reporting/reporting_delivery_agent.h
@@ -9,6 +9,7 @@
 
 #include "base/macros.h"
 #include "net/base/net_export.h"
+#include "net/base/rand_callback.h"
 
 namespace base {
 class OneShotTimer;
@@ -51,7 +52,8 @@
  public:
   // Creates a ReportingDeliveryAgent. |context| must outlive the agent.
   static std::unique_ptr<ReportingDeliveryAgent> Create(
-      ReportingContext* context);
+      ReportingContext* context,
+      const RandIntCallback& rand_callback);
 
   virtual ~ReportingDeliveryAgent();
 
diff --git a/net/reporting/reporting_endpoint_manager.cc b/net/reporting/reporting_endpoint_manager.cc
index 8ed18fa..bd0d0e2 100644
--- a/net/reporting/reporting_endpoint_manager.cc
+++ b/net/reporting/reporting_endpoint_manager.cc
@@ -7,6 +7,7 @@
 #include <map>
 #include <set>
 #include <string>
+#include <utility>
 #include <vector>
 
 #include "base/logging.h"
@@ -15,6 +16,7 @@
 #include "base/stl_util.h"
 #include "base/time/tick_clock.h"
 #include "net/base/backoff_entry.h"
+#include "net/base/network_isolation_key.h"
 #include "net/base/rand_callback.h"
 #include "net/reporting/reporting_cache.h"
 #include "net/reporting/reporting_delegate.h"
@@ -29,19 +31,33 @@
 
 class ReportingEndpointManagerImpl : public ReportingEndpointManager {
  public:
-  ReportingEndpointManagerImpl(ReportingContext* context,
+  ReportingEndpointManagerImpl(const ReportingPolicy* policy,
+                               const base::TickClock* tick_clock,
+                               const ReportingDelegate* delegate,
+                               ReportingCache* cache,
                                const RandIntCallback& rand_callback)
-      : context_(context), rand_callback_(rand_callback) {}
+      : policy_(policy),
+        tick_clock_(tick_clock),
+        delegate_(delegate),
+        cache_(cache),
+        rand_callback_(rand_callback) {
+    DCHECK(policy);
+    DCHECK(tick_clock);
+    DCHECK(delegate);
+    DCHECK(cache);
+  }
 
   ~ReportingEndpointManagerImpl() override = default;
 
   const ReportingEndpoint FindEndpointForDelivery(
+      const NetworkIsolationKey& network_isolation_key,
       const url::Origin& origin,
       const std::string& group) override {
     // Get unexpired endpoints that apply to a delivery to |origin| and |group|.
     // May have been configured by a superdomain of |origin|.
     std::vector<ReportingEndpoint> endpoints =
-        cache()->GetCandidateEndpointsForDelivery(origin, group);
+        cache_->GetCandidateEndpointsForDelivery(network_isolation_key, origin,
+                                                 group);
 
     // Highest-priority endpoint(s) that are not expired, failing, or
     // forbidden for use by the ReportingDelegate.
@@ -50,12 +66,15 @@
     int total_weight = 0;
 
     for (const ReportingEndpoint endpoint : endpoints) {
-      if (base::Contains(endpoint_backoff_, endpoint.info.url) &&
-          endpoint_backoff_[endpoint.info.url]->ShouldRejectRequest()) {
+      auto endpoint_backoff_it = endpoint_backoff_.find(
+          EndpointBackoffKey(network_isolation_key, endpoint.info.url));
+      if (endpoint_backoff_it != endpoint_backoff_.end() &&
+          endpoint_backoff_it->second->ShouldRejectRequest()) {
         continue;
       }
-      if (!delegate()->CanUseClient(endpoint.group_key.origin,
-                                    endpoint.info.url)) {
+
+      if (!delegate_->CanUseClient(endpoint.group_key.origin,
+                                   endpoint.info.url)) {
         continue;
       }
 
@@ -101,21 +120,29 @@
     return ReportingEndpoint();
   }
 
-  void InformOfEndpointRequest(const GURL& endpoint, bool succeeded) override {
-    if (!base::Contains(endpoint_backoff_, endpoint)) {
-      endpoint_backoff_[endpoint] = std::make_unique<BackoffEntry>(
-          &policy().endpoint_backoff_policy, &tick_clock());
+  void InformOfEndpointRequest(const NetworkIsolationKey& network_isolation_key,
+                               const GURL& endpoint,
+                               bool succeeded) override {
+    EndpointBackoffKey endpoint_backoff_key(network_isolation_key, endpoint);
+    auto endpoint_backoff_it = endpoint_backoff_.find(endpoint_backoff_key);
+    if (endpoint_backoff_it == endpoint_backoff_.end()) {
+      endpoint_backoff_it =
+          endpoint_backoff_
+              .emplace(std::move(endpoint_backoff_key),
+                       std::make_unique<BackoffEntry>(
+                           &policy_->endpoint_backoff_policy, tick_clock_))
+              .first;
     }
-    endpoint_backoff_[endpoint]->InformOfRequest(succeeded);
+    endpoint_backoff_it->second->InformOfRequest(succeeded);
   }
 
  private:
-  const ReportingPolicy& policy() const { return context_->policy(); }
-  const base::TickClock& tick_clock() const { return context_->tick_clock(); }
-  ReportingDelegate* delegate() { return context_->delegate(); }
-  ReportingCache* cache() { return context_->cache(); }
+  using EndpointBackoffKey = std::pair<NetworkIsolationKey, GURL>;
 
-  ReportingContext* context_;
+  const ReportingPolicy* const policy_;
+  const base::TickClock* const tick_clock_;
+  const ReportingDelegate* const delegate_;
+  ReportingCache* const cache_;
 
   RandIntCallback rand_callback_;
 
@@ -124,7 +151,8 @@
   // to be cleared as well.
   // TODO(chlily): clear this data when endpoints are deleted to avoid unbounded
   // growth of this map.
-  std::map<GURL, std::unique_ptr<net::BackoffEntry>> endpoint_backoff_;
+  std::map<EndpointBackoffKey, std::unique_ptr<net::BackoffEntry>>
+      endpoint_backoff_;
 
   DISALLOW_COPY_AND_ASSIGN(ReportingEndpointManagerImpl);
 };
@@ -133,9 +161,13 @@
 
 // static
 std::unique_ptr<ReportingEndpointManager> ReportingEndpointManager::Create(
-    ReportingContext* context,
+    const ReportingPolicy* policy,
+    const base::TickClock* tick_clock,
+    const ReportingDelegate* delegate,
+    ReportingCache* cache,
     const RandIntCallback& rand_callback) {
-  return std::make_unique<ReportingEndpointManagerImpl>(context, rand_callback);
+  return std::make_unique<ReportingEndpointManagerImpl>(
+      policy, tick_clock, delegate, cache, rand_callback);
 }
 
 ReportingEndpointManager::~ReportingEndpointManager() = default;
diff --git a/net/reporting/reporting_endpoint_manager.h b/net/reporting/reporting_endpoint_manager.h
index fca35f1..84d49d0 100644
--- a/net/reporting/reporting_endpoint_manager.h
+++ b/net/reporting/reporting_endpoint_manager.h
@@ -11,26 +11,37 @@
 #include "base/macros.h"
 #include "net/base/net_export.h"
 #include "net/base/rand_callback.h"
-#include "net/reporting/reporting_context.h"
 
 class GURL;
 
+namespace base {
+class TickClock;
+}
+
 namespace url {
 class Origin;
 }  // namespace url
 
 namespace net {
 
+class NetworkIsolationKey;
+class ReportingCache;
+class ReportingDelegate;
 struct ReportingEndpoint;
+struct ReportingPolicy;
 
 // Keeps track of which endpoints are pending (have active delivery attempts to
 // them) or in exponential backoff after one or more failures, and chooses an
 // endpoint from an endpoint group to receive reports for an origin.
 class NET_EXPORT ReportingEndpointManager {
  public:
-  // |context| must outlive the ReportingEndpointManager.
+  // The ReportingEndpointManager must not be used after any of the objects
+  // passed to its constructor are destroyed.
   static std::unique_ptr<ReportingEndpointManager> Create(
-      ReportingContext* context,
+      const ReportingPolicy* policy,
+      const base::TickClock* tick_clock,
+      const ReportingDelegate* delegate,
+      ReportingCache* cache,
       const RandIntCallback& rand_callback);
 
   virtual ~ReportingEndpointManager();
@@ -43,13 +54,16 @@
   // If no suitable endpoint was found, returns an endpoint with is_valid()
   // false.
   virtual const ReportingEndpoint FindEndpointForDelivery(
+      const NetworkIsolationKey& network_isolation_key,
       const url::Origin& origin,
       const std::string& group) = 0;
 
   // Informs the EndpointManager of a successful or unsuccessful request made to
   // |endpoint| so it can manage exponential backoff of failing endpoints.
-  virtual void InformOfEndpointRequest(const GURL& endpoint,
-                                       bool succeeded) = 0;
+  virtual void InformOfEndpointRequest(
+      const NetworkIsolationKey& network_isolation_key,
+      const GURL& endpoint,
+      bool succeeded) = 0;
 };
 
 }  // namespace net
diff --git a/net/reporting/reporting_endpoint_manager_unittest.cc b/net/reporting/reporting_endpoint_manager_unittest.cc
index fd1361da..68801b4 100644
--- a/net/reporting/reporting_endpoint_manager_unittest.cc
+++ b/net/reporting/reporting_endpoint_manager_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/test/simple_test_tick_clock.h"
 #include "base/time/time.h"
 #include "net/base/backoff_entry.h"
+#include "net/base/network_isolation_key.h"
 #include "net/reporting/reporting_cache.h"
 #include "net/reporting/reporting_endpoint.h"
 #include "net/reporting/reporting_policy.h"
@@ -20,122 +21,282 @@
 namespace net {
 namespace {
 
-class ReportingEndpointManagerTest : public ReportingTestBase {
+class TestReportingCache : public ReportingCache {
  public:
-  ReportingEndpointManagerTest() {
-    ReportingPolicy policy;
-    policy.endpoint_backoff_policy.num_errors_to_ignore = 0;
-    policy.endpoint_backoff_policy.initial_delay_ms = 60000;
-    policy.endpoint_backoff_policy.multiply_factor = 2.0;
-    policy.endpoint_backoff_policy.jitter_factor = 0.0;
-    policy.endpoint_backoff_policy.maximum_backoff_ms = -1;
-    policy.endpoint_backoff_policy.entry_lifetime_ms = 0;
-    policy.endpoint_backoff_policy.always_use_initial_delay = false;
-    UsePolicy(policy);
+  class PersistentReportingStore;
+
+  // Tests using this class only use one origin/group.
+  TestReportingCache(const url::Origin& expected_origin,
+                     const std::string& expected_group)
+      : expected_origin_(expected_origin), expected_group_(expected_group) {}
+  ~TestReportingCache() override = default;
+
+  void SetEndpoint(const NetworkIsolationKey& network_isolation_key,
+                   const ReportingEndpoint& reporting_endpoint) {
+    reporting_endpoints_[network_isolation_key].push_back(reporting_endpoint);
+  }
+
+  // ReportingCache implementation:
+
+  std::vector<ReportingEndpoint> GetCandidateEndpointsForDelivery(
+      const NetworkIsolationKey& network_isolation_key,
+      const url::Origin& origin,
+      const std::string& group_name) override {
+    EXPECT_EQ(expected_origin_, origin);
+    EXPECT_EQ(expected_group_, group_name);
+    return reporting_endpoints_[network_isolation_key];
+  }
+
+  // Everything below is NOTREACHED.
+  void AddReport(const GURL& url,
+                 const std::string& user_agent,
+                 const std::string& group_name,
+                 const std::string& type,
+                 std::unique_ptr<const base::Value> body,
+                 int depth,
+                 base::TimeTicks queued,
+                 int attempts) override {
+    NOTREACHED();
+  }
+  void GetReports(
+      std::vector<const ReportingReport*>* reports_out) const override {
+    NOTREACHED();
+  }
+  base::Value GetReportsAsValue() const override {
+    NOTREACHED();
+    return base::Value();
+  }
+  void GetNonpendingReports(
+      std::vector<const ReportingReport*>* reports_out) const override {
+    NOTREACHED();
+  }
+  void SetReportsPending(
+      const std::vector<const ReportingReport*>& reports) override {
+    NOTREACHED();
+  }
+  void ClearReportsPending(
+      const std::vector<const ReportingReport*>& reports) override {
+    NOTREACHED();
+  }
+  void IncrementReportsAttempts(
+      const std::vector<const ReportingReport*>& reports) override {
+    NOTREACHED();
+  }
+  void IncrementEndpointDeliveries(const url::Origin& origin,
+                                   const std::string& group_name,
+                                   const GURL& url,
+                                   int reports_delivered,
+                                   bool successful) override {
+    NOTREACHED();
+  }
+  void RemoveReports(const std::vector<const ReportingReport*>& reports,
+                     ReportingReport::Outcome outcome) override {
+    NOTREACHED();
+  }
+  void RemoveAllReports(ReportingReport::Outcome outcome) override {
+    NOTREACHED();
+  }
+  size_t GetFullReportCountForTesting() const override {
+    NOTREACHED();
+    return 0;
+  }
+  bool IsReportPendingForTesting(const ReportingReport* report) const override {
+    NOTREACHED();
+    return false;
+  }
+  bool IsReportDoomedForTesting(const ReportingReport* report) const override {
+    NOTREACHED();
+    return false;
+  }
+  void OnParsedHeader(
+      const url::Origin& origin,
+      std::vector<ReportingEndpointGroup> parsed_header) override {
+    NOTREACHED();
+  }
+  std::vector<url::Origin> GetAllOrigins() const override {
+    NOTREACHED();
+    return std::vector<url::Origin>();
+  }
+  void RemoveClient(const url::Origin& origin) override { NOTREACHED(); }
+  void RemoveAllClients() override { NOTREACHED(); }
+  void RemoveEndpointGroup(const url::Origin& origin,
+                           const std::string& group_name) override {
+    NOTREACHED();
+  }
+  void RemoveEndpointsForUrl(const GURL& url) override { NOTREACHED(); }
+  void AddClientsLoadedFromStore(
+      std::vector<ReportingEndpoint> loaded_endpoints,
+      std::vector<CachedReportingEndpointGroup> loaded_endpoint_groups)
+      override {
+    NOTREACHED();
+  }
+  base::Value GetClientsAsValue() const override {
+    NOTREACHED();
+    return base::Value();
+  }
+  size_t GetEndpointCount() const override {
+    NOTREACHED();
+    return 0;
+  }
+  void Flush() override { NOTREACHED(); }
+  ReportingEndpoint GetEndpointForTesting(const url::Origin& origin,
+                                          const std::string& group_name,
+                                          const GURL& url) const override {
+    NOTREACHED();
+    return ReportingEndpoint();
+  }
+  bool EndpointGroupExistsForTesting(const url::Origin& origin,
+                                     const std::string& group_name,
+                                     OriginSubdomains include_subdomains,
+                                     base::Time expires) const override {
+    NOTREACHED();
+    return false;
+  }
+  size_t GetEndpointGroupCountForTesting() const override {
+    NOTREACHED();
+    return 0;
+  }
+  void SetEndpointForTesting(const url::Origin& origin,
+                             const std::string& group_name,
+                             const GURL& url,
+                             OriginSubdomains include_subdomains,
+                             base::Time expires,
+                             int priority,
+                             int weight) override {
+    NOTREACHED();
+  }
+
+ private:
+  const url::Origin expected_origin_;
+  const std::string expected_group_;
+
+  std::map<NetworkIsolationKey, std::vector<ReportingEndpoint>>
+      reporting_endpoints_;
+
+  DISALLOW_COPY_AND_ASSIGN(TestReportingCache);
+};
+
+class ReportingEndpointManagerTest : public testing::Test {
+ public:
+  ReportingEndpointManagerTest() : cache_(kOrigin, kGroup) {
+    policy_.endpoint_backoff_policy.num_errors_to_ignore = 0;
+    policy_.endpoint_backoff_policy.initial_delay_ms = 60000;
+    policy_.endpoint_backoff_policy.multiply_factor = 2.0;
+    policy_.endpoint_backoff_policy.jitter_factor = 0.0;
+    policy_.endpoint_backoff_policy.maximum_backoff_ms = -1;
+    policy_.endpoint_backoff_policy.entry_lifetime_ms = 0;
+    policy_.endpoint_backoff_policy.always_use_initial_delay = false;
+
+    clock_.SetNowTicks(base::TimeTicks());
+
+    endpoint_manager_ = ReportingEndpointManager::Create(
+        &policy_, &clock_, &delegate_, &cache_, TestReportingRandIntCallback());
   }
 
  protected:
   void SetEndpoint(
       const GURL& endpoint,
       int priority = ReportingEndpoint::EndpointInfo::kDefaultPriority,
-      int weight = ReportingEndpoint::EndpointInfo::kDefaultWeight) {
-    ASSERT_TRUE(
-        SetEndpointInCache(kOrigin_, kGroup_, endpoint,
-                           base::Time::Now() + base::TimeDelta::FromDays(1),
-                           OriginSubdomains::DEFAULT, priority, weight));
+      int weight = ReportingEndpoint::EndpointInfo::kDefaultWeight,
+      const NetworkIsolationKey& network_isolation_key =
+          NetworkIsolationKey()) {
+    cache_.SetEndpoint(network_isolation_key,
+                       ReportingEndpoint(kOrigin, kGroup,
+                                         ReportingEndpoint::EndpointInfo{
+                                             endpoint, priority, weight}));
   }
 
-  const url::Origin kOrigin_ = url::Origin::Create(GURL("https://origin/"));
-  const GURL kEndpoint_ = GURL("https://endpoint/");
-  const std::string kGroup_ = "group";
+  const url::Origin kOrigin = url::Origin::Create(GURL("https://origin/"));
+  const std::string kGroup = "group";
+  const GURL kEndpoint = GURL("https://endpoint/");
+
+  ReportingPolicy policy_;
+  base::SimpleTestTickClock clock_;
+  TestReportingDelegate delegate_;
+  TestReportingCache cache_;
+  std::unique_ptr<ReportingEndpointManager> endpoint_manager_;
 };
 
 TEST_F(ReportingEndpointManagerTest, NoEndpoint) {
-  ReportingEndpoint endpoint =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   EXPECT_FALSE(endpoint);
 }
 
 TEST_F(ReportingEndpointManagerTest, Endpoint) {
-  SetEndpoint(kEndpoint_);
+  SetEndpoint(kEndpoint);
 
-  ReportingEndpoint endpoint =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   ASSERT_TRUE(endpoint);
-  EXPECT_EQ(kEndpoint_, endpoint.info.url);
-}
-
-TEST_F(ReportingEndpointManagerTest, ExpiredEndpoint) {
-  SetEndpoint(kEndpoint_);
-
-  // Default expiration is "tomorrow", so make sure we're past that.
-  clock()->Advance(base::TimeDelta::FromDays(2));
-
-  ReportingEndpoint endpoint =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
-  EXPECT_FALSE(endpoint);
+  EXPECT_EQ(kEndpoint, endpoint.info.url);
 }
 
 TEST_F(ReportingEndpointManagerTest, BackedOffEndpoint) {
-  ASSERT_EQ(2.0, policy().endpoint_backoff_policy.multiply_factor);
+  ASSERT_EQ(2.0, policy_.endpoint_backoff_policy.multiply_factor);
 
   base::TimeDelta initial_delay = base::TimeDelta::FromMilliseconds(
-      policy().endpoint_backoff_policy.initial_delay_ms);
+      policy_.endpoint_backoff_policy.initial_delay_ms);
 
-  SetEndpoint(kEndpoint_);
+  SetEndpoint(kEndpoint);
 
-  endpoint_manager()->InformOfEndpointRequest(kEndpoint_, false);
+  endpoint_manager_->InformOfEndpointRequest(NetworkIsolationKey(), kEndpoint,
+                                             false);
 
   // After one failure, endpoint is in exponential backoff.
-  ReportingEndpoint endpoint =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   EXPECT_FALSE(endpoint);
 
   // After initial delay, endpoint is usable again.
-  tick_clock()->Advance(initial_delay);
+  clock_.Advance(initial_delay);
 
-  ReportingEndpoint endpoint2 =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  ReportingEndpoint endpoint2 = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   ASSERT_TRUE(endpoint2);
-  EXPECT_EQ(kEndpoint_, endpoint2.info.url);
+  EXPECT_EQ(kEndpoint, endpoint2.info.url);
 
-  endpoint_manager()->InformOfEndpointRequest(kEndpoint_, false);
+  endpoint_manager_->InformOfEndpointRequest(NetworkIsolationKey(), kEndpoint,
+                                             false);
 
   // After a second failure, endpoint is backed off again.
-  ReportingEndpoint endpoint3 =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  ReportingEndpoint endpoint3 = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   EXPECT_FALSE(endpoint3);
 
-  tick_clock()->Advance(initial_delay);
+  clock_.Advance(initial_delay);
 
   // Next backoff is longer -- 2x the first -- so endpoint isn't usable yet.
-  ReportingEndpoint endpoint4 =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  ReportingEndpoint endpoint4 = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   EXPECT_FALSE(endpoint4);
 
-  tick_clock()->Advance(initial_delay);
+  clock_.Advance(initial_delay);
 
   // After 2x the initial delay, the endpoint is usable again.
-  ReportingEndpoint endpoint5 =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  ReportingEndpoint endpoint5 = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   ASSERT_TRUE(endpoint5);
-  EXPECT_EQ(kEndpoint_, endpoint5.info.url);
+  EXPECT_EQ(kEndpoint, endpoint5.info.url);
 
-  endpoint_manager()->InformOfEndpointRequest(kEndpoint_, true);
-  endpoint_manager()->InformOfEndpointRequest(kEndpoint_, true);
+  endpoint_manager_->InformOfEndpointRequest(NetworkIsolationKey(), kEndpoint,
+                                             true);
+  endpoint_manager_->InformOfEndpointRequest(NetworkIsolationKey(), kEndpoint,
+                                             true);
 
   // Two more successful requests should reset the backoff to the initial delay
   // again.
-  endpoint_manager()->InformOfEndpointRequest(kEndpoint_, false);
+  endpoint_manager_->InformOfEndpointRequest(NetworkIsolationKey(), kEndpoint,
+                                             false);
 
-  ReportingEndpoint endpoint6 =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  ReportingEndpoint endpoint6 = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   EXPECT_FALSE(endpoint6);
 
-  tick_clock()->Advance(initial_delay);
+  clock_.Advance(initial_delay);
 
-  ReportingEndpoint endpoint7 =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  ReportingEndpoint endpoint7 = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   EXPECT_TRUE(endpoint7);
 }
 
@@ -153,8 +314,8 @@
   bool endpoint2_seen = false;
 
   for (int i = 0; i < kMaxAttempts; ++i) {
-    ReportingEndpoint endpoint =
-        endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+    ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+        NetworkIsolationKey(), kOrigin, kGroup);
     ASSERT_TRUE(endpoint);
     ASSERT_TRUE(endpoint.info.url == kEndpoint1 ||
                 endpoint.info.url == kEndpoint2);
@@ -181,25 +342,26 @@
   SetEndpoint(kBackupEndpoint, 20 /* priority */,
               ReportingEndpoint::EndpointInfo::kDefaultWeight);
 
-  ReportingEndpoint endpoint =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   ASSERT_TRUE(endpoint);
   EXPECT_EQ(kPrimaryEndpoint, endpoint.info.url);
 
   // The backoff policy we set up in the constructor means that a single failed
   // upload will take the primary endpoint out of contention.  This should cause
   // us to choose the backend endpoint.
-  endpoint_manager()->InformOfEndpointRequest(kPrimaryEndpoint, false);
-  ReportingEndpoint endpoint2 =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  endpoint_manager_->InformOfEndpointRequest(NetworkIsolationKey(),
+                                             kPrimaryEndpoint, false);
+  ReportingEndpoint endpoint2 = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   ASSERT_TRUE(endpoint2);
   EXPECT_EQ(kBackupEndpoint, endpoint2.info.url);
 
   // Advance the current time far enough to clear out the primary endpoint's
   // backoff clock.  This should bring the primary endpoint back into play.
-  tick_clock()->Advance(base::TimeDelta::FromMinutes(2));
-  ReportingEndpoint endpoint3 =
-      endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+  clock_.Advance(base::TimeDelta::FromMinutes(2));
+  ReportingEndpoint endpoint3 = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
   ASSERT_TRUE(endpoint3);
   EXPECT_EQ(kPrimaryEndpoint, endpoint3.info.url);
 }
@@ -224,8 +386,8 @@
   int endpoint2_count = 0;
 
   for (int i = 0; i < kTotalEndpointWeight; ++i) {
-    ReportingEndpoint endpoint =
-        endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+    ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+        NetworkIsolationKey(), kOrigin, kGroup);
     ASSERT_TRUE(endpoint);
     ASSERT_TRUE(endpoint.info.url == kEndpoint1 ||
                 endpoint.info.url == kEndpoint2);
@@ -253,8 +415,8 @@
   int endpoint2_count = 0;
 
   for (int i = 0; i < 10; ++i) {
-    ReportingEndpoint endpoint =
-        endpoint_manager()->FindEndpointForDelivery(kOrigin_, kGroup_);
+    ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+        NetworkIsolationKey(), kOrigin, kGroup);
     ASSERT_TRUE(endpoint);
     ASSERT_TRUE(endpoint.info.url == kEndpoint1 ||
                 endpoint.info.url == kEndpoint2);
@@ -269,5 +431,106 @@
   EXPECT_EQ(5, endpoint2_count);
 }
 
+// Check that ReportingEndpointManager distinguishes NetworkIsolationKeys.
+TEST_F(ReportingEndpointManagerTest, NetworkIsolationKey) {
+  const url::Origin kOrigin2 = url::Origin::Create(GURL("https://origin2/"));
+
+  const NetworkIsolationKey kNetworkIsolationKey1(kOrigin, kOrigin);
+  const NetworkIsolationKey kNetworkIsolationKey2(kOrigin2, kOrigin2);
+
+  // An Endpoint set for kNetworkIsolationKey1 should not affect
+  // kNetworkIsolationKey2.
+  SetEndpoint(kEndpoint, ReportingEndpoint::EndpointInfo::kDefaultPriority,
+              0 /* weight */, kNetworkIsolationKey1);
+  ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+      kNetworkIsolationKey1, kOrigin, kGroup);
+  ASSERT_TRUE(endpoint);
+  EXPECT_EQ(kEndpoint, endpoint.info.url);
+  EXPECT_FALSE(endpoint_manager_->FindEndpointForDelivery(kNetworkIsolationKey2,
+                                                          kOrigin, kGroup));
+  EXPECT_FALSE(endpoint_manager_->FindEndpointForDelivery(NetworkIsolationKey(),
+                                                          kOrigin, kGroup));
+
+  // Set the same Endpoint for kNetworkIsolationKey2, so both should be
+  // reporting to the same URL.
+  SetEndpoint(kEndpoint, ReportingEndpoint::EndpointInfo::kDefaultPriority,
+              0 /* weight */, kNetworkIsolationKey2);
+  endpoint = endpoint_manager_->FindEndpointForDelivery(kNetworkIsolationKey1,
+                                                        kOrigin, kGroup);
+  ASSERT_TRUE(endpoint);
+  EXPECT_EQ(kEndpoint, endpoint.info.url);
+  endpoint = endpoint_manager_->FindEndpointForDelivery(kNetworkIsolationKey2,
+                                                        kOrigin, kGroup);
+  ASSERT_TRUE(endpoint);
+  EXPECT_EQ(kEndpoint, endpoint.info.url);
+  EXPECT_FALSE(endpoint_manager_->FindEndpointForDelivery(NetworkIsolationKey(),
+                                                          kOrigin, kGroup));
+
+  // An error reporting to that URL in the context of kNetworkIsolationKey1
+  // should only affect the Endpoint retrieved in the context of
+  // kNetworkIsolationKey1.
+  endpoint_manager_->InformOfEndpointRequest(kNetworkIsolationKey1, kEndpoint,
+                                             false);
+  EXPECT_FALSE(endpoint_manager_->FindEndpointForDelivery(kNetworkIsolationKey1,
+                                                          kOrigin, kGroup));
+  endpoint = endpoint_manager_->FindEndpointForDelivery(kNetworkIsolationKey2,
+                                                        kOrigin, kGroup);
+  ASSERT_TRUE(endpoint);
+  EXPECT_EQ(kEndpoint, endpoint.info.url);
+  EXPECT_FALSE(endpoint_manager_->FindEndpointForDelivery(NetworkIsolationKey(),
+                                                          kOrigin, kGroup));
+}
+
+TEST_F(ReportingEndpointManagerTest, NetworkIsolationKeyWithMultipleEndpoints) {
+  const url::Origin kOrigin2 = url::Origin::Create(GURL("https://origin2/"));
+
+  const NetworkIsolationKey kNetworkIsolationKey1(kOrigin, kOrigin);
+  const NetworkIsolationKey kNetworkIsolationKey2(kOrigin2, kOrigin2);
+
+  const GURL kEndpoint1("https://endpoint1/");
+  const GURL kEndpoint2("https://endpoint2/");
+  const GURL kEndpoint3("https://endpoint3/");
+  const int kMaxAttempts = 20;
+
+  // Add two Endpoints for kNetworkIsolationKey1, and a different one for
+  // kNetworkIsolationKey2.
+  SetEndpoint(kEndpoint1, ReportingEndpoint::EndpointInfo::kDefaultPriority,
+              ReportingEndpoint::EndpointInfo::kDefaultWeight,
+              kNetworkIsolationKey1);
+  SetEndpoint(kEndpoint2, ReportingEndpoint::EndpointInfo::kDefaultPriority,
+              ReportingEndpoint::EndpointInfo::kDefaultWeight,
+              kNetworkIsolationKey1);
+  SetEndpoint(kEndpoint3, ReportingEndpoint::EndpointInfo::kDefaultPriority,
+              ReportingEndpoint::EndpointInfo::kDefaultWeight,
+              kNetworkIsolationKey2);
+
+  bool endpoint1_seen = false;
+  bool endpoint2_seen = false;
+
+  // Make sure that calling FindEndpointForDelivery() with kNetworkIsolationKey1
+  // can return both of its endpoints, but not kNetworkIsolationKey2's endpoint.
+  for (int i = 0; i < kMaxAttempts; ++i) {
+    ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+        kNetworkIsolationKey1, kOrigin, kGroup);
+    ASSERT_TRUE(endpoint);
+    ASSERT_TRUE(endpoint.info.url == kEndpoint1 ||
+                endpoint.info.url == kEndpoint2);
+
+    if (endpoint.info.url == kEndpoint1) {
+      endpoint1_seen = true;
+    } else if (endpoint.info.url == kEndpoint2) {
+      endpoint2_seen = true;
+    }
+  }
+
+  EXPECT_TRUE(endpoint1_seen);
+  EXPECT_TRUE(endpoint2_seen);
+
+  ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+      kNetworkIsolationKey2, kOrigin, kGroup);
+  ASSERT_TRUE(endpoint);
+  EXPECT_EQ(kEndpoint3, endpoint.info.url);
+}
+
 }  // namespace
 }  // namespace net
diff --git a/net/reporting/reporting_test_util.cc b/net/reporting/reporting_test_util.cc
index 301f163..5b36fefb 100644
--- a/net/reporting/reporting_test_util.cc
+++ b/net/reporting/reporting_test_util.cc
@@ -16,7 +16,6 @@
 #include "base/test/simple_test_clock.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/timer/mock_timer.h"
-#include "net/base/rand_callback.h"
 #include "net/reporting/reporting_cache.h"
 #include "net/reporting/reporting_context.h"
 #include "net/reporting/reporting_delegate.h"
@@ -25,7 +24,6 @@
 #include "net/reporting/reporting_garbage_collector.h"
 #include "net/reporting/reporting_policy.h"
 #include "net/reporting/reporting_uploader.h"
-#include "net/url_request/url_request_test_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 #include "url/origin.h"
@@ -85,6 +83,15 @@
 
 }  // namespace
 
+RandIntCallback TestReportingRandIntCallback() {
+  return base::BindRepeating(
+      [](int* rand_counter, int min, int max) {
+        DCHECK_LE(min, max);
+        return min + ((*rand_counter)++ % (max - min + 1));
+      },
+      base::Owned(std::make_unique<int>(0)));
+}
+
 TestReportingUploader::PendingUpload::~PendingUpload() = default;
 TestReportingUploader::PendingUpload::PendingUpload() = default;
 
@@ -109,8 +116,7 @@
   return pending_uploads_.size();
 }
 
-TestReportingDelegate::TestReportingDelegate()
-    : test_request_context_(std::make_unique<TestURLRequestContext>()) {}
+TestReportingDelegate::TestReportingDelegate() = default;
 
 TestReportingDelegate::~TestReportingDelegate() = default;
 
@@ -157,16 +163,13 @@
     const base::TickClock* tick_clock,
     const ReportingPolicy& policy,
     ReportingCache::PersistentReportingStore* store)
-    : ReportingContext(
-          policy,
-          clock,
-          tick_clock,
-          base::BindRepeating(&TestReportingContext::RandIntCallback,
-                              base::Unretained(this)),
-          std::make_unique<TestReportingUploader>(),
-          std::make_unique<TestReportingDelegate>(),
-          store),
-      rand_counter_(0),
+    : ReportingContext(policy,
+                       clock,
+                       tick_clock,
+                       TestReportingRandIntCallback(),
+                       std::make_unique<TestReportingUploader>(),
+                       std::make_unique<TestReportingDelegate>(),
+                       store),
       delivery_timer_(new base::MockOneShotTimer()),
       garbage_collection_timer_(new base::MockOneShotTimer()) {
   garbage_collector()->SetTimerForTesting(
@@ -179,11 +182,6 @@
   garbage_collection_timer_ = nullptr;
 }
 
-int TestReportingContext::RandIntCallback(int min, int max) {
-  DCHECK_LE(min, max);
-  return min + (rand_counter_++ % (max - min + 1));
-}
-
 ReportingTestBase::ReportingTestBase() : store_(nullptr) {
   // For tests, disable jitter.
   ReportingPolicy policy;
diff --git a/net/reporting/reporting_test_util.h b/net/reporting/reporting_test_util.h
index c0fd86e..e75a721 100644
--- a/net/reporting/reporting_test_util.h
+++ b/net/reporting/reporting_test_util.h
@@ -13,6 +13,7 @@
 #include "base/macros.h"
 #include "base/test/simple_test_clock.h"
 #include "base/test/simple_test_tick_clock.h"
+#include "net/base/rand_callback.h"
 #include "net/reporting/reporting_cache.h"
 #include "net/reporting/reporting_context.h"
 #include "net/reporting/reporting_delegate.h"
@@ -38,7 +39,6 @@
 
 struct ReportingEndpoint;
 class ReportingGarbageCollector;
-class TestURLRequestContext;
 
 // A matcher for ReportingReports, which checks that the url of the report is
 // the given url.
@@ -49,6 +49,8 @@
   return arg.url == url;
 }
 
+RandIntCallback TestReportingRandIntCallback();
+
 // A test implementation of ReportingUploader that holds uploads for tests to
 // examine and complete with a specified outcome.
 class TestReportingUploader : public ReportingUploader {
@@ -128,7 +130,6 @@
                     const GURL& endpoint) const override;
 
  private:
-  std::unique_ptr<TestURLRequestContext> test_request_context_;
   bool disallow_report_uploads_ = false;
   bool pause_permissions_check_ = false;
 
@@ -162,10 +163,6 @@
   }
 
  private:
-  int RandIntCallback(int min, int max);
-
-  int rand_counter_;
-
   // Owned by the DeliveryAgent and GarbageCollector, respectively, but
   // referenced here to preserve type:
 
@@ -250,9 +247,6 @@
   TestReportingUploader* uploader() { return context_->test_uploader(); }
 
   ReportingCache* cache() { return context_->cache(); }
-  ReportingEndpointManager* endpoint_manager() {
-    return context_->endpoint_manager();
-  }
   ReportingDeliveryAgent* delivery_agent() {
     return context_->delivery_agent();
   }
diff --git a/net/server/http_server_unittest.cc b/net/server/http_server_unittest.cc
index 7fefb5f..7f404ad 100644
--- a/net/server/http_server_unittest.cc
+++ b/net/server/http_server_unittest.cc
@@ -44,11 +44,6 @@
 #include "net/test/gtest_util.h"
 #include "net/test/test_with_task_environment.h"
 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
-#include "net/url_request/url_fetcher.h"
-#include "net/url_request/url_fetcher_delegate.h"
-#include "net/url_request/url_request_context.h"
-#include "net/url_request/url_request_context_getter.h"
-#include "net/url_request/url_request_test_util.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -451,37 +446,19 @@
 }
 
 TEST_F(HttpServerTest, RequestWithTooLargeBody) {
-  class TestURLFetcherDelegate : public URLFetcherDelegate {
-   public:
-    TestURLFetcherDelegate(const base::Closure& quit_loop_func)
-        : quit_loop_func_(quit_loop_func) {}
-    ~TestURLFetcherDelegate() override = default;
-
-    void OnURLFetchComplete(const URLFetcher* source) override {
-      EXPECT_EQ(HTTP_INTERNAL_SERVER_ERROR, source->GetResponseCode());
-      quit_loop_func_.Run();
-    }
-
-   private:
-    base::Closure quit_loop_func_;
-  };
-
-  base::RunLoop run_loop;
-  TestURLFetcherDelegate delegate(run_loop.QuitClosure());
-
-  scoped_refptr<URLRequestContextGetter> request_context_getter(
-      new TestURLRequestContextGetter(base::ThreadTaskRunnerHandle::Get()));
-  std::unique_ptr<URLFetcher> fetcher = URLFetcher::Create(
-      GURL(base::StringPrintf("http://127.0.0.1:%d/test",
-                              server_address_.port())),
-      URLFetcher::GET, &delegate, TRAFFIC_ANNOTATION_FOR_TESTS);
-  fetcher->SetRequestContext(request_context_getter.get());
-  fetcher->AddExtraRequestHeader(
-      base::StringPrintf("content-length:%d", 1 << 30));
-  fetcher->Start();
-
-  run_loop.Run();
-  ASSERT_EQ(0u, requests_.size());
+  TestHttpClient client;
+  ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+  client.Send(
+      "GET /test HTTP/1.1\r\n"
+      "Content-Length: 1073741824\r\n\r\n");
+  std::string response;
+  ASSERT_TRUE(client.ReadResponse(&response));
+  EXPECT_EQ(
+      "HTTP/1.1 500 Internal Server Error\r\n"
+      "Content-Length:42\r\n"
+      "Content-Type:text/html\r\n\r\n"
+      "request content-length too big or unknown.",
+      response);
 }
 
 TEST_F(HttpServerTest, Send200) {
diff --git a/net/tools/cert_verify_tool/cert_verify_tool.cc b/net/tools/cert_verify_tool/cert_verify_tool.cc
index 9ae5ddf..b707f70 100644
--- a/net/tools/cert_verify_tool/cert_verify_tool.cc
+++ b/net/tools/cert_verify_tool/cert_verify_tool.cc
@@ -199,6 +199,7 @@
     base::StringPiece impl_name,
     scoped_refptr<net::CertNetFetcher> cert_net_fetcher,
     bool use_system_roots) {
+#if !defined(OS_FUCHSIA)
   if (impl_name == "platform") {
     if (!use_system_roots) {
       std::cerr << "WARNING: platform verifier not supported with "
@@ -207,9 +208,10 @@
     }
 
     return std::make_unique<CertVerifyImplUsingProc>(
-        "CertVerifyProc (default)",
-        net::CertVerifyProc::CreateDefault(std::move(cert_net_fetcher)));
+        "CertVerifyProc (system)", net::CertVerifyProc::CreateSystemVerifyProc(
+                                       std::move(cert_net_fetcher)));
   }
+#endif
 
   if (impl_name == "builtin") {
     return std::make_unique<CertVerifyImplUsingProc>(
@@ -410,8 +412,13 @@
   // Parse the ordered list of CertVerifyImpl passed via command line flags into
   // |impls|.
   std::string impls_str = command_line.GetSwitchValueASCII("impls");
-  if (impls_str.empty())
-    impls_str = "platform,builtin,pathbuilder";  // Default value.
+  if (impls_str.empty()) {
+    // Default value.
+#if !defined(OS_FUCHSIA)
+    impls_str = "platform,";
+#endif
+    impls_str += "builtin,pathbuilder";
+  }
 
   std::vector<std::string> impl_names = base::SplitString(
       impls_str, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
diff --git a/remoting/android/java/src/org/chromium/chromoting/jni/ConnectionListener.java b/remoting/android/java/src/org/chromium/chromoting/jni/ConnectionListener.java
index e1b27db..b0accd6 100644
--- a/remoting/android/java/src/org/chromium/chromoting/jni/ConnectionListener.java
+++ b/remoting/android/java/src/org/chromium/chromoting/jni/ConnectionListener.java
@@ -73,7 +73,7 @@
             case Error.SIGNALING_ERROR:
                 return R.string.error_p2p_failure;
             case Error.SIGNALING_TIMEOUT:
-                return R.string.error_p2p_failure;
+                return R.string.error_host_is_offline;
             case Error.HOST_OVERLOAD:
                 return R.string.error_host_overload;
             case Error.MAX_SESSION_LENGTH:
diff --git a/remoting/ios/app/client_connection_view_controller.mm b/remoting/ios/app/client_connection_view_controller.mm
index 070f1f2..16eb487 100644
--- a/remoting/ios/app/client_connection_view_controller.mm
+++ b/remoting/ios/app/client_connection_view_controller.mm
@@ -552,7 +552,7 @@
       message = l10n_util::GetNSString(IDS_ERROR_P2P_FAILURE);
       break;
     case SessionErrorSignalingTimeout:
-      message = l10n_util::GetNSString(IDS_ERROR_SERVICE_UNAVAILABLE);
+      message = l10n_util::GetNSString(IDS_ERROR_HOST_IS_OFFLINE);
       break;
     case SessionErrorHostOverload:
       message = l10n_util::GetNSString(IDS_ERROR_HOST_OVERLOAD);
diff --git a/services/network/cert_verifier_with_trust_anchors_unittest.cc b/services/network/cert_verifier_with_trust_anchors_unittest.cc
index 37dbd9f4..dfcf766 100644
--- a/services/network/cert_verifier_with_trust_anchors_unittest.cc
+++ b/services/network/cert_verifier_with_trust_anchors_unittest.cc
@@ -18,6 +18,7 @@
 #include "crypto/scoped_test_nss_chromeos_user.h"
 #include "net/base/test_completion_callback.h"
 #include "net/cert/cert_net_fetcher.h"
+#include "net/cert/cert_verify_proc_builtin.h"
 #include "net/cert/cert_verify_result.h"
 #include "net/cert/nss_cert_database_chromeos.h"
 #include "net/cert/x509_certificate.h"
@@ -26,11 +27,12 @@
 #include "net/test/cert_test_util.h"
 #include "net/test/test_data_directory.h"
 #include "services/network/cert_verify_proc_chromeos.h"
+#include "services/network/system_trust_store_provider_chromeos.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace network {
 
-class CertVerifierWithTrustAnchorsTest : public testing::Test {
+class CertVerifierWithTrustAnchorsTest : public testing::TestWithParam<bool> {
  public:
   CertVerifierWithTrustAnchorsTest()
       : trust_anchor_used_(false),
@@ -53,8 +55,16 @@
         std::make_unique<CertVerifierWithTrustAnchors>(base::BindRepeating(
             &CertVerifierWithTrustAnchorsTest::OnTrustAnchorUsed,
             base::Unretained(this)));
-    cert_verify_proc_ = base::MakeRefCounted<network::CertVerifyProcChromeOS>(
-        crypto::GetPublicSlotForChromeOSUser(test_nss_user_.username_hash()));
+    if (GetParam()) {
+      cert_verify_proc_ = net::CreateCertVerifyProcBuiltin(
+          /*net_fetcher=*/nullptr,
+          std::make_unique<SystemTrustStoreProviderChromeOS>(
+              crypto::GetPublicSlotForChromeOSUser(
+                  test_nss_user_.username_hash())));
+    } else {
+      cert_verify_proc_ = base::MakeRefCounted<network::CertVerifyProcChromeOS>(
+          crypto::GetPublicSlotForChromeOSUser(test_nss_user_.username_hash()));
+    }
     cert_verifier_->InitializeOnIOThread(cert_verify_proc_);
 
     test_ca_cert_ = LoadCertificate("root_ca_cert.pem", net::CA_CERT);
@@ -135,7 +145,9 @@
   base::test::TaskEnvironment task_environment_;
 };
 
-TEST_F(CertVerifierWithTrustAnchorsTest, VerifyUntrustedCert) {
+INSTANTIATE_TEST_SUITE_P(, CertVerifierWithTrustAnchorsTest, testing::Bool());
+
+TEST_P(CertVerifierWithTrustAnchorsTest, VerifyUntrustedCert) {
   // |test_server_cert_| is untrusted, so Verify() fails.
   {
     net::CertVerifyResult verify_result;
@@ -163,7 +175,7 @@
   EXPECT_FALSE(WasTrustAnchorUsedAndReset());
 }
 
-TEST_F(CertVerifierWithTrustAnchorsTest, VerifyTrustedCert) {
+TEST_P(CertVerifierWithTrustAnchorsTest, VerifyTrustedCert) {
   // Make the database trust |test_ca_cert_|.
   net::NSSCertDatabase::ImportCertFailureList failure_list;
   ASSERT_TRUE(test_cert_db_->ImportCACerts(
@@ -191,7 +203,7 @@
   EXPECT_FALSE(WasTrustAnchorUsedAndReset());
 }
 
-TEST_F(CertVerifierWithTrustAnchorsTest, VerifyUsingAdditionalTrustAnchor) {
+TEST_P(CertVerifierWithTrustAnchorsTest, VerifyUsingAdditionalTrustAnchor) {
   ASSERT_TRUE(SupportsAdditionalTrustAnchors());
 
   // |test_server_cert_| is untrusted, so Verify() fails.
@@ -259,7 +271,7 @@
   EXPECT_FALSE(WasTrustAnchorUsedAndReset());
 }
 
-TEST_F(CertVerifierWithTrustAnchorsTest,
+TEST_P(CertVerifierWithTrustAnchorsTest,
        VerifyUsesAdditionalTrustAnchorsAfterConfigChange) {
   ASSERT_TRUE(SupportsAdditionalTrustAnchors());
 
diff --git a/services/network/network_context.cc b/services/network/network_context.cc
index b592f2d..64c7e8b 100644
--- a/services/network/network_context.cc
+++ b/services/network/network_context.cc
@@ -1547,10 +1547,8 @@
                             ->config_client_request),
               std::move(params_->trial_comparison_cert_verifier_params
                             ->report_client),
-              net::CertVerifyProc::CreateDefault(cert_net_fetcher_),
-              net::CreateCertVerifyProcBuiltin(
-                  cert_net_fetcher_,
-                  net::SystemTrustStoreProvider::CreateDefaultForSSL())));
+              net::CertVerifyProc::CreateSystemVerifyProc(cert_net_fetcher_),
+              net::CertVerifyProc::CreateBuiltinVerifyProc(cert_net_fetcher_)));
     }
 #endif
     if (!cert_verifier)
diff --git a/services/network/public/cpp/server/http_server_unittest.cc b/services/network/public/cpp/server/http_server_unittest.cc
index a1198944..30b25c2 100644
--- a/services/network/public/cpp/server/http_server_unittest.cc
+++ b/services/network/public/cpp/server/http_server_unittest.cc
@@ -26,10 +26,6 @@
 #include "net/log/net_log_source.h"
 #include "net/test/gtest_util.h"
 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
-#include "net/url_request/url_fetcher.h"
-#include "net/url_request/url_fetcher_delegate.h"
-#include "net/url_request/url_request_context.h"
-#include "net/url_request/url_request_context_getter.h"
 #include "net/url_request/url_request_test_util.h"
 #include "services/network/public/cpp/server/http_connection.h"
 #include "services/network/public/cpp/server/http_server_request_info.h"
@@ -486,37 +482,19 @@
 }
 
 TEST_F(HttpServerTest, RequestWithTooLargeBody) {
-  class TestURLFetcherDelegate : public net::URLFetcherDelegate {
-   public:
-    TestURLFetcherDelegate(const base::RepeatingClosure& quit_loop_func)
-        : quit_loop_func_(quit_loop_func) {}
-    ~TestURLFetcherDelegate() override = default;
-
-    void OnURLFetchComplete(const net::URLFetcher* source) override {
-      EXPECT_EQ(net::HTTP_INTERNAL_SERVER_ERROR, source->GetResponseCode());
-      quit_loop_func_.Run();
-    }
-
-   private:
-    base::RepeatingClosure quit_loop_func_;
-  };
-
-  base::RunLoop run_loop;
-  TestURLFetcherDelegate delegate(run_loop.QuitClosure());
-
-  scoped_refptr<net::URLRequestContextGetter> request_context_getter(
-      new net::TestURLRequestContextGetter(
-          base::ThreadTaskRunnerHandle::Get()));
-  std::unique_ptr<net::URLFetcher> fetcher = net::URLFetcher::Create(
-      GURL(base::StringPrintf("http://[::1]:%d/test", server_address_.port())),
-      net::URLFetcher::GET, &delegate, TRAFFIC_ANNOTATION_FOR_TESTS);
-  fetcher->SetRequestContext(request_context_getter.get());
-  fetcher->AddExtraRequestHeader(
-      base::StringPrintf("content-length:%d", 1 << 30));
-  fetcher->Start();
-
-  run_loop.Run();
-  ASSERT_EQ(0u, requests_.size());
+  TestHttpClient client;
+  ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+  client.Send(
+      "GET /test HTTP/1.1\r\n"
+      "Content-Length: 1073741824\r\n\r\n");
+  std::string response;
+  ASSERT_TRUE(client.ReadResponse(&response));
+  EXPECT_EQ(
+      "HTTP/1.1 500 Internal Server Error\r\n"
+      "Content-Length:53\r\n"
+      "Content-Type:text/html\r\n\r\n"
+      "request content-length too big or unknown: 1073741824",
+      response);
 }
 
 TEST_F(HttpServerTest, Send200) {
diff --git a/services/network/system_trust_store_provider_chromeos.h b/services/network/system_trust_store_provider_chromeos.h
index fd7514c..86adefd 100644
--- a/services/network/system_trust_store_provider_chromeos.h
+++ b/services/network/system_trust_store_provider_chromeos.h
@@ -8,6 +8,7 @@
 #include <certt.h>
 #include <memory>
 
+#include "base/component_export.h"
 #include "base/macros.h"
 #include "crypto/scoped_nss_types.h"
 #include "net/cert/cert_verify_proc_builtin.h"
@@ -22,7 +23,8 @@
 // A SystemTrustStoreProvider that supports creating SystemTrustStore instances
 // which will only consider user-imported certificates trusted if they are on a
 // specific NSS slot.
-class SystemTrustStoreProviderChromeOS : public net::SystemTrustStoreProvider {
+class COMPONENT_EXPORT(NETWORK_SERVICE) SystemTrustStoreProviderChromeOS
+    : public net::SystemTrustStoreProvider {
  public:
   // Creates a SystemTrustStoreProvider that will provide SystemTrustStore
   // instances which will not allow trusting user-imported certififcates.
diff --git a/services/service_manager/sandbox/mac/common.sb b/services/service_manager/sandbox/mac/common.sb
index 90e99f14..e6e367a 100644
--- a/services/service_manager/sandbox/mac/common.sb
+++ b/services/service_manager/sandbox/mac/common.sb
@@ -22,6 +22,8 @@
 (define log-file-path "LOG_FILE_PATH")
 (define os-version (string->number (param "OS_VERSION")))
 (define darwin-user-cache-dir "DARWIN_USER_CACHE_DIR")
+(define darwin-user-dir "DARWIN_USER_DIR")
+(define darwin-user-temp-dir "DARWIN_USER_TEMP_DIR")
 (define filter-syscalls "FILTER_SYSCALLS")
 
 ; Backwards compatibility for 10.10.
diff --git a/services/service_manager/sandbox/mac/gpu_v2.sb b/services/service_manager/sandbox/mac/gpu_v2.sb
index 137dece..ff841a2 100644
--- a/services/service_manager/sandbox/mac/gpu_v2.sb
+++ b/services/service_manager/sandbox/mac/gpu_v2.sb
@@ -13,6 +13,7 @@
 
 ; Allow communication between the GPU process and the UI server.
 (allow mach-lookup
+  (global-name "com.apple.bsd.dirhelper")
   (global-name "com.apple.cfprefsd.agent")
   (global-name "com.apple.cfprefsd.daemon")
   (global-name "com.apple.CoreServices.coreservicesd")
@@ -90,12 +91,15 @@
 (allow file-read*
   (subpath "/Library/GPUBundles")
   (subpath "/Library/Video/Plug-Ins")
+  (subpath "/System/Library/CoreServices/RawCamera.bundle")
   (subpath "/System/Library/Video/Plug-Ins")
 )
 
 ; crbug.com/980134
 (allow file-read* file-write*
   (subpath (param darwin-user-cache-dir))
+  (subpath (param darwin-user-dir))
+  (subpath (param darwin-user-temp-dir))
 )
 
 (if (param-true? filter-syscalls)
diff --git a/services/viz/public/cpp/compositing/copy_output_result_mojom_traits.cc b/services/viz/public/cpp/compositing/copy_output_result_mojom_traits.cc
index 69f6c29..90ebcf9 100644
--- a/services/viz/public/cpp/compositing/copy_output_result_mojom_traits.cc
+++ b/services/viz/public/cpp/compositing/copy_output_result_mojom_traits.cc
@@ -206,7 +206,7 @@
       *out_p = std::make_unique<viz::CopyOutputTextureResult>(
           rect, *mailbox, *sync_token, *color_space,
           viz::SingleReleaseCallback::Create(
-              base::Bind(&Release, base::Passed(&releaser))));
+              base::BindOnce(&Release, std::move(releaser))));
       return true;
     }
 
diff --git a/services/viz/public/cpp/compositing/mojom_traits_unittest.cc b/services/viz/public/cpp/compositing/mojom_traits_unittest.cc
index 2051d34..65b8eb8b 100644
--- a/services/viz/public/cpp/compositing/mojom_traits_unittest.cc
+++ b/services/viz/public/cpp/compositing/mojom_traits_unittest.cc
@@ -236,12 +236,12 @@
   std::unique_ptr<CopyOutputRequest> input(new CopyOutputRequest(
       result_format,
       base::BindOnce(
-          [](const base::Closure& quit_closure, const gfx::Rect& expected_rect,
+          [](base::OnceClosure quit_closure, const gfx::Rect& expected_rect,
              std::unique_ptr<CopyOutputResult> result) {
             EXPECT_EQ(expected_rect, result->rect());
             // Note: CopyOutputResult plumbing for bitmap requests is tested in
             // StructTraitsTest.CopyOutputResult_Bitmap.
-            quit_closure.Run();
+            std::move(quit_closure).Run();
           },
           run_loop.QuitClosure(), result_rect)));
   input->SetScaleRatio(scale_from, scale_to);
@@ -283,10 +283,10 @@
   auto request = std::make_unique<CopyOutputRequest>(
       CopyOutputRequest::ResultFormat::RGBA_BITMAP,
       base::BindOnce(
-          [](const base::Closure& quit_closure,
+          [](base::OnceClosure quit_closure,
              std::unique_ptr<CopyOutputResult> result) {
             EXPECT_TRUE(result->IsEmpty());
-            quit_closure.Run();
+            std::move(quit_closure).Run();
           },
           run_loop.QuitClosure()));
   auto result_sender = mojo::StructTraits<
@@ -313,12 +313,12 @@
   std::unique_ptr<CopyOutputRequest> input(new CopyOutputRequest(
       result_format,
       base::BindOnce(
-          [](const base::Closure& quit_closure, const gfx::Rect& expected_rect,
+          [](base::OnceClosure quit_closure, const gfx::Rect& expected_rect,
              std::unique_ptr<CopyOutputResult> result) {
             EXPECT_EQ(expected_rect, result->rect());
             // Note: CopyOutputResult plumbing for texture requests is tested in
             // StructTraitsTest.CopyOutputResult_Texture.
-            quit_closure.Run();
+            std::move(quit_closure).Run();
           },
           run_loop_for_result.QuitClosure(), result_rect)));
   EXPECT_FALSE(input->is_scaled());
@@ -334,13 +334,13 @@
   base::RunLoop run_loop_for_release;
   output->SendResult(std::make_unique<CopyOutputTextureResult>(
       result_rect, mailbox, sync_token, gfx::ColorSpace::CreateSRGB(),
-      SingleReleaseCallback::Create(base::Bind(
-          [](const base::Closure& quit_closure,
+      SingleReleaseCallback::Create(base::BindOnce(
+          [](base::OnceClosure quit_closure,
              const gpu::SyncToken& expected_sync_token,
              const gpu::SyncToken& sync_token, bool is_lost) {
             EXPECT_EQ(expected_sync_token, sync_token);
             EXPECT_FALSE(is_lost);
-            quit_closure.Run();
+            std::move(quit_closure).Run();
           },
           run_loop_for_release.QuitClosure(), sync_token))));
 
@@ -1245,12 +1245,13 @@
                             71234838);
   sync_token.SetVerifyFlush();
   base::RunLoop run_loop;
-  auto callback = SingleReleaseCallback::Create(base::Bind(
-      [](base::Closure quit_closure, const gpu::SyncToken& expected_sync_token,
+  auto callback = SingleReleaseCallback::Create(base::BindOnce(
+      [](base::OnceClosure quit_closure,
+         const gpu::SyncToken& expected_sync_token,
          const gpu::SyncToken& sync_token, bool is_lost) {
         EXPECT_EQ(expected_sync_token, sync_token);
         EXPECT_TRUE(is_lost);
-        quit_closure.Run();
+        std::move(quit_closure).Run();
       },
       run_loop.QuitClosure(), sync_token));
   gpu::Mailbox mailbox;
diff --git a/services/viz/public/cpp/gpu/gpu_unittest.cc b/services/viz/public/cpp/gpu/gpu_unittest.cc
index e7027ec..d4fed86 100644
--- a/services/viz/public/cpp/gpu/gpu_unittest.cc
+++ b/services/viz/public/cpp/gpu/gpu_unittest.cc
@@ -100,8 +100,9 @@
     base::RunLoop run_loop;
     io_thread_.task_runner()->PostTask(
         FROM_HERE,
-        base::BindOnce([](base::Closure callback) { callback.Run(); },
-                       run_loop.QuitClosure()));
+        base::BindOnce(
+            [](base::OnceClosure callback) { std::move(callback).Run(); },
+            run_loop.QuitClosure()));
     run_loop.Run();
   }
 
@@ -173,13 +174,13 @@
   base::RunLoop run_loop;
   // A callback that decrements the counter, and runs the callback when the
   // counter reaches 0.
-  auto callback = base::Bind(
-      [](int* counter, const base::Closure& callback,
+  auto callback = base::BindRepeating(
+      [](int* counter, base::OnceClosure callback,
          scoped_refptr<gpu::GpuChannelHost> channel) {
         EXPECT_TRUE(channel);
         --(*counter);
         if (*counter == 0)
-          callback.Run();
+          std::move(callback).Run();
       },
       &counter, run_loop.QuitClosure());
   gpu()->EstablishGpuChannel(callback);
@@ -199,9 +200,8 @@
   scoped_refptr<gpu::GpuChannelHost> host;
   auto callback = base::BindOnce(
       [](scoped_refptr<gpu::GpuChannelHost>* out_host,
-         const base::Closure& callback,
-         scoped_refptr<gpu::GpuChannelHost> host) {
-        callback.Run();
+         base::OnceClosure callback, scoped_refptr<gpu::GpuChannelHost> host) {
+        std::move(callback).Run();
         *out_host = std::move(host);
       },
       &host, run_loop.QuitClosure());
@@ -226,10 +226,9 @@
 TEST_F(GpuTest, EstablishRequestResponseSynchronouslyOnSuccess) {
   base::RunLoop run_loop;
   gpu()->EstablishGpuChannel(base::BindOnce(
-      [](const base::Closure& callback,
-         scoped_refptr<gpu::GpuChannelHost> host) {
+      [](base::OnceClosure callback, scoped_refptr<gpu::GpuChannelHost> host) {
         EXPECT_TRUE(host);
-        callback.Run();
+        std::move(callback).Run();
       },
       run_loop.QuitClosure()));
   run_loop.Run();
diff --git a/testing/android/native_test/BUILD.gn b/testing/android/native_test/BUILD.gn
index b6ee7181..9d2fc8a 100644
--- a/testing/android/native_test/BUILD.gn
+++ b/testing/android/native_test/BUILD.gn
@@ -77,6 +77,7 @@
 }
 
 generate_jni("native_test_jni_headers") {
+  testonly = true
   sources = [
     "java/src/org/chromium/native_test/MainRunner.java",
     "java/src/org/chromium/native_test/NativeTest.java",
@@ -84,6 +85,7 @@
 }
 
 generate_jni("native_browser_test_jni_headers") {
+  testonly = true
   sources = [
     "java/src/org/chromium/native_test/NativeBrowserTest.java",
   ]
diff --git a/testing/test.gni b/testing/test.gni
index 491fa35d..9fa5468 100644
--- a/testing/test.gni
+++ b/testing/test.gni
@@ -15,8 +15,8 @@
 
 if (is_fuchsia) {
   import("//build/config/chromecast_build.gni")
+  import("//build/config/fuchsia/generate_runner_scripts.gni")
   import("//build/config/fuchsia/package.gni")
-  import("//build/config/fuchsia/rules.gni")
 }
 
 if (is_chromeos) {
diff --git a/third_party/blink/perf_tests/display_locking/abs_pos_outer_sizes_change.html b/third_party/blink/perf_tests/display_locking/abs_pos_outer_sizes_change.html
index d301f54..9b0bab9 100644
--- a/third_party/blink/perf_tests/display_locking/abs_pos_outer_sizes_change.html
+++ b/third_party/blink/perf_tests/display_locking/abs_pos_outer_sizes_change.html
@@ -20,6 +20,7 @@
 .container {
   contain: style layout;
   width: 200px;
+  content-size: 100px;
 }
 .box {
   background: blue;
@@ -63,8 +64,8 @@
     document.getElementById("node_template").content, true).firstElementChild;
   for (let i = 0; i < n; ++i) {
     const clone = specimen.cloneNode(true);
-    if (clone.displayLock && i > 0)
-      clone.displayLock.acquire({ timeout: Infinity, size: [100, 100] });
+    if (i > 0)
+      clone.renderSubtree = "invisible";
     document.body.appendChild(clone);
   }
 }
diff --git a/third_party/blink/perf_tests/display_locking/forced_layout_on_locked_el.html b/third_party/blink/perf_tests/display_locking/forced_layout_on_locked_el.html
index 25972c65..b4cd59a 100644
--- a/third_party/blink/perf_tests/display_locking/forced_layout_on_locked_el.html
+++ b/third_party/blink/perf_tests/display_locking/forced_layout_on_locked_el.html
@@ -24,7 +24,7 @@
 </head>
 <body>
 <template id="template">
-<div class="box">
+<div class="box" rendersubtree="invisible">
   Lorem ipsum dolor sit amet, consectetur adipiscing elit.
   Quisque ante dui, posuere at pretium suscipit, condimentum at augue.
 </div>
@@ -43,9 +43,6 @@
   for (let i = 0; i < NUMBER_OF_ELEMENTS; ++i) {
     const clone = template.content.cloneNode(true).firstElementChild;
     clone.id = "box" + i;
-    if (clone.displayLock) {
-      clone.displayLock.acquire({ timeout: Infinity, size: [10, 10] });
-    }
     container.appendChild(clone);
   }
   container.offsetTop;
diff --git a/third_party/blink/perf_tests/display_locking/inner_sizes_change.html b/third_party/blink/perf_tests/display_locking/inner_sizes_change.html
index 86579fc5..bf23b0e 100644
--- a/third_party/blink/perf_tests/display_locking/inner_sizes_change.html
+++ b/third_party/blink/perf_tests/display_locking/inner_sizes_change.html
@@ -17,6 +17,7 @@
 .container {
   contain: style layout;
   width: 200px;
+  content-size: 100px;
 }
 .box {
   background: blue;
@@ -49,8 +50,8 @@
     document.getElementById("node_template").content, true).firstElementChild;
   for (let i = 0; i < n; ++i) {
     const clone = specimen.cloneNode(true);
-    if (clone.displayLock && i > 0)
-      clone.displayLock.acquire({ timeout: Infinity, size: [100, 100] });
+    if (i > 0)
+      clone.renderSubtree = "invisible";
     document.body.appendChild(clone);
   }
 }
diff --git a/third_party/blink/perf_tests/display_locking/outer_sizes_change.html b/third_party/blink/perf_tests/display_locking/outer_sizes_change.html
index 5d0d7a4..58c1f17 100644
--- a/third_party/blink/perf_tests/display_locking/outer_sizes_change.html
+++ b/third_party/blink/perf_tests/display_locking/outer_sizes_change.html
@@ -16,6 +16,7 @@
 .container {
   contain: style layout;
   width: 200px;
+  content-size: 100px;
 }
 .box {
   background: blue;
@@ -48,8 +49,8 @@
     document.getElementById("node_template").content, true).firstElementChild;
   for (let i = 0; i < n; ++i) {
     const clone = specimen.cloneNode(true);
-    if (clone.displayLock && i > 0)
-      clone.displayLock.acquire({ timeout: Infinity, size: [100, 100] });
+    if (i > 0)
+      clone.renderSubtree = "invisible";
     document.body.appendChild(clone);
   }
 }
diff --git a/third_party/blink/perf_tests/display_locking/outer_sizes_change_activatable.html b/third_party/blink/perf_tests/display_locking/outer_sizes_change_activatable.html
new file mode 100644
index 0000000..ddeeac4
--- /dev/null
+++ b/third_party/blink/perf_tests/display_locking/outer_sizes_change_activatable.html
@@ -0,0 +1,88 @@
+<!doctype HTML>
+
+<!--
+This test appends 30,000 items to the page, locking all of them with the
+activatable flag on. It then changes the style of all the locked elements,
+causing self-layout for all of them.
+
+The test works with and without display locking. If display locking is not
+enabled, then none of the elements are locked and the performance should
+be noticeably worse.
+-->
+
+<head>
+<script src="../resources/runner.js"></script>
+<style>
+.container {
+  contain: style layout;
+  width: 200px;
+  content-size: 100px;
+}
+.box {
+  background: blue;
+  overflow: hidden;
+  width: 100px;
+  height: 100px;
+}
+</style>
+</head>
+
+<body>
+<!-- node template from which to construct items -->
+<template id="node_template">
+<div class="container" rendersubtree="invisible activatable">
+  Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+  Quisque ante dui, posuere at pretium suscipit, condimentum at augue.
+  <div class="box">
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Quisque ante dui, posuere at pretium suscipit, condimentum at augue.
+  </div>
+  Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+  Quisque ante dui, posuere at pretium suscipit, condimentum at augue.
+</div>
+</template>
+</body>
+
+<script>
+function construct(n) {
+  const specimen = document.importNode(
+    document.getElementById("node_template").content, true).firstElementChild;
+  for (let i = 0; i < n; ++i)
+    document.body.appendChild(specimen.cloneNode(true));
+}
+
+let sizes = ["200px", "250px"];
+let size_index = 0;
+function changeStyle() {
+  document.styleSheets[0].rules[0].style.width = sizes[size_index];
+  size_index = 1 - size_index;
+}
+
+let testDone = false;
+let startTime;
+function runTest() {
+  if (startTime) {
+    PerfTestRunner.measureValueAsync(PerfTestRunner.now() - startTime);
+    PerfTestRunner.addRunTestEndMarker();
+  }
+  if (testDone)
+    return;
+
+  startTime = PerfTestRunner.now();
+  PerfTestRunner.addRunTestEndMarker();
+
+  changeStyle();
+  requestAnimationFrame(runTest);
+}
+
+construct(30000);
+
+PerfTestRunner.startMeasureValuesAsync({
+  unit: 'ms',
+  done: () => { testDone = true; },
+  run: runTest,
+  warmUpCount: 3,
+  iterationCount: 5
+});
+
+</script>
diff --git a/third_party/blink/perf_tests/display_locking/outer_sizes_change_iframe.html b/third_party/blink/perf_tests/display_locking/outer_sizes_change_iframe.html
index b54a219..7e7d1dfe 100644
--- a/third_party/blink/perf_tests/display_locking/outer_sizes_change_iframe.html
+++ b/third_party/blink/perf_tests/display_locking/outer_sizes_change_iframe.html
@@ -71,8 +71,8 @@
     document.getElementById("node_template").content, true).firstElementChild;
   for (let i = 0; i < n; ++i) {
     const clone = specimen.cloneNode(true);
-    if (clone.displayLock && i > 0)
-      clone.displayLock.acquire({ timeout: Infinity, size: [100, 100] });
+    if (i > 0)
+      clone.renderSubtree = "invisible";
     document.body.appendChild(clone);
   }
 }
diff --git a/third_party/blink/perf_tests/display_locking/unlock_top_items.html b/third_party/blink/perf_tests/display_locking/unlock_top_items.html
index a62ffd5..76872b9e 100644
--- a/third_party/blink/perf_tests/display_locking/unlock_top_items.html
+++ b/third_party/blink/perf_tests/display_locking/unlock_top_items.html
@@ -13,6 +13,7 @@
 <style>
 .container {
   contain: style layout;
+  content-size: 100px;
 }
 .box {
   background: blue;
@@ -46,8 +47,7 @@
   for (let i = 0; i < n; ++i) {
     const clone = specimen.cloneNode(true);
     clone.id = "id" + i;
-    if (clone.displayLock)
-      clone.displayLock.acquire({ timeout: Infinity, size: [100, 100] });
+    clone.renderSubtree = "invisible";
     document.body.appendChild(clone);
   }
 }
@@ -56,8 +56,7 @@
 function commitNextLock() {
   const element = document.getElementById("id" + nextId);
   ++nextId;
-  if (element.displayLock)
-    element.displayLock.commit();
+  element.renderSubtree = "";
 }
 
 let testDone = false;
diff --git a/third_party/blink/perf_tests/display_locking/unlock_top_items_nested.html b/third_party/blink/perf_tests/display_locking/unlock_top_items_nested.html
index 797c7de9..7512299 100644
--- a/third_party/blink/perf_tests/display_locking/unlock_top_items_nested.html
+++ b/third_party/blink/perf_tests/display_locking/unlock_top_items_nested.html
@@ -37,6 +37,12 @@
 .container {
   contain: style layout;
 }
+.small {
+  content-size: 100px;
+}
+.large {
+  content-size: 100px 100000px;
+}
 .box {
   background: blue;
   overflow: hidden;
@@ -70,15 +76,15 @@
   for (let i = 0; i < n; ++i) {
     if ((i % 1000) == 0) {
       currentContainer = document.createElement("div");
-      currentContainer.classList = "container";
-      if (i > 0 && currentContainer.displayLock)
-        currentContainer.displayLock.acquire({ timeout: Infinity, size: [100, 100000] });
+      currentContainer.classList = "container large";
+      if (i > 0)
+        currentContainer.renderSubtree = "invisible";
       document.body.appendChild(currentContainer);
     }
     const clone = specimen.cloneNode(true);
     clone.id = "id" + i;
-    if (clone.displayLock)
-      clone.displayLock.acquire({ timeout: Infinity, size: [100, 100] });
+    clone.classList = "container small";
+    clone.renderSubtree = "invisible";
     currentContainer.appendChild(clone);
   }
 }
@@ -87,8 +93,7 @@
 function commitNextLock() {
   const element = document.getElementById("id" + nextId);
   ++nextId;
-  if (element.displayLock)
-    element.displayLock.commit();
+  element.renderSubtree = "";
 }
 
 let testDone = false;
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
index 287c5c5b..08598ad 100644
--- a/third_party/blink/public/platform/web_runtime_features.h
+++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -189,6 +189,7 @@
   BLINK_PLATFORM_EXPORT static void EnableWebVR(bool);
   BLINK_PLATFORM_EXPORT static void EnableWebXR(bool);
   BLINK_PLATFORM_EXPORT static void EnableWebXRARModule(bool);
+  BLINK_PLATFORM_EXPORT static void EnableWebXRARDOMOverlay(bool);
   BLINK_PLATFORM_EXPORT static void EnableWebXRAnchors(bool);
   BLINK_PLATFORM_EXPORT static void EnableWebXRHitTest(bool);
   BLINK_PLATFORM_EXPORT static void EnableWebXRPlaneDetection(bool);
@@ -235,8 +236,6 @@
   BLINK_PLATFORM_EXPORT static void EnableSkipTouchEventFilter(bool);
   BLINK_PLATFORM_EXPORT static void EnableSmsReceiver(bool);
   BLINK_PLATFORM_EXPORT static void EnableDisplayLocking(bool);
-  BLINK_PLATFORM_EXPORT static void
-  EnablePauseExecutionContextOnBackgroundFreeze(bool);
   BLINK_PLATFORM_EXPORT static void EnableConsolidatedMovementXY(bool);
   BLINK_PLATFORM_EXPORT static void EnableMouseSubframeNoImplicitCapture(bool);
   BLINK_PLATFORM_EXPORT static void EnableBackForwardCache(bool);
diff --git a/third_party/blink/renderer/bindings/core/v8/trace_wrapper_v8_reference_test.cc b/third_party/blink/renderer/bindings/core/v8/trace_wrapper_v8_reference_test.cc
index fd91a6be..d8425c4 100644
--- a/third_party/blink/renderer/bindings/core/v8/trace_wrapper_v8_reference_test.cc
+++ b/third_party/blink/renderer/bindings/core/v8/trace_wrapper_v8_reference_test.cc
@@ -14,7 +14,7 @@
 
 using TraceWrapperV8ReferenceTest = BindingTestSupportingGC;
 
-class TraceWrapperV8ReferenceHolder
+class TraceWrapperV8ReferenceHolder final
     : public GarbageCollected<TraceWrapperV8ReferenceHolder> {
  public:
   TraceWrapperV8ReferenceHolder() = default;
diff --git a/third_party/blink/renderer/core/css/css_selector.cc b/third_party/blink/renderer/core/css/css_selector.cc
index e441087e..bad20600 100644
--- a/third_party/blink/renderer/core/css/css_selector.cc
+++ b/third_party/blink/renderer/core/css/css_selector.cc
@@ -291,6 +291,7 @@
     case kPseudoSlotted:
     case kPseudoVideoPersistent:
     case kPseudoVideoPersistentAncestor:
+    case kPseudoXrImmersiveDomOverlay:
       return kPseudoIdNone;
   }
 
@@ -323,6 +324,8 @@
     {"-internal-video-persistent", CSSSelector::kPseudoVideoPersistent},
     {"-internal-video-persistent-ancestor",
      CSSSelector::kPseudoVideoPersistentAncestor},
+    {"-internal-xr-immersive-dom-overlay",
+     CSSSelector::kPseudoXrImmersiveDomOverlay},
     {"-webkit-any-link", CSSSelector::kPseudoWebkitAnyLink},
     {"-webkit-autofill", CSSSelector::kPseudoAutofill},
     {"-webkit-drag", CSSSelector::kPseudoDrag},
@@ -578,6 +581,7 @@
     case kPseudoSpatialNavigationInterest:
     case kPseudoVideoPersistent:
     case kPseudoVideoPersistentAncestor:
+    case kPseudoXrImmersiveDomOverlay:
       if (mode != kUASheetMode) {
         pseudo_type_ = kPseudoUnknown;
         break;
diff --git a/third_party/blink/renderer/core/css/css_selector.h b/third_party/blink/renderer/core/css/css_selector.h
index 7729ab8..2c4492b 100644
--- a/third_party/blink/renderer/core/css/css_selector.h
+++ b/third_party/blink/renderer/core/css/css_selector.h
@@ -250,6 +250,7 @@
     kPseudoSlotted,
     kPseudoVideoPersistent,
     kPseudoVideoPersistentAncestor,
+    kPseudoXrImmersiveDomOverlay,
   };
 
   enum AttributeMatchType {
diff --git a/third_party/blink/renderer/core/css/fullscreen.css b/third_party/blink/renderer/core/css/fullscreen.css
index a0982ca..7ed4f77 100644
--- a/third_party/blink/renderer/core/css/fullscreen.css
+++ b/third_party/blink/renderer/core/css/fullscreen.css
@@ -65,3 +65,10 @@
   background-color: black !important;
   z-index: 2147483647 !important;
 }
+
+/* WebXR DOM Overlay for handheld AR needs a transparent background for both the
+   fullscreened element and its backdrop. */
+:-internal-xr-immersive-dom-overlay :fullscreen,
+:-internal-xr-immersive-dom-overlay :fullscreen::backdrop {
+  background-color: rgba(0,0,0,0) !important;
+}
diff --git a/third_party/blink/renderer/core/css/parser/css_proto_converter.cc b/third_party/blink/renderer/core/css/parser/css_proto_converter.cc
index 6936279..68a9bbd 100644
--- a/third_party/blink/renderer/core/css/parser/css_proto_converter.cc
+++ b/third_party/blink/renderer/core/css/parser/css_proto_converter.cc
@@ -37,6 +37,7 @@
     "-internal-spatial-navigation-focus",
     "-internal-video-persistent",
     "-internal-video-persistent-ancestor",
+    "-internal-xr-immersive-dom-overlay",
     "-webkit-any-link",
     "-webkit-autofill",
     "-webkit-drag",
diff --git a/third_party/blink/renderer/core/css/rule_feature_set.cc b/third_party/blink/renderer/core/css/rule_feature_set.cc
index 0de92743f..5139f78 100644
--- a/third_party/blink/renderer/core/css/rule_feature_set.cc
+++ b/third_party/blink/renderer/core/css/rule_feature_set.cc
@@ -168,6 +168,7 @@
     case CSSSelector::kPseudoSlotted:
     case CSSSelector::kPseudoVideoPersistent:
     case CSSSelector::kPseudoVideoPersistentAncestor:
+    case CSSSelector::kPseudoXrImmersiveDomOverlay:
       return true;
     case CSSSelector::kPseudoIs:
     case CSSSelector::kPseudoWhere:
@@ -548,6 +549,7 @@
       case CSSSelector::kPseudoDefined:
       case CSSSelector::kPseudoVideoPersistent:
       case CSSSelector::kPseudoVideoPersistentAncestor:
+      case CSSSelector::kPseudoXrImmersiveDomOverlay:
       case CSSSelector::kPseudoSpatialNavigationInterest:
         return &EnsurePseudoInvalidationSet(selector.GetPseudoType(), type,
                                             position);
diff --git a/third_party/blink/renderer/core/css/selector_checker.cc b/third_party/blink/renderer/core/css/selector_checker.cc
index cbb437c..abd7049 100644
--- a/third_party/blink/renderer/core/css/selector_checker.cc
+++ b/third_party/blink/renderer/core/css/selector_checker.cc
@@ -1046,6 +1046,11 @@
     case CSSSelector::kPseudoVideoPersistentAncestor:
       DCHECK(is_ua_rule_);
       return element.ContainsPersistentVideo();
+    case CSSSelector::kPseudoXrImmersiveDomOverlay:
+      DCHECK(is_ua_rule_);
+      // In immersive AR overlay mode, apply a pseudostyle to the root element.
+      return element.GetDocument().IsImmersiveArOverlay() &&
+             element == element.GetDocument().documentElement();
     case CSSSelector::kPseudoInRange:
       return element.IsInRange();
     case CSSSelector::kPseudoOutOfRange:
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index 381aadbb..0a082769 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -3182,6 +3182,22 @@
     return;
 }
 
+void Document::SetIsImmersiveArOverlay(bool val) {
+  if (!documentElement())
+    return;
+
+  if (val != is_immersive_ar_overlay_) {
+    DCHECK(RuntimeEnabledFeatures::WebXRARDOMOverlayEnabled(this));
+    is_immersive_ar_overlay_ = val;
+
+    // If the property has changed, apply the pseudo-style change to the root
+    // element. This will cascade further UA stylesheet changes such as setting
+    // the fullscreened element and its backdrop transparent.
+    documentElement()->PseudoStateChanged(
+        CSSSelector::kPseudoXrImmersiveDomOverlay);
+  }
+}
+
 void Document::ScheduleUseShadowTreeUpdate(SVGUseElement& element) {
   use_elements_needing_update_.insert(&element);
   ScheduleLayoutTreeUpdateIfNeeded();
diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
index 8394f74..0f76ca3 100644
--- a/third_party/blink/renderer/core/dom/document.h
+++ b/third_party/blink/renderer/core/dom/document.h
@@ -474,6 +474,9 @@
   bool IsViewSource() const { return is_view_source_; }
   void SetIsViewSource(bool);
 
+  bool IsImmersiveArOverlay() const { return is_immersive_ar_overlay_; }
+  void SetIsImmersiveArOverlay(bool);
+
   bool SawElementsInKnownNamespaces() const {
     return saw_elements_in_known_namespaces_;
   }
@@ -1975,6 +1978,7 @@
   DocumentClassFlags document_classes_;
 
   bool is_view_source_;
+  bool is_immersive_ar_overlay_;
   bool saw_elements_in_known_namespaces_;
   bool is_srcdoc_document_;
   bool is_mobile_document_;
diff --git a/third_party/blink/renderer/core/frame/frame.h b/third_party/blink/renderer/core/frame/frame.h
index 161fff2..b0f4e14 100644
--- a/third_party/blink/renderer/core/frame/frame.h
+++ b/third_party/blink/renderer/core/frame/frame.h
@@ -88,8 +88,6 @@
   void Detach(FrameDetachType);
   void DisconnectOwnerElement();
   virtual bool ShouldClose() = 0;
-  virtual void DidFreeze() = 0;
-  virtual void DidResume() = 0;
   virtual void HookBackForwardCacheEviction() = 0;
   virtual void RemoveBackForwardCacheEviction() = 0;
 
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
index 0c69b3a..b54f526 100644
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -482,61 +482,6 @@
   Frame::DidChangeVisibilityState();
 }
 
-void LocalFrame::DidFreeze() {
-  DCHECK(IsAttached());
-  auto* document_resource_coordinator = GetDocument()->GetResourceCoordinator();
-  if (document_resource_coordinator &&
-      !RuntimeEnabledFeatures::BackForwardCacheEnabled()) {
-    // TODO(yuzus): Skip this block if DidFreeze is triggered by bfcache.
-
-    // Determine if there is a beforeunload handler by dispatching a
-    // beforeunload that will *not* launch a user dialog. If
-    // |proceed| is false then there is a non-empty beforeunload
-    // handler indicating potentially unsaved user state.
-    bool unused_did_allow_navigation = false;
-    bool proceed = GetDocument()->DispatchBeforeUnloadEvent(
-        nullptr, false /* is_reload */, unused_did_allow_navigation);
-
-    // DispatchBeforeUnloadEvent dispatches JS events, which may detatch |this|.
-    if (!IsAttached())
-      return;
-    document_resource_coordinator->SetHasNonEmptyBeforeUnload(!proceed);
-  }
-
-  GetDocument()->DispatchFreezeEvent();
-  // DispatchFreezeEvent dispatches JS events, which may detatch |this|.
-  if (!IsAttached())
-    return;
-  // TODO(fmeawad): Move the following logic to the page once we have a
-  // PageResourceCoordinator in Blink. http://crbug.com/838415
-  if (document_resource_coordinator) {
-    document_resource_coordinator->SetLifecycleState(
-        resource_coordinator::mojom::LifecycleState::kFrozen);
-  }
-}
-
-void LocalFrame::DidResume() {
-  DCHECK(IsAttached());
-  const base::TimeTicks resume_event_start = base::TimeTicks::Now();
-  GetDocument()->DispatchEvent(*Event::Create(event_type_names::kResume));
-  const base::TimeTicks resume_event_end = base::TimeTicks::Now();
-  DEFINE_STATIC_LOCAL(CustomCountHistogram, resume_histogram,
-                      ("DocumentEventTiming.ResumeDuration", 0, 10000000, 50));
-  resume_histogram.CountMicroseconds(resume_event_end - resume_event_start);
-
-  // DispatchEvent dispatchs JS events, which may detatch |this|.
-  if (!IsAttached())
-    return;
-
-  // TODO(fmeawad): Move the following logic to the page once we have a
-  // PageResourceCoordinator in Blink
-  if (auto* document_resource_coordinator =
-          GetDocument()->GetResourceCoordinator()) {
-    document_resource_coordinator->SetLifecycleState(
-        resource_coordinator::mojom::LifecycleState::kRunning);
-  }
-}
-
 void LocalFrame::HookBackForwardCacheEviction() {
   // Register a callback dispatched when JavaScript is executed on the frame.
   // The callback evicts the frame. If a frame is frozen by BackForwardCache,
@@ -1672,6 +1617,60 @@
   Loader().StopAllLoaders();
 }
 
+void LocalFrame::DispatchBeforeUnloadEventForFreeze() {
+  auto* document_resource_coordinator = GetDocument()->GetResourceCoordinator();
+  if (document_resource_coordinator &&
+      lifecycle_state_ == mojom::FrameLifecycleState::kRunning &&
+      !RuntimeEnabledFeatures::BackForwardCacheEnabled()) {
+    // TODO(yuzus): Skip this block if DidFreeze is triggered by bfcache.
+
+    // Determine if there is a beforeunload handler by dispatching a
+    // beforeunload that will *not* launch a user dialog. If
+    // |proceed| is false then there is a non-empty beforeunload
+    // handler indicating potentially unsaved user state.
+    bool unused_did_allow_navigation = false;
+    bool proceed = GetDocument()->DispatchBeforeUnloadEvent(
+        nullptr, false /* is_reload */, unused_did_allow_navigation);
+
+    // DispatchBeforeUnloadEvent dispatches JS events, which may detach |this|.
+    if (!IsAttached())
+      return;
+    document_resource_coordinator->SetHasNonEmptyBeforeUnload(!proceed);
+  }
+}
+
+void LocalFrame::DidFreeze() {
+  DCHECK(IsAttached());
+  GetDocument()->DispatchFreezeEvent();
+  // DispatchFreezeEvent dispatches JS events, which may detach |this|.
+  if (!IsAttached())
+    return;
+  // TODO(fmeawad): Move the following logic to the page once we have a
+  // PageResourceCoordinator in Blink. http://crbug.com/838415
+  if (auto* document_resource_coordinator =
+          GetDocument()->GetResourceCoordinator()) {
+    document_resource_coordinator->SetLifecycleState(
+        resource_coordinator::mojom::LifecycleState::kFrozen);
+  }
+}
+
+void LocalFrame::DidResume() {
+  DCHECK(IsAttached());
+  const base::TimeTicks resume_event_start = base::TimeTicks::Now();
+  GetDocument()->DispatchEvent(*Event::Create(event_type_names::kResume));
+  const base::TimeTicks resume_event_end = base::TimeTicks::Now();
+  DEFINE_STATIC_LOCAL(CustomCountHistogram, resume_histogram,
+                      ("DocumentEventTiming.ResumeDuration", 0, 10000000, 50));
+  resume_histogram.CountMicroseconds(resume_event_end - resume_event_start);
+  // TODO(fmeawad): Move the following logic to the page once we have a
+  // PageResourceCoordinator in Blink
+  if (auto* document_resource_coordinator =
+          GetDocument()->GetResourceCoordinator()) {
+    document_resource_coordinator->SetLifecycleState(
+        resource_coordinator::mojom::LifecycleState::kRunning);
+  }
+}
+
 void LocalFrame::PauseContext() {
   GetDocument()->Fetcher()->SetDefersLoading(true);
   GetDocument()->SetLifecycleState(lifecycle_state_);
@@ -1724,7 +1723,7 @@
   if (freeze) {
     if (lifecycle_state_ != mojom::FrameLifecycleState::kPaused) {
       DidFreeze();
-      // DidFreeze can dispatch JS events, which may detatch |this|.
+      // DidFreeze can dispatch JS events, which may detach |this|.
       if (!IsAttached())
         return;
     }
@@ -1733,7 +1732,7 @@
     UnpauseContext();
     if (old_state != mojom::FrameLifecycleState::kPaused) {
       DidResume();
-      // DidResume can dispatch JS events, which may detatch |this|.
+      // DidResume can dispatch JS events, which may detach |this|.
       if (!IsAttached())
         return;
     }
diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h
index 0e571be..cbb431f 100644
--- a/third_party/blink/renderer/core/frame/local_frame.h
+++ b/third_party/blink/renderer/core/frame/local_frame.h
@@ -140,8 +140,6 @@
   bool DetachDocument() override;
   void CheckCompleted() override;
   void DidChangeVisibilityState() override;
-  void DidFreeze() override;
-  void DidResume() override;
   void HookBackForwardCacheEviction() override;
   void RemoveBackForwardCacheEviction() override;
   // This sets the is_inert_ flag and also recurses through this frame's
@@ -272,6 +270,7 @@
   void RemoveSpellingMarkersUnderWords(const Vector<String>& words);
 
   bool ShouldThrottleRendering() const;
+  void DispatchBeforeUnloadEventForFreeze();
 
   // Returns frame scheduler for this frame.
   // FrameScheduler is destroyed during frame detach and nullptr will be
@@ -497,6 +496,8 @@
 
   void SetFrameColorOverlay(SkColor color);
 
+  void DidFreeze();
+  void DidResume();
   void PauseContext();
   void UnpauseContext();
 
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc
index d6a67da6..937308fd 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -1937,6 +1937,17 @@
   // backdrop.
   if (Document* doc = frame_->GetDocument()) {
     if (Element* element = Fullscreen::FullscreenElementFrom(*doc)) {
+      if (doc->IsImmersiveArOverlay()) {
+        // Use the fullscreened element's background directly. Don't bother
+        // blending with the backdrop since that's transparent.
+        if (LayoutObject* layout_object = element->GetLayoutObject()) {
+          return layout_object->ResolveColor(GetCSSPropertyBackgroundColor());
+        }
+        if (LayoutObject* layout_object =
+                element->PseudoElementLayoutObject(kPseudoIdBackdrop)) {
+          return layout_object->ResolveColor(GetCSSPropertyBackgroundColor());
+        }
+      }
       if (LayoutObject* layout_object =
               element->PseudoElementLayoutObject(kPseudoIdBackdrop)) {
         return result.Blend(
diff --git a/third_party/blink/renderer/core/frame/remote_frame.cc b/third_party/blink/renderer/core/frame/remote_frame.cc
index 39e1716..3ed7f51 100644
--- a/third_party/blink/renderer/core/frame/remote_frame.cc
+++ b/third_party/blink/renderer/core/frame/remote_frame.cc
@@ -168,14 +168,6 @@
   return true;
 }
 
-void RemoteFrame::DidFreeze() {
-  // TODO(fmeawad): Add support for remote frames.
-}
-
-void RemoteFrame::DidResume() {
-  // TODO(fmeawad): Add support for remote frames.
-}
-
 void RemoteFrame::SetIsInert(bool inert) {
   if (inert != is_inert_)
     Client()->SetIsInert(inert);
diff --git a/third_party/blink/renderer/core/frame/remote_frame.h b/third_party/blink/renderer/core/frame/remote_frame.h
index c124278..45851ef8 100644
--- a/third_party/blink/renderer/core/frame/remote_frame.h
+++ b/third_party/blink/renderer/core/frame/remote_frame.h
@@ -39,8 +39,6 @@
   bool DetachDocument() override;
   void CheckCompleted() override;
   bool ShouldClose() override;
-  void DidFreeze() override;
-  void DidResume() override;
   void HookBackForwardCacheEviction() override {}
   void RemoveBackForwardCacheEviction() override {}
   void SetIsInert(bool) override;
diff --git a/third_party/blink/renderer/core/fullscreen/fullscreen.cc b/third_party/blink/renderer/core/fullscreen/fullscreen.cc
index 1ad5cbc2..d15f8707 100644
--- a/third_party/blink/renderer/core/fullscreen/fullscreen.cc
+++ b/third_party/blink/renderer/core/fullscreen/fullscreen.cc
@@ -46,6 +46,7 @@
 #include "third_party/blink/renderer/core/frame/visual_viewport.h"
 #include "third_party/blink/renderer/core/fullscreen/fullscreen_options.h"
 #include "third_party/blink/renderer/core/fullscreen/scoped_allow_fullscreen.h"
+#include "third_party/blink/renderer/core/html/html_body_element.h"
 #include "third_party/blink/renderer/core/html/html_iframe_element.h"
 #include "third_party/blink/renderer/core/html_element_type_helpers.h"
 #include "third_party/blink/renderer/core/input/event_handler.h"
@@ -238,6 +239,19 @@
     return true;
   }
 
+  if (document.IsImmersiveArOverlay()) {
+    // This is a workaround for lack of a user activation when an immersive-ar
+    // session is starting. If the app sets an element fullscreen in the "Enter
+    // AR" button click, that gets unfullscreened when the browser shows its AR
+    // session consent prompt. By the time the session starts, the 5-second
+    // timer for the initial user activation is likely to have expired. This
+    // also allows switching the active fullscreen element during the session.
+    // Note that exiting the immersive-ar session does FullyExitFullscreen to
+    // ensure a consistent post-session state.
+    DVLOG(1) << __func__ << ": allowing fullscreen immersive-ar DOM overlay";
+    return true;
+  }
+
   String message = ExceptionMessages::FailedToExecute(
       "requestFullscreen", "Element",
       "API can only be initiated by a user gesture.");
diff --git a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
index df4da61..27c534a 100644
--- a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
@@ -343,6 +343,7 @@
     DEFINE_STRING_MAPPING(PseudoHostHasAppearance)
     DEFINE_STRING_MAPPING(PseudoVideoPersistent)
     DEFINE_STRING_MAPPING(PseudoVideoPersistentAncestor)
+    DEFINE_STRING_MAPPING(PseudoXrImmersiveDomOverlay)
 #undef DEFINE_STRING_MAPPING
   }
 
diff --git a/third_party/blink/renderer/core/layout/layout_block.cc b/third_party/blink/renderer/core/layout/layout_block.cc
index 961f989..d1567c7 100644
--- a/third_party/blink/renderer/core/layout/layout_block.cc
+++ b/third_party/blink/renderer/core/layout/layout_block.cc
@@ -308,7 +308,8 @@
     // Insert the child into the anonymous block box instead of here.
     if (new_child->IsInline() ||
         (new_child->IsFloatingOrOutOfFlowPositioned() &&
-         !IsFlexibleBoxIncludingNG() && !IsLayoutGrid()) ||
+         (StyleRef().IsDeprecatedFlexboxUsingFlexLayout() ||
+          (!IsFlexibleBoxIncludingNG() && !IsLayoutGrid()))) ||
         before_descendant->Parent()->SlowFirstChild() != before_descendant) {
       before_descendant_container->AddChild(new_child, before_descendant);
     } else {
@@ -350,7 +351,8 @@
 
   if (new_child->IsInline() ||
       (new_child->IsFloatingOrOutOfFlowPositioned() &&
-       !IsFlexibleBoxIncludingNG() && !IsLayoutGrid())) {
+       (StyleRef().IsDeprecatedFlexboxUsingFlexLayout() ||
+        (!IsFlexibleBoxIncludingNG() && !IsLayoutGrid())))) {
     // If we're inserting an inline child but all of our children are blocks,
     // then we have to make sure it is put into an anomyous block box. We try to
     // use an existing anonymous box if possible, otherwise a new one is created
diff --git a/third_party/blink/renderer/core/layout/layout_flexible_box.cc b/third_party/blink/renderer/core/layout/layout_flexible_box.cc
index ecbf895..aa5f1aa 100644
--- a/third_party/blink/renderer/core/layout/layout_flexible_box.cc
+++ b/third_party/blink/renderer/core/layout/layout_flexible_box.cc
@@ -46,6 +46,7 @@
 #include "third_party/blink/renderer/core/style/computed_style.h"
 #include "third_party/blink/renderer/platform/geometry/length_functions.h"
 #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
 #include "third_party/blink/renderer/platform/wtf/math_extras.h"
 
 namespace blink {
@@ -273,8 +274,10 @@
 }
 
 void LayoutFlexibleBox::RemoveChild(LayoutObject* child) {
-  if (!DocumentBeingDestroyed())
+  if (!DocumentBeingDestroyed() &&
+      !StyleRef().IsDeprecatedFlexboxUsingFlexLayout()) {
     MergeAnonymousFlexItems(child);
+  }
 
   LayoutBlock::RemoveChild(child);
   intrinsic_size_along_main_axis_.erase(child);
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc
index bfd2a36..c97dac4 100644
--- a/third_party/blink/renderer/core/layout/layout_object.cc
+++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -255,11 +255,8 @@
       return LayoutObjectFactory::CreateTableCaption(*element, style, legacy);
     case EDisplay::kWebkitBox:
     case EDisplay::kWebkitInlineBox:
-      if (RuntimeEnabledFeatures::WebkitBoxLayoutUsesFlexLayoutEnabled() &&
-          (!style.HasLineClamp() ||
-           style.BoxOrient() == EBoxOrient::kHorizontal)) {
+      if (style.IsDeprecatedFlexboxUsingFlexLayout())
         return new LayoutFlexibleBox(element);
-      }
       return new LayoutDeprecatedFlexibleBox(*element);
     case EDisplay::kFlex:
     case EDisplay::kInlineFlex:
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_physical_line_box_fragment.h b/third_party/blink/renderer/core/layout/ng/inline/ng_physical_line_box_fragment.h
index 7a453e3..7fc614b 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_physical_line_box_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_physical_line_box_fragment.h
@@ -57,9 +57,9 @@
   NGLineHeightMetrics BaselineMetrics(FontBaseline) const;
 
   // Scrollable overflow. including contents, in the local coordinate.
-  // ScrollableOverflow is not precomputed/cached because it cannot be computed
-  // when LineBox is generated because it needs container dimensions to
-  // resolve relative position of its children.
+  // |ScrollableOverflow| is not precomputed/cached because it cannot be
+  // computed when LineBox is generated because it needs container dimensions
+  // to resolve relative position of its children.
   PhysicalRect ScrollableOverflow(const LayoutObject* container,
                                   const ComputedStyle* container_style,
                                   PhysicalSize container_physical_size) const;
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.cc b/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.cc
index 5561379..4f49e5f3 100644
--- a/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.cc
+++ b/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.cc
@@ -107,12 +107,13 @@
   if (physical_fragment->Children().empty())
     return;
 
-  LayoutUnit border_inline_start =
-      LayoutUnit(Base::StyleRef().BorderStartWidth());
-  LayoutUnit border_block_start =
-      LayoutUnit(Base::StyleRef().BorderBeforeWidth());
-  WritingMode writing_mode = Base::StyleRef().GetWritingMode();
-  TextDirection direction = Base::StyleRef().Direction();
+  const ComputedStyle& style = Base::StyleRef();
+  const WritingMode writing_mode = style.GetWritingMode();
+  const TextDirection direction = style.Direction();
+  const LayoutUnit border_inline_start = LayoutUnit(style.BorderStartWidth());
+  const LayoutUnit border_block_start = LayoutUnit(style.BorderBeforeWidth());
+  const PhysicalSize& size = physical_fragment->Size();
+
   // End and under padding are added to scroll overflow of inline children.
   // https://github.com/w3c/csswg-drafts/issues/129
   base::Optional<NGPhysicalBoxStrut> padding_strut;
@@ -121,17 +122,17 @@
                                Base::PaddingUnder())
                         .ConvertToPhysical(writing_mode, direction);
   }
+
   // Rectangles not reachable by scroll should not be added to overflow.
-  auto IsRectReachableByScroll =
-      [&border_inline_start, &border_block_start, &writing_mode, &direction,
-       &physical_fragment](const PhysicalRect& rect) {
-        LogicalOffset rect_logical_end =
-            rect.offset.ConvertToLogical(writing_mode, direction,
-                                         physical_fragment->Size(), rect.size) +
-            rect.size.ConvertToLogical(writing_mode);
-        return (rect_logical_end.inline_offset > border_inline_start &&
-                rect_logical_end.block_offset > border_block_start);
-      };
+  auto IsRectReachableByScroll = [&border_inline_start, &border_block_start,
+                                  &writing_mode, &direction,
+                                  &size](const PhysicalRect& rect) {
+    LogicalOffset rect_logical_end =
+        rect.offset.ConvertToLogical(writing_mode, direction, size, rect.size) +
+        rect.size.ConvertToLogical(writing_mode);
+    return (rect_logical_end.inline_offset > border_inline_start &&
+            rect_logical_end.block_offset > border_block_start);
+  };
 
   bool children_inline = Base::ChildrenInline();
   PhysicalRect children_overflow;
@@ -146,11 +147,13 @@
     PhysicalRect child_scrollable_overflow;
     if (child->IsFloatingOrOutOfFlowPositioned()) {
       child_scrollable_overflow = child->ScrollableOverflowForPropagation(this);
+      child_scrollable_overflow.offset +=
+          ComputeRelativeOffset(child->Style(), writing_mode, direction, size);
     } else if (children_inline && child->IsLineBox()) {
       DCHECK(child->IsLineBox());
       child_scrollable_overflow =
-          To<NGPhysicalLineBoxFragment>(*child).ScrollableOverflow(
-              this, Base::Style(), physical_fragment->Size());
+          To<NGPhysicalLineBoxFragment>(*child).ScrollableOverflow(this, &style,
+                                                                   size);
       if (padding_strut) {
         PhysicalRect linebox_rect(child.Offset(), child->Size());
         if (lineboxes_enclosing_rect)
@@ -173,8 +176,8 @@
   }
 
   // LayoutOverflow takes flipped blocks coordinates, adjust as needed.
-  LayoutRect children_flipped_overflow = children_overflow.ToLayoutFlippedRect(
-      physical_fragment->Style(), physical_fragment->Size());
+  LayoutRect children_flipped_overflow =
+      children_overflow.ToLayoutFlippedRect(style, size);
   Base::AddLayoutOverflow(children_flipped_overflow);
 }
 
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
index 3daecb27..19c743c 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
@@ -220,6 +220,7 @@
   PhysicalRect ScrollableOverflow() const;
 
   // ScrollableOverflow(), with transforms applied wrt container if needed.
+  // This does not include any offsets from the parent (including relpos).
   PhysicalRect ScrollableOverflowForPropagation(
       const LayoutObject* container) const;
 
diff --git a/third_party/blink/renderer/core/layout/ng/ng_relative_utils.h b/third_party/blink/renderer/core/layout/ng/ng_relative_utils.h
index 8dc07e6..5c2ce9d5 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_relative_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_relative_utils.h
@@ -14,9 +14,9 @@
 class ComputedStyle;
 struct PhysicalOffset;
 
-// Implements relative positioning spec:
+// Implements the relative positioning spec:
 // https://www.w3.org/TR/css-position-3/#rel-pos
-// Return relative position offset as defined by style.
+// Returns the relative position offset as defined by |child_style|.
 CORE_EXPORT PhysicalOffset
 ComputeRelativeOffset(const ComputedStyle& child_style,
                       WritingMode container_writing_mode,
diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc
index c3257b04..35c1f53c 100644
--- a/third_party/blink/renderer/core/page/page.cc
+++ b/third_party/blink/renderer/core/page/page.cc
@@ -512,50 +512,27 @@
     return;
   DCHECK_NE(state, PageLifecycleState::kUnknown);
 
-  // When background tab freezing was first shipped it didn't pause
-  // the execution context but froze the frame scheduler. This feature
-  // flag attempts to bring the two mechanisms to use the same path for
-  // all pausing and freezing.
-  // This allows for mojo channels, workers to also be frozen because
-  // they listen for the page execution context being paused/frozen.
-  if (RuntimeEnabledFeatures::
-          PauseExecutionContextOnBackgroundFreezeEnabled()) {
-    base::Optional<mojom::FrameLifecycleState> next_state;
-    if (state == PageLifecycleState::kFrozen) {
-      next_state = mojom::FrameLifecycleState::kFrozen;
-    } else if (page_lifecycle_state_ == PageLifecycleState::kFrozen) {
-      // TODO(fmeawad): Only resume the page that just became visible, blocked
-      // on task queues per frame.
-      DCHECK(state == PageLifecycleState::kActive ||
-             state == PageLifecycleState::kHiddenBackgrounded ||
-             state == PageLifecycleState::kHiddenForegrounded);
-      next_state = mojom::FrameLifecycleState::kRunning;
-    }
+  base::Optional<mojom::FrameLifecycleState> next_state;
+  if (state == PageLifecycleState::kFrozen) {
+    next_state = mojom::FrameLifecycleState::kFrozen;
+  } else if (page_lifecycle_state_ == PageLifecycleState::kFrozen) {
+    // TODO(fmeawad): Only resume the page that just became visible, blocked
+    // on task queues per frame.
+    DCHECK(state == PageLifecycleState::kActive ||
+           state == PageLifecycleState::kHiddenBackgrounded ||
+           state == PageLifecycleState::kHiddenForegrounded);
+    next_state = mojom::FrameLifecycleState::kRunning;
+  }
 
-    if (next_state) {
-      for (Frame* frame = main_frame_.Get(); frame;
-           frame = frame->Tree().TraverseNext()) {
-        if (auto* local_frame = DynamicTo<LocalFrame>(frame))
-          local_frame->SetLifecycleState(next_state.value());
-      }
-    }
-  } else {
-    // The following code will dispatch the freeze/resume events,
-    // freeze the frame scheduler but but not pause the execution context.
-    if (state == PageLifecycleState::kFrozen) {
-      for (Frame* frame = main_frame_.Get(); frame;
-           frame = frame->Tree().TraverseNext()) {
-        frame->DidFreeze();
-      }
-    } else if (page_lifecycle_state_ == PageLifecycleState::kFrozen) {
-      // TODO(fmeawad): Only resume the page that just became visible, blocked
-      // on task queues per frame.
-      DCHECK(state == PageLifecycleState::kActive ||
-             state == PageLifecycleState::kHiddenBackgrounded ||
-             state == PageLifecycleState::kHiddenForegrounded);
-      for (Frame* frame = main_frame_.Get(); frame;
-           frame = frame->Tree().TraverseNext()) {
-        frame->DidResume();
+  if (next_state) {
+    for (Frame* frame = main_frame_.Get(); frame;
+         frame = frame->Tree().TraverseNext()) {
+      if (auto* local_frame = DynamicTo<LocalFrame>(frame)) {
+        // TODO(chrisha): Determine if dispatching the before unload
+        // makes sense and if so put it into a specification.
+        if (next_state == mojom::FrameLifecycleState::kFrozen)
+          local_frame->DispatchBeforeUnloadEventForFreeze();
+        local_frame->SetLifecycleState(next_state.value());
       }
     }
   }
diff --git a/third_party/blink/renderer/core/style/computed_style.h b/third_party/blink/renderer/core/style/computed_style.h
index 84b5d96..0e99d9f 100644
--- a/third_party/blink/renderer/core/style/computed_style.h
+++ b/third_party/blink/renderer/core/style/computed_style.h
@@ -1203,6 +1203,11 @@
     return Display() == EDisplay::kWebkitBox ||
            Display() == EDisplay::kWebkitInlineBox;
   }
+  bool IsDeprecatedFlexboxUsingFlexLayout() const {
+    return IsDeprecatedWebkitBox() &&
+           RuntimeEnabledFeatures::WebkitBoxLayoutUsesFlexLayoutEnabled() &&
+           (!HasLineClamp() || BoxOrient() == EBoxOrient::kHorizontal);
+  }
 
   // Variables.
   bool HasVariables() const;
@@ -2091,7 +2096,6 @@
   bool IsDisplayFlexibleOrGridBox() const {
     return IsDisplayFlexibleBox(Display()) || IsDisplayGridBox(Display());
   }
-  bool IsDisplayFlexibleBox() const { return IsDisplayFlexibleBox(Display()); }
   bool IsDisplayLayoutCustomBox() const {
     return IsDisplayLayoutCustomBox(Display());
   }
diff --git a/third_party/blink/renderer/core/svg/animation/smil_animation_sandwich.cc b/third_party/blink/renderer/core/svg/animation/smil_animation_sandwich.cc
index 19f1709..0019776 100644
--- a/third_party/blink/renderer/core/svg/animation/smil_animation_sandwich.cc
+++ b/third_party/blink/renderer/core/svg/animation/smil_animation_sandwich.cc
@@ -31,6 +31,19 @@
 
 namespace blink {
 
+namespace {
+
+struct PriorityCompare {
+  PriorityCompare(SMILTime elapsed) : elapsed_(elapsed) {}
+  bool operator()(const Member<SVGSMILElement>& a,
+                  const Member<SVGSMILElement>& b) {
+    return b->IsHigherPriorityThan(a, elapsed_);
+  }
+  SMILTime elapsed_;
+};
+
+}  // namespace
+
 SMILAnimationSandwich::SMILAnimationSandwich() = default;
 
 void SMILAnimationSandwich::Schedule(SVGSMILElement* animation) {
diff --git a/third_party/blink/renderer/core/svg/animation/smil_animation_sandwich.h b/third_party/blink/renderer/core/svg/animation/smil_animation_sandwich.h
index e56138e..08a938a 100644
--- a/third_party/blink/renderer/core/svg/animation/smil_animation_sandwich.h
+++ b/third_party/blink/renderer/core/svg/animation/smil_animation_sandwich.h
@@ -33,21 +33,6 @@
 
 namespace blink {
 
-struct PriorityCompare {
-  PriorityCompare(SMILTime elapsed) : elapsed_(elapsed) {}
-  bool operator()(const Member<SVGSMILElement>& a,
-                  const Member<SVGSMILElement>& b) {
-    // FIXME: This should also consider possible timing relations between the
-    // elements.
-    SMILTime a_begin = a->BeginTimeForPrioritization(elapsed_);
-    SMILTime b_begin = b->BeginTimeForPrioritization(elapsed_);
-    if (a_begin == b_begin)
-      return a->DocumentOrderIndex() < b->DocumentOrderIndex();
-    return a_begin < b_begin;
-  }
-  SMILTime elapsed_;
-};
-
 // This class implements/helps with implementing the "sandwich model" from SMIL.
 // https://www.w3.org/TR/SMIL3/smil-animation.html#animationNS-AnimationSandwichModel
 //
diff --git a/third_party/blink/renderer/core/svg/animation/smil_time_container.cc b/third_party/blink/renderer/core/svg/animation/smil_time_container.cc
index 74526da..ee62347 100644
--- a/third_party/blink/renderer/core/svg/animation/smil_time_container.cc
+++ b/third_party/blink/renderer/core/svg/animation/smil_time_container.cc
@@ -524,8 +524,13 @@
   // Everything bellow handles "discard" elements.
   UseCounter::Count(&GetDocument(), WebFeature::kSVGSMILAnimationAppliedEffect);
 
-  std::sort(animations_to_apply.begin(), animations_to_apply.end(),
-            PriorityCompare(elapsed));
+  // Sort by location in the document. (Should be based on the target rather
+  // than the timed element, but often enough they will order the same.)
+  std::sort(
+      animations_to_apply.begin(), animations_to_apply.end(),
+      [](const Member<SVGSMILElement>& a, const Member<SVGSMILElement>& b) {
+        return a->DocumentOrderIndex() < b->DocumentOrderIndex();
+      });
 
   for (const auto& timed_element : animations_to_apply) {
     if (timed_element->isConnected() && timed_element->IsSVGDiscardElement()) {
diff --git a/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc b/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc
index a621924..e2ef7946 100644
--- a/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc
+++ b/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc
@@ -605,6 +605,17 @@
   return interval_.begin;
 }
 
+bool SVGSMILElement::IsHigherPriorityThan(const SVGSMILElement* other,
+                                          SMILTime presentation_time) const {
+  // FIXME: This should also consider possible timing relations between the
+  // elements.
+  SMILTime this_begin = BeginTimeForPrioritization(presentation_time);
+  SMILTime other_begin = other->BeginTimeForPrioritization(presentation_time);
+  if (this_begin == other_begin)
+    return DocumentOrderIndex() > other->DocumentOrderIndex();
+  return this_begin > other_begin;
+}
+
 SMILTime SVGSMILElement::Dur() const {
   if (cached_dur_ != kInvalidCachedTime)
     return cached_dur_;
diff --git a/third_party/blink/renderer/core/svg/animation/svg_smil_element.h b/third_party/blink/renderer/core/svg/animation/svg_smil_element.h
index 16b117a..92cc9e7 100644
--- a/third_party/blink/renderer/core/svg/animation/svg_smil_element.h
+++ b/third_party/blink/renderer/core/svg/animation/svg_smil_element.h
@@ -82,12 +82,13 @@
   SMILTime Elapsed() const;
 
   SMILTime IntervalBegin() const { return interval_.begin; }
-  SMILTime BeginTimeForPrioritization(SMILTime presentation_time) const;
   SMILTime SimpleDuration() const;
 
   bool CurrentIntervalIsActive(SMILTime elapsed);
   void UpdateInterval(SMILTime presentation_time);
   void UpdateActiveState(SMILTime elapsed);
+  bool IsHigherPriorityThan(const SVGSMILElement* other,
+                            SMILTime presentation_time) const;
 
   SMILTime NextInterestingTime(SMILTime elapsed) const;
   SMILTime NextProgressTime(SMILTime elapsed) const;
@@ -157,6 +158,7 @@
   SMILTime FindInstanceTime(BeginOrEnd,
                             SMILTime minimum_time,
                             bool equals_minimum_ok) const;
+  SMILTime BeginTimeForPrioritization(SMILTime presentation_time) const;
 
   SMILInterval ResolveInterval(SMILTime begin_after, SMILTime end_after) const;
   bool ResolveFirstInterval();
diff --git a/third_party/blink/renderer/devtools/.gitignore b/third_party/blink/renderer/devtools/.gitignore
index b827cf2e..c401c863 100644
--- a/third_party/blink/renderer/devtools/.gitignore
+++ b/third_party/blink/renderer/devtools/.gitignore
@@ -13,7 +13,6 @@
 /.dev_profile
 /.test_cache
 /release
-/scripts/local_node/runtimes
 /scripts/visualize_deps/out
 /front_end/protocol_externs.js
 package-lock.json
diff --git a/third_party/blink/renderer/devtools/BUILD.gn b/third_party/blink/renderer/devtools/BUILD.gn
index 6adb8df..a477297 100644
--- a/third_party/blink/renderer/devtools/BUILD.gn
+++ b/third_party/blink/renderer/devtools/BUILD.gn
@@ -1714,7 +1714,7 @@
       ".eslintrc.js",
       "front_end/",
       "scripts/lint_javascript.py",
-      "scripts/local_node.py",
+      "scripts/devtools_paths.py",
       "//testing/scripts/common.py",
       "//testing/scripts/run_devtools_check.py",
       "//testing/xvfb.py",
diff --git a/third_party/blink/renderer/devtools/PRESUBMIT.py b/third_party/blink/renderer/devtools/PRESUBMIT.py
index 1ada106..5c3c6ae 100644
--- a/third_party/blink/renderer/devtools/PRESUBMIT.py
+++ b/third_party/blink/renderer/devtools/PRESUBMIT.py
@@ -25,7 +25,7 @@
 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""DevTools JSDoc validator presubmit script
+"""DevTools presubmit script
 
 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
 for more details about the presubmit API built into gcl.
@@ -50,7 +50,7 @@
     original_sys_path = sys.path
     try:
         sys.path = sys.path + [input_api.os_path.join(input_api.PresubmitLocalPath(), "scripts")]
-        import local_node
+        import devtools_paths
     finally:
         sys.path = original_sys_path
 
@@ -77,7 +77,7 @@
 
     # Use eslint to autofix the braces.
     # Also fix semicolon to avoid confusing clang-format.
-    eslint_process = popen([local_node.node_path(), local_node.eslint_path(), '--config', '.eslintrc.js', '--fix'] + affected_files)
+    eslint_process = popen([devtools_paths.node_path(), devtools_paths.eslint_path(), '--config', '.eslintrc.js', '--fix'] + affected_files)
     eslint_process.communicate()
 
     # Need to run clang-format again to align the braces
@@ -228,11 +228,11 @@
     original_sys_path = sys.path
     try:
         sys.path = sys.path + [input_api.os_path.join(input_api.PresubmitLocalPath(), "scripts")]
-        import local_node
+        import devtools_paths
     finally:
         sys.path = original_sys_path
 
-    node_path = local_node.node_path()
+    node_path = devtools_paths.node_path()
 
     if script_arguments is None:
         script_arguments = []
diff --git a/third_party/blink/renderer/devtools/karma.conf.js b/third_party/blink/renderer/devtools/karma.conf.js
index 916bf48..e31def1 100644
--- a/third_party/blink/renderer/devtools/karma.conf.js
+++ b/third_party/blink/renderer/devtools/karma.conf.js
@@ -2,9 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// TODO(1011259): switch to true.
+let external_devtools_frontend = false;
+let node_modules_path = external_devtools_frontend
+    ? ''
+    : '../../../../third_party/devtools-node-modules/third_party/node_modules/';
+
 module.exports = function(config) {
   const options = {
-    basePath: "",
+    basePath: '',
 
     files: [{
       pattern: 'front_end/**/*.js',
@@ -15,33 +21,33 @@
       type: 'module'
     }],
 
-    reporters: ["dots", "coverage-istanbul"],
+    reporters: ['dots', 'coverage-istanbul'],
 
     preprocessors: {
       './tests/**/*.ts': ['karma-typescript'],
       './front_end/common/*.js': ['karma-coverage-istanbul-instrumenter']
     },
 
-    browsers: ["ChromeHeadless"],
+    browsers: ['ChromeHeadless'],
 
-    frameworks: ["mocha", "chai", "karma-typescript"],
+    frameworks: ['mocha', 'chai', 'karma-typescript'],
 
     karmaTypescriptConfig: {
       compilerOptions: {
-        target: "esnext",
-        module: "esnext",
-        typeRoots: ["../../../../third_party/devtools-node-modules/third_party/node_modules/@types"]
+        target: 'esnext',
+        module: 'esnext',
+        typeRoots: [node_modules_path + '@types']
       },
       coverageOptions: {
         instrumentation: false
       },
       bundlerOptions: {
         resolve: {
-          directories: ["../../../../third_party/devtools-node-modules/third_party/node_modules"]
+          directories: [node_modules_path]
         }
       },
       exclude: [
-        "scripts"
+        'scripts'
       ]
     },
 
@@ -50,12 +56,12 @@
     },
 
     plugins: [
-      "karma-chrome-launcher",
-      "karma-mocha",
-      "karma-chai",
-      "karma-typescript",
-      require('../../../../third_party/devtools-node-modules/third_party/node_modules/karma-coverage-istanbul-instrumenter'),
-      require('../../../../third_party/devtools-node-modules/third_party/node_modules/karma-coverage-istanbul-reporter')
+      'karma-chrome-launcher',
+      'karma-mocha',
+      'karma-chai',
+      'karma-typescript',
+      require(node_modules_path + 'karma-coverage-istanbul-instrumenter'),
+      require(node_modules_path + 'karma-coverage-istanbul-reporter')
     ],
 
     coverageIstanbulInstrumenter: {
@@ -63,8 +69,8 @@
     },
 
     coverageIstanbulReporter: {
-      reports: ["text", "html"],
-      dir: "karma-coverage"
+      reports: ['text', 'html'],
+      dir: 'karma-coverage'
     },
 
     singleRun: true
diff --git a/third_party/blink/renderer/devtools/scripts/README.md b/third_party/blink/renderer/devtools/scripts/README.md
index e7ac952..183bcdf 100644
--- a/third_party/blink/renderer/devtools/scripts/README.md
+++ b/third_party/blink/renderer/devtools/scripts/README.md
@@ -16,7 +16,6 @@
 - gulp - experimental build process written in node.js & gulp to remove the dependency on Chromium-specific build tools (i.e. gn and ninja)
 - hosted_mode - run DevTools on a localhost development server
 - jsdoc_validator - enforces the use of Closure type annotations
-- local_node - installs a local runtime of node.js
 
 ### Python Scripts
 - compile_frontend.py - runs closure compiler to do static type analysis
@@ -30,4 +29,4 @@
 
 ## Closure
 
-DevTools manually rolls the closure compiler to ./closure. If you manually roll closure compiler, you will need to re-generate the closure_runner (in ./closure) and jsdoc_validator custom jars using the python scripts in their respective directory.
\ No newline at end of file
+DevTools manually rolls the closure compiler to ./closure. If you manually roll closure compiler, you will need to re-generate the closure_runner (in ./closure) and jsdoc_validator custom jars using the python scripts in their respective directory.
diff --git a/third_party/blink/renderer/devtools/scripts/devtools_paths.py b/third_party/blink/renderer/devtools/scripts/devtools_paths.py
new file mode 100644
index 0000000..14d721c7
--- /dev/null
+++ b/third_party/blink/renderer/devtools/scripts/devtools_paths.py
@@ -0,0 +1,73 @@
+# Copyright 2019 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.
+"""
+Helper to find the path to the correct third_party directory
+"""
+
+from os import path
+import sys
+
+
+# Find the root path of the checkout.
+# In the Chromium repository, this is the src/chromium directory.
+# In the external repository, standalone build, this is the devtools-frontend directory.
+# In the external repository, integrated build, this is the src/chromium directory.
+def root_path():
+    SCRIPTS_PATH = path.dirname(path.abspath(__file__))
+    ABS_DEVTOOLS_PATH = path.dirname(SCRIPTS_PATH)
+    PARENT_PATH = path.dirname(ABS_DEVTOOLS_PATH)
+    # TODO(1011259): remove Chromium repository handling
+    if path.basename(PARENT_PATH) == 'renderer':
+        # Chromium repository
+        return path.dirname(path.dirname(path.dirname(PARENT_PATH)))
+    elif path.basename(PARENT_PATH) == 'third_party':
+        # External repository, integrated build
+        return path.dirname(PARENT_PATH)
+    else:
+        # External repository, standalone build
+        return ABS_DEVTOOLS_PATH
+
+
+# This is the third_party path relative to the root of the checkout.
+def third_party_path():
+    return path.join(root_path(), 'third_party')
+
+
+# This points to the node binary downloaded as part of the checkout.
+def node_path():
+    try:
+        old_sys_path = sys.path[:]
+        sys.path.append(path.join(third_party_path(), 'node'))
+        import node
+    finally:
+        sys.path = old_sys_path
+    return node.GetBinaryPath()
+
+
+DEVTOOLS_ROOT_PATH = path.join(path.dirname(__file__), '..')
+
+
+def node_modules_path():
+    SCRIPTS_PATH = path.dirname(path.abspath(__file__))
+    ABS_DEVTOOLS_PATH = path.dirname(SCRIPTS_PATH)
+    PARENT_PATH = path.dirname(ABS_DEVTOOLS_PATH)
+    # TODO(1011259): remove Chromium repository handling
+    if path.basename(PARENT_PATH) == 'renderer':
+        # While in Chromium repo, node modules are hosted in //third_party/devtools-node-modules.
+        return path.join(root_path(), 'third_party', 'devtools-node-modules', 'third_party', 'node_modules')
+    else:
+        # In the external repo, node modules are hosted in root.
+        return path.join(root_path(), 'node_modules')
+
+
+def eslint_path():
+    return path.join(node_modules_path(), 'eslint', 'bin', 'eslint.js')
+
+
+def karma_path():
+    return path.join(node_modules_path(), 'karma', 'bin', 'karma')
+
+
+def package_json_path():
+    return path.join(DEVTOOLS_ROOT_PATH, 'package.json')
diff --git a/third_party/blink/renderer/devtools/scripts/lint_javascript.py b/third_party/blink/renderer/devtools/scripts/lint_javascript.py
index 4479e58..19d31cd 100755
--- a/third_party/blink/renderer/devtools/scripts/lint_javascript.py
+++ b/third_party/blink/renderer/devtools/scripts/lint_javascript.py
@@ -9,7 +9,7 @@
 import subprocess
 import sys
 
-import local_node
+import devtools_paths
 
 files_to_lint = None
 
@@ -63,8 +63,8 @@
     eslintconfig_path = path.join(devtools_path, ".eslintrc.js")
     eslintignore_path = path.join(devtools_path, ".eslintignore")
     exec_command = [
-        local_node.node_path(),
-        local_node.eslint_path(),
+        devtools_paths.node_path(),
+        devtools_paths.eslint_path(),
         "--config",
         to_platform_path_exact(eslintconfig_path),
         "--ignore-path",
diff --git a/third_party/blink/renderer/devtools/scripts/local_node.py b/third_party/blink/renderer/devtools/scripts/local_node.py
deleted file mode 100644
index 25a378c..0000000
--- a/third_party/blink/renderer/devtools/scripts/local_node.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2017 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""
-Thin wrapper around the local node.js installed as part of chromium DEPS
-"""
-
-from os import path
-import sys
-
-SCRIPTS_PATH = path.dirname(path.abspath(__file__))
-THIRD_PARTY_PATH = path.join(SCRIPTS_PATH, '..', '..', '..', '..')
-NODE_PATH = path.join(THIRD_PARTY_PATH, 'node')
-ESLINT_PATH = path.join(THIRD_PARTY_PATH, 'devtools-node-modules', 'third_party', 'node_modules', 'eslint', 'bin', 'eslint.js')
-KARMA_PATH = path.join(THIRD_PARTY_PATH, 'devtools-node-modules', 'third_party', 'node_modules', 'karma', 'bin', 'karma')
-NODE_MODULES_PATH = path.join(THIRD_PARTY_PATH, 'devtools-node-modules', 'third_party', 'node_modules')
-
-try:
-    old_sys_path = sys.path[:]
-    sys.path.append(NODE_PATH)
-    import node
-finally:
-    sys.path = old_sys_path
-
-
-def node_path():
-    return node.GetBinaryPath()
-
-
-def eslint_path():
-    return ESLINT_PATH
-
-
-def karma_path():
-    return KARMA_PATH
-
-
-def node_modules_path():
-    return NODE_MODULES_PATH
diff --git a/third_party/blink/renderer/devtools/scripts/run_tests.py b/third_party/blink/renderer/devtools/scripts/run_tests.py
index 5289dcd4..6f95fb0 100755
--- a/third_party/blink/renderer/devtools/scripts/run_tests.py
+++ b/third_party/blink/renderer/devtools/scripts/run_tests.py
@@ -9,7 +9,7 @@
 import subprocess
 import sys
 
-import local_node
+import devtools_paths
 
 is_cygwin = sys.platform == "cygwin"
 chrome_binary = None
@@ -48,9 +48,9 @@
     karma_errors_found = False
 
     karmaconfig_path = os.path.join(devtools_path, "karma.conf.js")
-    exec_command = [local_node.node_path(), local_node.karma_path(), "start", to_platform_path_exact(karmaconfig_path)]
+    exec_command = [devtools_paths.node_path(), devtools_paths.karma_path(), "start", to_platform_path_exact(karmaconfig_path)]
 
-    env = {'NODE_PATH': local_node.node_modules_path()}
+    env = {'NODE_PATH': devtools_paths.node_modules_path()}
     if (chrome_binary is not None):
         env['CHROME_BIN'] = chrome_binary
 
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
index 809e3b94..87d82645 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
@@ -7516,9 +7516,12 @@
 }
 
 void WebGLRenderingContextBase::PrintWarningToConsole(const String& message) {
-  Host()->GetTopExecutionContext()->AddConsoleMessage(
-      ConsoleMessage::Create(mojom::ConsoleMessageSource::kRendering,
-                             mojom::ConsoleMessageLevel::kWarning, message));
+  blink::ExecutionContext* context = Host()->GetTopExecutionContext();
+  if (context) {
+    context->AddConsoleMessage(
+        ConsoleMessage::Create(mojom::ConsoleMessageSource::kRendering,
+                               mojom::ConsoleMessageLevel::kWarning, message));
+  }
 }
 
 bool WebGLRenderingContextBase::ValidateFramebufferFuncParameters(
diff --git a/third_party/blink/renderer/modules/xr/xr.cc b/third_party/blink/renderer/modules/xr/xr.cc
index e1975ebf..97cfbc7 100644
--- a/third_party/blink/renderer/modules/xr/xr.cc
+++ b/third_party/blink/renderer/modules/xr/xr.cc
@@ -13,8 +13,12 @@
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
 #include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/core/dom/dom_exception.h"
+#include "third_party/blink/renderer/core/dom/element.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
+#include "third_party/blink/renderer/core/fullscreen/fullscreen.h"
+#include "third_party/blink/renderer/core/html/html_element.h"
 #include "third_party/blink/renderer/core/inspector/console_message.h"
+#include "third_party/blink/renderer/core/layout/layout_view.h"
 #include "third_party/blink/renderer/core/loader/document_loader.h"
 #include "third_party/blink/renderer/modules/event_modules.h"
 #include "third_party/blink/renderer/modules/event_target_modules.h"
@@ -111,6 +115,7 @@
 // unrecognized, returns nullopt. Based on the spec:
 // https://immersive-web.github.io/webxr/#feature-name
 base::Optional<device::mojom::XRSessionFeature> StringToXRSessionFeature(
+    const Document* doc,
     const String& feature_string) {
   if (feature_string == "viewer") {
     return device::mojom::XRSessionFeature::REF_SPACE_VIEWER;
@@ -122,6 +127,9 @@
     return device::mojom::XRSessionFeature::REF_SPACE_BOUNDED_FLOOR;
   } else if (feature_string == "unbounded") {
     return device::mojom::XRSessionFeature::REF_SPACE_UNBOUNDED;
+  } else if (RuntimeEnabledFeatures::WebXRARDOMOverlayEnabled(doc) &&
+             feature_string == "dom-overlay-for-handheld-ar") {
+    return device::mojom::XRSessionFeature::DOM_OVERLAY_FOR_HANDHELD_AR;
   }
 
   return base::nullopt;
@@ -138,6 +146,8 @@
     case device::mojom::XRSessionFeature::REF_SPACE_UNBOUNDED:
       return mode == XRSession::kModeImmersiveVR ||
              mode == XRSession::kModeImmersiveAR;
+    case device::mojom::XRSessionFeature::DOM_OVERLAY_FOR_HANDHELD_AR:
+      return mode == XRSession::kModeImmersiveAR;
   }
 }
 
@@ -153,6 +163,7 @@
     case device::mojom::XRSessionFeature::REF_SPACE_LOCAL_FLOOR:
     case device::mojom::XRSessionFeature::REF_SPACE_BOUNDED_FLOOR:
     case device::mojom::XRSessionFeature::REF_SPACE_UNBOUNDED:
+    case device::mojom::XRSessionFeature::DOM_OVERLAY_FOR_HANDHELD_AR:
       return doc->IsFeatureEnabled(mojom::FeaturePolicyFeature::kWebXr,
                                    ReportOptions::kReportOnFailure);
   }
@@ -479,6 +490,44 @@
 void XR::ExitPresent() {
   DCHECK(service_);
   service_->ExitPresent();
+
+  // If the document was potentially being shown in a DOM overlay via
+  // fullscreened elements, make sure to clear any fullscreen states on exiting
+  // the session. This avoids a race condition:
+  // - browser side ends session and exits fullscreen (i.e. back button)
+  // - renderer processes WebViewImpl::ExitFullscreen via ChromeClient
+  // - JS application sets a new element to fullscreen, this is allowed
+  //   because doc->IsImmersiveArOverlay() is still true at this point
+  // - renderer processes XR session shutdown (this method)
+  // - browser re-enters fullscreen unexpectedly
+  LocalFrame* frame = GetFrame();
+  if (!frame)
+    return;
+
+  Document* doc = frame->GetDocument();
+  DCHECK(doc);
+  if (doc->IsImmersiveArOverlay()) {
+    doc->SetIsImmersiveArOverlay(false);
+    Element* fullscreen_element = Fullscreen::FullscreenElementFrom(*doc);
+    if (fullscreen_element) {
+      // "ua_originated" means that the browser process already exited
+      // fullscreen. Set it to false because we need the browser process
+      // to get notified that it needs to exit fullscreen. Use
+      // FullyExitFullscreen to ensure that we return to non-fullscreen mode.
+      // ExitFullscreen only unfullscreens a single element, potentially
+      // leaving others in fullscreen mode.
+      constexpr bool kUaOriginated = false;
+      Fullscreen::FullyExitFullscreen(*doc, kUaOriginated);
+    }
+    // Restore the FrameView background color that was changed in
+    // OnRequestSessionReturned.
+    auto* frame_view = doc->GetLayoutView()->GetFrameView();
+    // SetBaseBackgroundColor updates composited layer mappings.
+    // That DCHECKs IsAllowedToQueryCompositingState which requires
+    // DocumentLifecycle >= kInCompositingUpdate.
+    frame_view->UpdateLifecycleToCompositingInputsClean();
+    frame_view->SetBaseBackgroundColor(original_base_background_color_);
+  }
 }
 
 ScriptPromise XR::supportsSession(ScriptState* script_state,
@@ -664,7 +713,7 @@
   for (const auto& feature : features) {
     String feature_string;
     if (feature.ToString(feature_string)) {
-      auto feature_enum = StringToXRSessionFeature(feature_string);
+      auto feature_enum = StringToXRSessionFeature(doc, feature_string);
 
       if (!feature_enum) {
         GetExecutionContext()->AddConsoleMessage(ConsoleMessage::Create(
@@ -890,6 +939,45 @@
                                 TaskType::kMiscPlatformAPI)));
       environment_provider_.set_connection_error_handler(WTF::Bind(
           &XR::OnEnvironmentProviderDisconnect, WrapWeakPersistent(this)));
+      LocalFrame* frame = GetFrame();
+      DCHECK(frame);
+
+      if (enabled_features.Contains(
+              device::mojom::XRSessionFeature::DOM_OVERLAY_FOR_HANDHELD_AR)) {
+        // The session is using DOM overlay mode.
+        Document* doc = frame->GetDocument();
+        DCHECK(doc);
+        doc->SetIsImmersiveArOverlay(true);
+
+        // Save the current base background color (restored in ExitPresent),
+        // and set a transparent background for the FrameView.
+        auto* frame_view = doc->GetLayoutView()->GetFrameView();
+        // SetBaseBackgroundColor updates composited layer mappings.
+        // That DCHECKs IsAllowedToQueryCompositingState which requires
+        // DocumentLifecycle >= kInCompositingUpdate.
+        frame_view->UpdateLifecycleToCompositingInputsClean();
+        original_base_background_color_ = frame_view->BaseBackgroundColor();
+        frame_view->SetBaseBackgroundColor(Color::kTransparent);
+
+        // In DOM overlay mode, entering fullscreen mode needs to be triggered
+        // from the Renderer by actually fullscreening an element. If there
+        // is no current fullscreen element, fullscreen the <body> element
+        // for now. The JS application can use enterFullscreen to change this.
+        //
+        // A TabObserver on the browser side exits the session if there's
+        // no longer a fullscreen element, for example if the JS app manually
+        // unfullscreens the "body" element. That ensures we don't end up in a
+        // hybrid non-fullscreen AR state.
+        Element* fullscreen_element = Fullscreen::FullscreenElementFrom(*doc);
+        if (!fullscreen_element) {
+          Element* body = doc->body();
+          DCHECK(body);
+          // FIXME: this is the "prefixed" version that doesn't generate a
+          // fullscreenchange event and auto-hides navigation bars. Should the
+          // event be generated?
+          Fullscreen::RequestFullscreen(*body);
+        }
+      }
     }
 
     if (query->mode() == XRSession::kModeImmersiveVR &&
diff --git a/third_party/blink/renderer/modules/xr/xr.h b/third_party/blink/renderer/modules/xr/xr.h
index 667bbf7..aa1e0137 100644
--- a/third_party/blink/renderer/modules/xr/xr.h
+++ b/third_party/blink/renderer/modules/xr/xr.h
@@ -16,6 +16,7 @@
 #include "third_party/blink/renderer/core/page/focus_changed_observer.h"
 #include "third_party/blink/renderer/modules/xr/xr_session.h"
 #include "third_party/blink/renderer/modules/xr/xr_session_init.h"
+#include "third_party/blink/renderer/platform/graphics/color.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
@@ -313,6 +314,9 @@
 
   FrameOrWorkerScheduler::SchedulingAffectingFeatureHandle
       feature_handle_for_scheduler_;
+
+  // In DOM overlay mode, save and restore the FrameView background color.
+  Color original_base_background_color_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
index 230b835..17692db8 100644
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -465,6 +465,10 @@
   RuntimeEnabledFeatures::SetWebXRARModuleEnabled(enable);
 }
 
+void WebRuntimeFeatures::EnableWebXRARDOMOverlay(bool enable) {
+  RuntimeEnabledFeatures::SetWebXRARDOMOverlayEnabled(enable);
+}
+
 void WebRuntimeFeatures::EnableWebXRAnchors(bool enable) {
   RuntimeEnabledFeatures::SetWebXRAnchorsEnabled(enable);
 }
@@ -668,12 +672,6 @@
   RuntimeEnabledFeatures::SetDisplayLockingEnabled(enable);
 }
 
-void WebRuntimeFeatures::EnablePauseExecutionContextOnBackgroundFreeze(
-    bool enable) {
-  RuntimeEnabledFeatures::SetPauseExecutionContextOnBackgroundFreezeEnabled(
-      enable);
-}
-
 void WebRuntimeFeatures::EnableConsolidatedMovementXY(bool enable) {
   RuntimeEnabledFeatures::SetConsolidatedMovementXYEnabled(enable);
 }
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 96a19d0..4e26722 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1194,10 +1194,6 @@
       name: "PassPaintVisualRectToCompositor",
     },
     {
-      name: "PauseExecutionContextOnBackgroundFreeze",
-      status: "stable",
-    },
-    {
       name: "PaymentApp",
       status: "experimental",
     },
@@ -1801,6 +1797,11 @@
       // depends_on: ["WebXRARModule"],  // TODO(https://crbug.com/954679): uncomment once bug is fixed
     },
     {
+      name: "WebXRARDOMOverlay",
+      // depends_on: ["WebXRARModule"],  // TODO(https://crbug.com/954679): uncomment once bug is fixed
+      status: "experimental",
+    },
+    {
       name: "WebXRARModule",
       // depends_on: ["WebXR"],  // TODO(https://crbug.com/954679): uncomment once bug is fixed
       status: "experimental",
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/fuchsia.py b/third_party/blink/tools/blinkpy/web_tests/port/fuchsia.py
index 89c6bb88..d1b67bdd 100644
--- a/third_party/blink/tools/blinkpy/web_tests/port/fuchsia.py
+++ b/third_party/blink/tools/blinkpy/web_tests/port/fuchsia.py
@@ -160,8 +160,7 @@
                                                    stderr=subprocess.PIPE)
 
         package_path = os.path.join(build_path, CONTENT_SHELL_PACKAGE_PATH)
-        self._target.InstallPackage(package_path, "content_shell",
-                                    package_deps=[])
+        self._target.InstallPackage([package_path])
 
         # Process will be forked for each worker, which may make QemuTarget
         # unusable (e.g. waitpid() for qemu process returns ECHILD after
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint
index 6343ea3..aba94a8 100644
--- a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint
+++ b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint
@@ -33,12 +33,15 @@
 Bug(none) virtual/android/url-bar/bottom-and-top-fixed-sticks-to-top.html [ Crash ]
 Bug(none) virtual/android/url-bar/bottom-fixed-adjusted-when-showing-url-bar.html [ Crash ]
 
+# Composited filters are not working.
+crbug.com/1008501 compositing/culling/filter-occlusion-blur-large.html [ Failure ]
+crbug.com/1008501 compositing/culling/filter-occlusion-blur.html [ Failure ]
+crbug.com/1008501 compositing/reflections/deeply-nested-reflections.html [ Failure ]
+
 Bug(none) compositing/animation/hidden-composited.html [ Failure ]
 Bug(none) compositing/change-preferCompositingToLCDText-setting.html [ Failure ]
 Bug(none) compositing/contents-opaque/hidden-with-visible-child.html [ Failure ]
 Bug(none) compositing/contents-opaque/layer-opacity.html [ Failure ]
-Bug(none) compositing/culling/filter-occlusion-blur-large.html [ Failure ]
-Bug(none) compositing/culling/filter-occlusion-blur.html [ Failure ]
 Bug(none) compositing/draws-content/canvas-background-layer.html [ Failure ]
 Bug(none) compositing/draws-content/webgl-background-layer.html [ Failure ]
 Bug(none) compositing/geometry/bounds-clipped-composited-child.html [ Failure ]
@@ -77,7 +80,6 @@
 crbug.com/667946 compositing/overflow/scrolls-with-respect-to-nested.html [ Failure ]
 crbug.com/667946 compositing/overflow/scrolls-with-respect-to-transform.html [ Failure ]
 crbug.com/667946 compositing/overflow/scrolls-with-respect-to.html [ Failure ]
-Bug(none) compositing/reflections/deeply-nested-reflections.html [ Failure ]
 Bug(none) compositing/reflections/nested-reflection-mask-change.html [ Failure ]
 Bug(none) compositing/rtl/rtl-iframe-absolute.html [ Failure ]
 Bug(none) compositing/rtl/rtl-iframe-relative.html [ Failure ]
@@ -101,7 +103,6 @@
 Bug(none) compositing/video/video-poster.html [ Failure ]
 Bug(none) compositing/visibility/layer-visible-content.html [ Failure ]
 Bug(none) compositing/visibility/visibility-image-layers-dynamic.html [ Failure ]
-Bug(none) css3/masking/mask-composite-missing-image.html [ Failure ]
 Bug(none) external/wpt/css/css-transforms/transform3d-backface-visibility-006.html [ Failure ]
 Bug(none) external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-overflow.html [ Crash ]
 Bug(none) external/wpt/largest-contentful-paint/invisible-images.html [ Failure ]
diff --git a/third_party/blink/web_tests/FlagExpectations/use-vulkan=native b/third_party/blink/web_tests/FlagExpectations/use-vulkan=native
index 4d61824..9138e47 100644
--- a/third_party/blink/web_tests/FlagExpectations/use-vulkan=native
+++ b/third_party/blink/web_tests/FlagExpectations/use-vulkan=native
@@ -15,9 +15,6 @@
 crbug.com/993384 transforms/transformed-document-element.html [ Skip ]
 crbug.com/993384 transforms/3d/point-mapping/3d-point-mapping-deep.html [ Skip ]
 
-# Not rendering the rightmost frame.
-crbug.com/1001616 media/alpha-video-playback.html [ Skip ]
-
 # OffscreenCanvas not rendering.
 crbug.com/1002538 fast/canvas/OffscreenCanvas-2d-drawImage-in-worker.html [ Skip ]
 crbug.com/1002538 fast/canvas/OffscreenCanvas-2d-drawImage.html [ Skip ]
@@ -41,10 +38,5 @@
 crbug.com/1002547 fast/canvas/imagebitmap/transferFromImageBitmap-no-alpha.html [ Skip ]
 crbug.com/1002547 fast/canvas/imagebitmap/transferFromImageBitmap.html [ Skip ]
 
-# Canvas not painting correctly.
-crbug.com/1003794 fast/canvas/canvas-composite-video-shadow.html [ Skip ]
-crbug.com/1003794 fast/canvas/canvas-composite-video.html [ Skip ]
-crbug.com/1003794 fast/canvas/canvas-pattern-video.html [ Skip ]
-
 # createImageBitmap fails for HTMLVideoElement
 crbug.com/1003799 fast/canvas/color-space/canvas-createImageBitmap-p3.html [ Skip ]
diff --git a/third_party/blink/web_tests/FlagExpectations/use-vulkan=swiftshader b/third_party/blink/web_tests/FlagExpectations/use-vulkan=swiftshader
index d721178..d3d8b61b 100644
--- a/third_party/blink/web_tests/FlagExpectations/use-vulkan=swiftshader
+++ b/third_party/blink/web_tests/FlagExpectations/use-vulkan=swiftshader
@@ -1,9 +1,6 @@
 # Test consistently hitting default timeout.
 Bug(none) css3/filters/effect-reference-subregion.html [ Skip ]
 
-# Not rendering the rightmost frame.
-crbug.com/1001616 media/alpha-video-playback.html [ Skip ]
-
 # OffscreenCanvas not rendering.
 crbug.com/1002538 fast/canvas/OffscreenCanvas-2d-drawImage-in-worker.html [ Skip ]
 crbug.com/1002538 fast/canvas/OffscreenCanvas-2d-drawImage.html [ Skip ]
@@ -27,10 +24,5 @@
 crbug.com/1002547 fast/canvas/imagebitmap/transferFromImageBitmap-no-alpha.html [ Skip ]
 crbug.com/1002547 fast/canvas/imagebitmap/transferFromImageBitmap.html [ Skip ]
 
-# Canvas not painting correctly.
-crbug.com/1003794 fast/canvas/canvas-composite-video-shadow.html [ Skip ]
-crbug.com/1003794 fast/canvas/canvas-composite-video.html [ Skip ]
-crbug.com/1003794 fast/canvas/canvas-pattern-video.html [ Skip ]
-
 # createImageBitmap fails for HTMLVideoElement
 crbug.com/1003799 fast/canvas/color-space/canvas-createImageBitmap-p3.html [ Skip ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 7743f5d..e0a61ff 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -749,12 +749,10 @@
 crbug.com/591099 fast/selectors/shadow-host-div-with-text.html [ Failure ]
 crbug.com/591099 fast/text/selection/inline-block-in-selection-root.html [ Failure ]
 crbug.com/591099 paint/invalidation/media-audio-no-spurious-repaints.html [ Failure Timeout ]
-crbug.com/591099 paint/invalidation/text-match-document-change.html [ Failure ]
 crbug.com/591099 paint/invalidation/compositing/composited-float-under-composited-inline-individual.html [ Failure ]
 crbug.com/591099 paint/invalidation/compositing/composited-float-under-composited-inline.html [ Failure ]
 crbug.com/591099 paint/invalidation/compositing/float-under-composited-inline.html [ Failure ]
 crbug.com/591099 paint/invalidation/compositing/stacked-float-under-composited-inline.html [ Failure ]
-crbug.com/591099 paint/invalidation/selection/selection-clear.html [ Failure ]
 crbug.com/591099 virtual/composite-after-paint/paint/background/scrolling-background-with-negative-z-child.html [ Failure Crash ]
 crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-list-item-002.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer.html [ Failure ]
@@ -835,10 +833,6 @@
 # crbug.com/591099 [ Mac10.11 ] media/track/track-cue-rendering-position-auto-rtl.html [ Failure ]
 crbug.com/591099 [ Mac10.11 ] virtual/audio-service/media/track/track-cue-rendering-position-auto-rtl.html [ Failure ]
 crbug.com/591099 [ Mac10.11 ] virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] compositing/geometry/root-layer-update.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] compositing/overlap-blending/reflection-opacity-huge.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] compositing/reflections/reflection-positioning2.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] compositing/reflections/transform-inside-reflection.html [ Failure ]
 crbug.com/591099 [ Mac10.13 ] css1/basic/inheritance.html [ Failure ]
 crbug.com/591099 [ Mac10.13 ] css1/box_properties/acid_test.html [ Failure ]
 crbug.com/591099 [ Mac10.13 ] css1/box_properties/border_bottom.html [ Failure ]
@@ -1143,53 +1137,6 @@
 crbug.com/591099 [ Mac10.13 ] virtual/audio-service/media/video-colorspace-yuv420.html [ Failure ]
 crbug.com/591099 [ Mac10.13 ] media/video-empty-source.html [ Failure ]
 crbug.com/591099 [ Mac10.13 ] virtual/audio-service/media/video-empty-source.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/compositing/layer-repaint-rects.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/crbug-371640.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/flexbox/repaint.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/float-new-in-block.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/forms/details-marker-color-change.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/line-flow-with-floats-7.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/line-flow-with-floats-9.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/list-marker-2.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/outline/focus-continuations.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/outline/focus-ring-on-child-move.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/outline/focus-ring-on-continuation-move.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/outline/outline-continuations.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/overflow/flexible-box-overflow-horizontal.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/overflow/inline-overflow.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/overflow/inline-vertical-rl-overflow.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/overflow/vertical-overflow-child.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/position/positioned-document-element.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/position/positioned-great-grandparent-change-location.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/repaint-across-writing-mode-boundary.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/scale-page-shrink.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/scroll/layout-state-scrolloffset.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/scroll/layout-state-scrolloffset3.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/scroll/overflow-scroll-body-appear.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/selection/invalidation-rect-with-br-includes-newline.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/selection/japanese-rl-selection-clear.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/selection/selection-change-in-iframe-with-relative-parent.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/selection/text-selection-rect-in-overflow-2.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/stacked-diacritics.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/svg/absolute-sized-content-with-resources.xhtml [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/svg/embedded-svg-size-changes.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/svg/relative-sized-use-without-attributes-on-symbol.xhtml [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/transform/transform-inline-layered-child.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/vertical-align2.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/invalidation/vertical-rl-as-paint-container.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/markers/active-suggestion-marker-split.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/markers/inline-spelling-markers-hidpi-composited.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/markers/inline_spelling_markers.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/selection/image-writing-modes.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/selection/text-selection-newline-across-blocks-line-beginning-end.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/selection/text-selection-newline-across-blocks.html [ Failure ]
-crbug.com/591099 [ Mac10.13 ] paint/selection/text-selection-newline-rtl.html [ Failure ]
 crbug.com/591099 [ Mac10.13 ] plugins/embed-attributes-style.html [ Failure ]
 crbug.com/591099 [ Mac10.13 ] svg/custom/clone-element-with-animated-svg-properties.html [ Failure ]
 crbug.com/591099 [ Mac10.13 ] svg/custom/svg-fonts-in-html.html [ Failure ]
@@ -3022,11 +2969,6 @@
 
 crbug.com/552085 external/wpt/css/css-cascade/important-prop.html [ Failure ]
 
-# TODO(chrishtr): rebaseline these
-crbug.com/921242 [ Mac ] paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer.html [ Failure ]
-crbug.com/921242 [ Mac ] paint/invalidation/scroll/fixed-under-composited-absolute-scrolled.html [ Failure ]
-crbug.com/921242 [ Mac ] paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled.html [ Failure ]
-
 # Failures on Mac scrollbars for compositor threaded scrollbar scrolling.
 crbug.com/953847 [ Mac ] fast/scrolling/scrollbars/mouse-scrolling-on-div-scrollbar.html [ Failure ]
 crbug.com/953847 [ Mac ] fast/scrolling/scrollbars/mouse-scrolling-on-root-scrollbar.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
index 12d901d..3470a72 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
@@ -59687,6 +59687,18 @@
      {}
     ]
    ],
+   "css/css-overflow/float-with-relpos-and-transform.html": [
+    [
+     "css/css-overflow/float-with-relpos-and-transform.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square-only.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-overflow/input-scrollable-region-001.html": [
     [
      "css/css-overflow/input-scrollable-region-001.html",
@@ -382628,6 +382640,10 @@
    "b9ba7acd150e5022de5c5208cd7f5f7d4dde93c3",
    "support"
   ],
+  "css/css-overflow/float-with-relpos-and-transform.html": [
+   "6024b7261750e0c5dc4a681dccee2ab72b83abca",
+   "reftest"
+  ],
   "css/css-overflow/inheritance-expected.txt": [
    "59864d0f4d185ece259879a299f597b80f9babdc",
    "support"
@@ -439121,15 +439137,15 @@
    "testharness"
   ],
   "html/dom/idlharness.https.html": [
-   "0d3f1160d2819601afb2168bc15bfeeaddfed6f1",
+   "33ad5c6f6169a7e376aaadeba1b8df4dd6815f7c",
    "testharness"
   ],
   "html/dom/idlharness.https_exclude=(Document_Window_HTML._)-expected.txt": [
-   "78664a5bbda46b6f424ce8a0fd23145b02385e33",
+   "246c8152300318511d24cda98c3005c72f5390d3",
    "support"
   ],
   "html/dom/idlharness.https_include=(Document_Window)-expected.txt": [
-   "d669b1db8574ee30dd408b074ff3f5a8e1d59c34",
+   "dc7ef25a1b2b646088fa01b69023aa9d05c125f3",
    "support"
   ],
   "html/dom/idlharness.https_include=HTML._-expected.txt": [
@@ -499313,7 +499329,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/firefox.py": [
-   "290fcff5ab22bd5ca19cedb4d3f38f5b8197768f",
+   "1763ff44b4e55c14c8f5d753defb3ba39e017262",
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/firefox_android.py": [
diff --git a/third_party/blink/web_tests/external/wpt/compat/webkit-box-removing-triggering-anonymous-merge.html b/third_party/blink/web_tests/external/wpt/compat/webkit-box-removing-triggering-anonymous-merge.html
new file mode 100644
index 0000000..8506425
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/compat/webkit-box-removing-triggering-anonymous-merge.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div style="display: -webkit-box">
+  <span><div></div></span>
+  <div id="target"></div>
+  text
+</div>
+<script>
+// Force a layout before removing.
+document.body.offsetTop;
+document.getElementById('target').remove();
+done();
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-overflow/float-with-relpos-and-transform.html b/third_party/blink/web_tests/external/wpt/css/css-overflow/float-with-relpos-and-transform.html
new file mode 100644
index 0000000..6024b72
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-overflow/float-with-relpos-and-transform.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<link rel="help" href="https://drafts.csswg.org/css-overflow/#scrollable">
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<style>
+.container {
+  background: green;
+  width: 100px;
+  height: 100px;
+  overflow: auto;
+}
+.float {
+  float: left;
+  position: relative;
+  width: 50px;
+  height: 50px;
+  top: calc(50% - 100vh);
+  transform: translateY(-50%) translateY(100vh);
+}
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div class="container">
+  <div class="float"></div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https.html b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https.html
index 0d3f116..33ad5c6 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https.html
@@ -47,6 +47,7 @@
         documentWithHandlers[callback.name] = handler;
       }
     }
+    idlArray.add_untested_idls('typedef Window WindowProxy;');
 
     idlArray.add_objects({
       NodeList: ['document.getElementsByName("name")'],
diff --git "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt" "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt"
index 78664a5..246c815 100644
--- "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt"
+++ "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt"
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 1390 tests; 1353 PASS, 37 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 1390 tests; 1354 PASS, 36 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS idl_test setup
 PASS idl_test validation
 PASS Partial interface Document: original interface defined
@@ -1117,7 +1117,7 @@
 PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "data" with the proper type
 PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "origin" with the proper type
 PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "lastEventId" with the proper type
-FAIL MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type Unrecognized type WindowProxy
+PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type
 PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type
 PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object])" with the proper type
 PASS MessageEvent interface: calling initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object]) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError
diff --git "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt" "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt"
index d669b1d..dc7ef25 100644
--- "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt"
+++ "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt"
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 939 tests; 908 PASS, 31 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 939 tests; 912 PASS, 27 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS idl_test setup
 PASS idl_test validation
 PASS Partial interface Document: original interface defined
@@ -316,7 +316,7 @@
 PASS Window must be primary interface of window
 PASS Stringification of window
 FAIL Window interface: window must have own property "window" assert_false: property descriptor should not have a "value" field expected false got true
-FAIL Window interface: window must inherit property "self" with the proper type Unrecognized type WindowProxy
+PASS Window interface: window must inherit property "self" with the proper type
 PASS Window interface: window must have own property "document"
 PASS Window interface: window must inherit property "name" with the proper type
 FAIL Window interface: window must have own property "location" assert_false: property descriptor should not have a "value" field expected false got true
@@ -334,11 +334,11 @@
 PASS Window interface: window must inherit property "stop()" with the proper type
 PASS Window interface: window must inherit property "focus()" with the proper type
 PASS Window interface: window must inherit property "blur()" with the proper type
-FAIL Window interface: window must inherit property "frames" with the proper type Unrecognized type WindowProxy
+PASS Window interface: window must inherit property "frames" with the proper type
 PASS Window interface: window must inherit property "length" with the proper type
 FAIL Window interface: window must have own property "top" assert_false: property descriptor should not have a "value" field expected false got true
 PASS Window interface: window must inherit property "opener" with the proper type
-FAIL Window interface: window must inherit property "parent" with the proper type Unrecognized type WindowProxy
+PASS Window interface: window must inherit property "parent" with the proper type
 PASS Window interface: window must inherit property "frameElement" with the proper type
 PASS Window interface: window must inherit property "open(USVString, DOMString, DOMString)" with the proper type
 PASS Window interface: calling open(USVString, DOMString, DOMString) on window with too few arguments must throw TypeError
@@ -601,7 +601,7 @@
 PASS Document interface: calling write(DOMString) on iframe.contentDocument with too few arguments must throw TypeError
 PASS Document interface: iframe.contentDocument must inherit property "writeln(DOMString)" with the proper type
 PASS Document interface: calling writeln(DOMString) on iframe.contentDocument with too few arguments must throw TypeError
-FAIL Document interface: iframe.contentDocument must inherit property "defaultView" with the proper type Unrecognized type WindowProxy
+PASS Document interface: iframe.contentDocument must inherit property "defaultView" with the proper type
 PASS Document interface: iframe.contentDocument must inherit property "hasFocus()" with the proper type
 PASS Document interface: iframe.contentDocument must inherit property "designMode" with the proper type
 PASS Document interface: iframe.contentDocument must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type
diff --git a/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js b/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js
index ccb7a00..94031657 100644
--- a/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js
+++ b/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js
@@ -187,6 +187,15 @@
 // Implements XRFrameDataProvider and XRPresentationProvider. Maintains a mock
 // for XRPresentationProvider.
 class MockRuntime {
+  // Mapping from string feature names to the corresponding mojo types.
+  // This is exposed as a member for extensibility.
+  static featureToMojoMap = {
+    "viewer": device.mojom.XRSessionFeature.REF_SPACE_VIEWER,
+    "local": device.mojom.XRSessionFeature.REF_SPACE_LOCAL,
+    "local-floor": device.mojom.XRSessionFeature.REF_SPACE_LOCAL_FLOOR,
+    "bounded-floor": device.mojom.XRSessionFeature.REF_SPACE_BOUNDED_FLOOR,
+    "unbounded": device.mojom.XRSessionFeature.REF_SPACE_UNBOUNDED };
+
   constructor(fakeDeviceInit, service) {
     this.sessionClient_ = new device.mojom.XRSessionClientPtr();
     this.presentation_provider_ = new MockXRPresentationProvider();
@@ -456,19 +465,10 @@
 
   setFeatures(supportedFeatures) {
     function convertFeatureToMojom(feature) {
-      switch (feature) {
-        case "viewer":
-          return device.mojom.XRSessionFeature.REF_SPACE_VIEWER;
-        case "local":
-          return device.mojom.XRSessionFeature.REF_SPACE_LOCAL;
-        case "local-floor":
-          return device.mojom.XRSessionFeature.REF_SPACE_LOCAL_FLOOR;
-        case "bounded-floor":
-          return device.mojom.XRSessionFeature.REF_SPACE_BOUNDED_FLOOR;
-        case "unbounded":
-          return device.mojom.XRSessionFeature.REF_SPACE_UNBOUNDED;
-        default:
-          return device.mojom.XRSessionFeature.INVALID;
+      if (feature in MockRuntime.featureToMojoMap) {
+        return MockRuntime.featureToMojoMap[feature];
+      } else {
+        return device.mojom.XRSessionFeature.INVALID;
       }
     }
 
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/firefox.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/firefox.py
index 290fcff..1763ff44 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/firefox.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/firefox.py
@@ -181,7 +181,7 @@
 
 
 def update_properties():
-    return (["os", "debug", "webrender", "e10s", "sw-e10s", "processor"],
+    return (["os", "debug", "webrender", "fisson", "e10s", "sw-e10s", "processor"],
             {"os": ["version"], "processor": ["bits"]})
 
 
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/masking/mask-composite-missing-image-expected.html b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/masking/mask-composite-missing-image-expected.html
deleted file mode 100644
index 3897208..0000000
--- a/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/css3/masking/mask-composite-missing-image-expected.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<html>
-<head>
-<style>
-.test {
-  width: 200px;
-  height: 200px;
-  border: 10px solid black;
-  background-color: lime;
-}
-</style>
-</head>
-<body>
-  <p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=26084">WebKit Bug 26084: Bug 26084: Multiple missing images in webkit-mask-image prevent rendering</a></p>
-  <div class="test">This text should be visible.</div>
-  <p>If the test passes, you should be able to see a lime square with a black border. Inside the border, you should see the text: This text should be visible. This test is currently failing.</p>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/media/encrypted-media/encrypted-media-playback-before-setmediakeys.html b/third_party/blink/web_tests/media/encrypted-media/encrypted-media-playback-before-setmediakeys.html
new file mode 100644
index 0000000..e7754a1
--- /dev/null
+++ b/third_party/blink/web_tests/media/encrypted-media/encrypted-media-playback-before-setmediakeys.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Playback before SetMediaKeys</title>
+        <script src="encrypted-media-utils.js"></script>
+        <script src="../../resources/testharness.js"></script>
+        <script src="../../resources/testharnessreport.js"></script>
+    </head>
+    <body>
+        <video></video>
+        <script>
+            promise_test(function(test)
+            {
+                var video = document.querySelector('video');
+                var content = '../content/test-encrypted.webm';
+                var mediaKeys;
+                var initData;
+                var initDataType;
+                var mediaKeySession;
+
+
+                // As this code doesn't wait for the 'message' event to avoid
+                // race conditions with 'waitingforkey', specify the key ID and
+                // key used by the encrypted content.
+                var keyId = stringToUint8Array('0123456789012345');
+                var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b,
+                                             0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]);
+
+                return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) {
+                    return access.createMediaKeys();
+                }).then(function(result) {
+                    // Store mediaKeys without setting it on the video.
+                    mediaKeys = result;
+                    video.src = content;
+                    video.play();
+                    return wait_for_encrypted_event(video);
+                }).then(function(e) {
+                    // Received the 'encrypted' event(s), so keep a copy of
+                    // the initdata for use when creating the session later.
+                    initData = e.initData;
+                    initDataType = e.initDataType;
+
+                    // Wait until the video indicates that it needs a key to
+                    // continue.
+                    return wait_for_waitingforkey_event(video);
+                }).then(function() {
+                    // Make sure the video is NOT paused and not progressing
+                    // before a key is provided. This requires the video
+                    // to NOT have a clear lead.
+                    assert_false(video.paused);
+                    assert_equals(video.currentTime, 0);
+
+                    // Create a session.
+                    mediaKeySession = mediaKeys.createSession();
+                    return mediaKeySession.generateRequest(initDataType, initData);
+                }).then(function() {
+                    // generateRequest() will cause a 'message' event to
+                    // occur specifying the keyId that is needed, but we
+                    // ignore it since we already know what keyId is needed.
+                    // Add the key needed to decrypt.
+                    var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, rawKey)));
+                    return mediaKeySession.update(jwkSet);
+                }).then(function() {
+                    // Now setMediaKeys() and playback should start.
+                    return video.setMediaKeys(mediaKeys);
+                }).then(function() {
+                    // Video should start playing now that it can decrypt the
+                    // streams, so wait until a little bit of the video has
+                    // played.
+                    return wait_for_timeupdate_event(video);
+                });
+
+                // Typical test duration is 6 seconds on release builds
+                // (12 seconds on debug). Since the test is timing out anyway,
+                // make the duration 5 seconds so that the timeout function
+                // is actually called (instead of simply aborting the test).
+            }, 'Playback before SetMediaKeys', { timeout: 5000 });
+
+            // Wait for a pair of 'encrypted' events. Promise resolved on
+            // second event.
+            function wait_for_encrypted_event(video)
+            {
+                var encryptedEventCount = 0;
+                return new Promise(function(resolve) {
+                    video.addEventListener('encrypted', function listener(e) {
+                        assert_equals(e.target, video);
+                        assert_true(e instanceof window.MediaEncryptedEvent);
+                        assert_equals(e.type, 'encrypted');
+
+                        // The same decryption key is used by both the audio
+                        // and the video streams so wait for the second event
+                        // to ensure we see both events.
+                        if (++encryptedEventCount != 2)
+                            return;
+
+                        video.removeEventListener('encrypted', listener);
+                        resolve(e);
+                    });
+                });
+            };
+
+            // Wait for a 'waitingforkey' event. Promise resolved when the
+            // event is received.
+            function wait_for_waitingforkey_event(video)
+            {
+                return new Promise(function(resolve) {
+                    video.addEventListener('waitingforkey', function listener(e) {
+                        assert_equals(e.target, video);
+                        assert_equals(e.type, 'waitingforkey');
+                        video.removeEventListener('waitingforkey', listener);
+                        resolve(e);
+                    });
+                });
+            };
+
+            // Wait for a 'timeupdate' event. Promise resolved if |video| has
+            // played for more than 0.2 seconds.
+            function wait_for_timeupdate_event(video)
+            {
+                return new Promise(function(resolve) {
+                    video.addEventListener('timeupdate', function listener(e) {
+                        assert_equals(e.target, video);
+                        if (video.currentTime < 0.2)
+                            return;
+                        video.removeEventListener('timeupdate', listener);
+                        resolve(e);
+                    });
+                });
+            };
+        </script>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/composited-float-under-composited-inline-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/composited-float-under-composited-inline-expected.txt
index 1a80e5c..b098b4b 100644
--- a/third_party/blink/web_tests/paint/invalidation/compositing/composited-float-under-composited-inline-expected.txt
+++ b/third_party/blink/web_tests/paint/invalidation/compositing/composited-float-under-composited-inline-expected.txt
@@ -1,39 +1,34 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "LayoutInline (relative positioned) SPAN",
-      "position": [108, 108],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
-      "position": [58, 58],
+      "name": "LayoutNGBlockFlow (relative positioned) (floating) DIV id='float'",
       "bounds": [100, 100],
       "contentsOpaque": true,
       "backgroundColor": "#008000",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
+          "object": "LayoutNGBlockFlow (relative positioned) (floating) DIV id='float'",
           "rect": [0, 0, 100, 100],
           "reason": "background"
         }
+      ],
+      "transform": 1
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [158, 158, 0, 1]
       ]
     }
   ]
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/composited-float-under-composited-inline-individual-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/composited-float-under-composited-inline-individual-expected.txt
index 1a80e5c..b098b4b 100644
--- a/third_party/blink/web_tests/paint/invalidation/compositing/composited-float-under-composited-inline-individual-expected.txt
+++ b/third_party/blink/web_tests/paint/invalidation/compositing/composited-float-under-composited-inline-individual-expected.txt
@@ -1,39 +1,34 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "LayoutInline (relative positioned) SPAN",
-      "position": [108, 108],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
-      "position": [58, 58],
+      "name": "LayoutNGBlockFlow (relative positioned) (floating) DIV id='float'",
       "bounds": [100, 100],
       "contentsOpaque": true,
       "backgroundColor": "#008000",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
+          "object": "LayoutNGBlockFlow (relative positioned) (floating) DIV id='float'",
           "rect": [0, 0, 100, 100],
           "reason": "background"
         }
+      ],
+      "transform": 1
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [158, 158, 0, 1]
       ]
     }
   ]
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/platform/win/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
rename to third_party/blink/web_tests/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/float-under-composited-inline-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/float-under-composited-inline-expected.txt
index 06ddd78..991dd77 100644
--- a/third_party/blink/web_tests/paint/invalidation/compositing/float-under-composited-inline-expected.txt
+++ b/third_party/blink/web_tests/paint/invalidation/compositing/float-under-composited-inline-expected.txt
@@ -1,33 +1,22 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='float'",
-          "rect": [8, 8, 100, 100],
-          "reason": "background"
-        }
-      ]
+      "backgroundColor": "#FFFFFF"
     },
     {
       "name": "LayoutInline (relative positioned) SPAN",
       "position": [108, 108],
-      "drawsContent": false
+      "bounds": [100, 100],
+      "paintInvalidations": [
+        {
+          "object": "LayoutNGBlockFlow (floating) DIV id='float'",
+          "rect": [0, 0, 100, 100],
+          "reason": "background"
+        }
+      ]
     }
   ]
 }
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/stacked-float-under-composited-inline-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/stacked-float-under-composited-inline-expected.txt
index 1cd6614..e69dec6a 100644
--- a/third_party/blink/web_tests/paint/invalidation/compositing/stacked-float-under-composited-inline-expected.txt
+++ b/third_party/blink/web_tests/paint/invalidation/compositing/stacked-float-under-composited-inline-expected.txt
@@ -1,17 +1,6 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
@@ -19,12 +8,12 @@
     },
     {
       "name": "LayoutInline (relative positioned) SPAN",
-      "position": [58, 58],
+      "position": [158, 158],
       "bounds": [100, 100],
       "contentsOpaque": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
+          "object": "LayoutNGBlockFlow (relative positioned) (floating) DIV id='float'",
           "rect": [0, 0, 100, 100],
           "reason": "background"
         }
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/text-selection-newline-rtl-expected.png b/third_party/blink/web_tests/paint/invalidation/selection/selection-clear-expected.png
similarity index 79%
rename from third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/text-selection-newline-rtl-expected.png
rename to third_party/blink/web_tests/paint/invalidation/selection/selection-clear-expected.png
index d291c255..4ed1cbca 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/text-selection-newline-rtl-expected.png
+++ b/third_party/blink/web_tests/paint/invalidation/selection/selection-clear-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-clear-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-clear-expected.txt
index 2bf0911..97d9759d 100644
--- a/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-clear-expected.txt
+++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-clear-expected.txt
@@ -1,40 +1,34 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='firstLine'",
+          "object": "NGPhysicalBoxFragment LayoutNGBlockFlow DIV id='firstLine'",
           "rect": [8, 8, 100, 200],
-          "reason": "full"
-        },
-        {
-          "object": "InlineTextBox 'FAIL: Test did'",
-          "rect": [8, 48, 97, 119],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox 'not run'",
-          "rect": [8, 48, 97, 119],
+          "object": "NGPhysicalBoxFragment LayoutNGBlockFlow DIV id='firstLine'",
+          "rect": [8, 8, 100, 100],
+          "reason": "appeared"
+        },
+        {
+          "object": "NGPhysicalTextFragment 'FAIL: Test did'",
+          "rect": [8, 8, 97, 200],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox '\u00A0'",
-          "rect": [8, 48, 8, 19],
+          "object": "NGPhysicalTextFragment 'not run'",
+          "rect": [8, 8, 97, 200],
+          "reason": "disappeared"
+        },
+        {
+          "object": "NGPhysicalTextFragment '\u00A0'",
+          "rect": [8, 8, 8, 100],
           "reason": "appeared"
         }
       ]
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/text-match-document-change-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/text-match-document-change-expected.txt
index 4a3af0f..75b3f73 100644
--- a/third_party/blink/web_tests/platform/linux/paint/invalidation/text-match-document-change-expected.txt
+++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/text-match-document-change-expected.txt
@@ -1,34 +1,23 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "InlineTextBox 'Find-in-page 'findme', then click here)'",
+          "object": "NGPhysicalTextFragment 'Find-in-page 'findme', then click here)'",
           "rect": [18, 130, 251, 39],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox 'To be changed: findme (Manual testing:'",
+          "object": "NGPhysicalTextFragment 'To be changed: findme (Manual testing:'",
           "rect": [18, 130, 251, 39],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox 'After change'",
+          "object": "NGPhysicalTextFragment 'After change'",
           "rect": [18, 130, 82, 19],
           "reason": "appeared"
         },
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/trailing-white-space-2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/trailing-white-space-2-expected.png
deleted file mode 100644
index 9083dbf..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/trailing-white-space-2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt
index 365123e..1d9dc3d0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt
@@ -1,17 +1,6 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/geometry/root-layer-update-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/compositing/geometry/root-layer-update-expected.png
deleted file mode 100644
index 05b14b3..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/geometry/root-layer-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/overlap-blending/reflection-opacity-huge-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/compositing/overlap-blending/reflection-opacity-huge-expected.png
deleted file mode 100644
index 422646f4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/overlap-blending/reflection-opacity-huge-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/reflections/reflection-positioning2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/compositing/reflections/reflection-positioning2-expected.png
deleted file mode 100644
index 58c07ee..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/reflections/reflection-positioning2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/reflections/transform-inside-reflection-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/compositing/reflections/transform-inside-reflection-expected.png
deleted file mode 100644
index e08cbe0..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/reflections/transform-inside-reflection-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png
deleted file mode 100644
index 28c4a50..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
deleted file mode 100644
index e794a47..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 30020],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='compositedBehind'",
-      "bounds": [500, 500],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FFFF",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='containerOverlapsComposited')",
-      "position": [20, 20],
-      "bounds": [100, 30000],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [45, 145],
-      "bounds": [50, 50],
-      "opacity": 0.990000009536743,
-      "contentsOpaque": true,
-      "backgroundColor": "#00FF00",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/compositing/layer-repaint-rects-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/compositing/layer-repaint-rects-expected.png
deleted file mode 100644
index ea8a18f7..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/compositing/layer-repaint-rects-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png
deleted file mode 100644
index 4f67a0521..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/overflow/vertical-overflow-child-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/overflow/vertical-overflow-child-expected.png
deleted file mode 100644
index ed3e3e6..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/overflow/vertical-overflow-child-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/scale-page-shrink-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/scale-page-shrink-expected.png
deleted file mode 100644
index fa7291ed..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/scale-page-shrink-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/svg/embedded-svg-size-changes-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/svg/embedded-svg-size-changes-expected.png
deleted file mode 100644
index 942612d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/svg/embedded-svg-size-changes-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/active-suggestion-marker-split-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/active-suggestion-marker-split-expected.png
deleted file mode 100644
index 40a4ad4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/active-suggestion-marker-split-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png
deleted file mode 100644
index 681ef8d0..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png
deleted file mode 100644
index 0ad476f1..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png
deleted file mode 100644
index 9a8e06e..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png
deleted file mode 100644
index 6d53405..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/inline-spelling-markers-hidpi-composited-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
deleted file mode 100644
index 5d74baf1..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/inline_spelling_markers-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/inline_spelling_markers-expected.png
deleted file mode 100644
index 7c049b64..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/inline_spelling_markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/image-writing-modes-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/image-writing-modes-expected.png
deleted file mode 100644
index 5faef797..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/image-writing-modes-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/text-selection-newline-across-blocks-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/text-selection-newline-across-blocks-expected.png
deleted file mode 100644
index 6572048..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/text-selection-newline-across-blocks-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/text-selection-newline-across-blocks-line-beginning-end-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/text-selection-newline-across-blocks-line-beginning-end-expected.png
deleted file mode 100644
index c7db599b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/selection/text-selection-newline-across-blocks-line-beginning-end-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/compositing/geometry/root-layer-update-expected.png b/third_party/blink/web_tests/platform/mac-retina/compositing/geometry/root-layer-update-expected.png
deleted file mode 100644
index 05b14b3..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/compositing/geometry/root-layer-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/compositing/overlap-blending/reflection-opacity-huge-expected.png b/third_party/blink/web_tests/platform/mac-retina/compositing/overlap-blending/reflection-opacity-huge-expected.png
deleted file mode 100644
index 422646f4..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/compositing/overlap-blending/reflection-opacity-huge-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/compositing/reflections/reflection-positioning2-expected.png b/third_party/blink/web_tests/platform/mac-retina/compositing/reflections/reflection-positioning2-expected.png
deleted file mode 100644
index 58c07ee..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/compositing/reflections/reflection-positioning2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/compositing/reflections/transform-inside-reflection-expected.png b/third_party/blink/web_tests/platform/mac-retina/compositing/reflections/transform-inside-reflection-expected.png
deleted file mode 100644
index e08cbe0..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/compositing/reflections/transform-inside-reflection-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png
deleted file mode 100644
index 28c4a50..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt b/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
deleted file mode 100644
index e794a47..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 30020],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='compositedBehind'",
-      "bounds": [500, 500],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FFFF",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='containerOverlapsComposited')",
-      "position": [20, 20],
-      "bounds": [100, 30000],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [45, 145],
-      "bounds": [50, 50],
-      "opacity": 0.990000009536743,
-      "contentsOpaque": true,
-      "backgroundColor": "#00FF00",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/compositing/layer-repaint-rects-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/compositing/layer-repaint-rects-expected.png
deleted file mode 100644
index ea8a18f7..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/compositing/layer-repaint-rects-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png
deleted file mode 100644
index 4f67a0521..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/overflow/vertical-overflow-child-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/overflow/vertical-overflow-child-expected.png
deleted file mode 100644
index ed3e3e6..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/overflow/vertical-overflow-child-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/scale-page-shrink-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/scale-page-shrink-expected.png
deleted file mode 100644
index fa7291ed..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/scale-page-shrink-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/embedded-svg-size-changes-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/embedded-svg-size-changes-expected.png
deleted file mode 100644
index 942612d..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/embedded-svg-size-changes-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/relative-sized-use-on-symbol-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/relative-sized-use-on-symbol-expected.png
deleted file mode 100644
index e1f2fc4..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/relative-sized-use-on-symbol-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt b/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt
deleted file mode 100644
index 838fd69..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [500, 400],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [485, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [485, 478],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "NGPhysicalBoxFragment LayoutNGBlockFlow div id='contentBox'",
-          "rect": [8, 68, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
-          "rect": [45, 103, 328, 330],
-          "reason": "paint property change"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
-          "rect": [18, 227, 82, 83],
-          "reason": "paint property change"
-        }
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/remove-background-property-on-root-expected.txt b/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/remove-background-property-on-root-expected.txt
deleted file mode 100644
index 220bb464..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/invalidation/svg/remove-background-property-on-root-expected.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [500, 400],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [500, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [500, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [8, 8, 100, 100],
-          "reason": "chunk disappeared"
-        },
-        {
-          "object": "NGPhysicalBoxFragment LayoutNGBlockFlow DIV",
-          "rect": [8, 8, 100, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/markers/active-suggestion-marker-split-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/markers/active-suggestion-marker-split-expected.png
deleted file mode 100644
index 40a4ad4..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/markers/active-suggestion-marker-split-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png
deleted file mode 100644
index 681ef8d0..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png
deleted file mode 100644
index 0ad476f1..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png
deleted file mode 100644
index 9a8e06e..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png
deleted file mode 100644
index 6d53405..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/markers/inline-spelling-markers-hidpi-composited-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
deleted file mode 100644
index 5d74baf1..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/markers/inline_spelling_markers-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/markers/inline_spelling_markers-expected.png
deleted file mode 100644
index 7c049b64..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/markers/inline_spelling_markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/selection/image-writing-modes-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/selection/image-writing-modes-expected.png
deleted file mode 100644
index 5faef797..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/selection/image-writing-modes-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/selection/text-selection-newline-across-blocks-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/selection/text-selection-newline-across-blocks-expected.png
deleted file mode 100644
index 6572048..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/selection/text-selection-newline-across-blocks-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/selection/text-selection-newline-across-blocks-line-beginning-end-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/selection/text-selection-newline-across-blocks-line-beginning-end-expected.png
deleted file mode 100644
index c7db599b..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/selection/text-selection-newline-across-blocks-line-beginning-end-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/paint/selection/text-selection-newline-rtl-expected.png b/third_party/blink/web_tests/platform/mac-retina/paint/selection/text-selection-newline-rtl-expected.png
deleted file mode 100644
index d291c255..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/paint/selection/text-selection-newline-rtl-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/geometry/root-layer-update-expected.png b/third_party/blink/web_tests/platform/mac/compositing/geometry/root-layer-update-expected.png
index f98d9b3c..05b14b3 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/geometry/root-layer-update-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/geometry/root-layer-update-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/overlap-blending/reflection-opacity-huge-expected.png b/third_party/blink/web_tests/platform/mac/compositing/overlap-blending/reflection-opacity-huge-expected.png
index 0332b4d..422646f4 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/overlap-blending/reflection-opacity-huge-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/overlap-blending/reflection-opacity-huge-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/reflections/reflection-positioning2-expected.png b/third_party/blink/web_tests/platform/mac/compositing/reflections/reflection-positioning2-expected.png
index 8ae03f7..58c07ee 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/reflections/reflection-positioning2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/reflections/reflection-positioning2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/reflections/transform-inside-reflection-expected.png b/third_party/blink/web_tests/platform/mac/compositing/reflections/transform-inside-reflection-expected.png
index 197bb98..e08cbe0 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/reflections/transform-inside-reflection-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/reflections/transform-inside-reflection-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png
deleted file mode 100644
index e0a5163..0000000
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
deleted file mode 100644
index b1862ee1..0000000
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [500, 400],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [485, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [508, 30020],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='compositedBehind'",
-      "bounds": [500, 500],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FFFF",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='containerOverlapsComposited')",
-      "position": [20, 20],
-      "bounds": [100, 30000],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [45, 145],
-      "bounds": [50, 50],
-      "opacity": 0.990000009536743,
-      "contentsOpaque": true,
-      "backgroundColor": "#00FF00",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/layer-repaint-rects-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/layer-repaint-rects-expected.png
index 3c1890a7..ea8a18f7 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/layer-repaint-rects-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/layer-repaint-rects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png
index f6f264f..4f67a0521 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/vertical-overflow-child-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/vertical-overflow-child-expected.png
index 1846e5f2..ed3e3e6 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/vertical-overflow-child-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/vertical-overflow-child-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scale-page-shrink-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/scale-page-shrink-expected.png
index 315d97e..fa7291ed 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scale-page-shrink-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scale-page-shrink-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.png
new file mode 100644
index 0000000..556d624
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.png
new file mode 100644
index 0000000..2538174
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-clear-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-clear-expected.png
deleted file mode 100644
index 51e456f..0000000
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-clear-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-clear-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-clear-expected.txt
index 7e0793d3..ea38973 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-clear-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-clear-expected.txt
@@ -1,40 +1,34 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='firstLine'",
+          "object": "NGPhysicalBoxFragment LayoutNGBlockFlow DIV id='firstLine'",
           "rect": [8, 8, 100, 200],
-          "reason": "full"
-        },
-        {
-          "object": "InlineTextBox 'FAIL: Test did'",
-          "rect": [8, 49, 98, 118],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox 'not run'",
-          "rect": [8, 49, 98, 118],
+          "object": "NGPhysicalBoxFragment LayoutNGBlockFlow DIV id='firstLine'",
+          "rect": [8, 8, 100, 100],
+          "reason": "appeared"
+        },
+        {
+          "object": "NGPhysicalTextFragment 'FAIL: Test did'",
+          "rect": [8, 8, 98, 200],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox '\u00A0'",
-          "rect": [8, 49, 8, 18],
+          "object": "NGPhysicalTextFragment 'not run'",
+          "rect": [8, 8, 98, 200],
+          "reason": "disappeared"
+        },
+        {
+          "object": "NGPhysicalTextFragment '\u00A0'",
+          "rect": [8, 8, 8, 100],
           "reason": "appeared"
         }
       ]
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/embedded-svg-size-changes-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/embedded-svg-size-changes-expected.png
index c6c8f16..942612d 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/embedded-svg-size-changes-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/embedded-svg-size-changes-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt
index 7751a35..2bc2aa2 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt
@@ -1,17 +1,6 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/text-match-document-change-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/text-match-document-change-expected.txt
index 1f44ac46..41546a1 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/text-match-document-change-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/text-match-document-change-expected.txt
@@ -1,34 +1,23 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "InlineTextBox 'Find-in-page 'findme', then click here)'",
+          "object": "NGPhysicalTextFragment 'Find-in-page 'findme', then click here)'",
           "rect": [18, 128, 256, 36],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox 'To be changed: findme (Manual testing:'",
+          "object": "NGPhysicalTextFragment 'To be changed: findme (Manual testing:'",
           "rect": [18, 128, 256, 36],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox 'After change'",
+          "object": "NGPhysicalTextFragment 'After change'",
           "rect": [18, 128, 84, 18],
           "reason": "appeared"
         },
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/active-suggestion-marker-split-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/active-suggestion-marker-split-expected.png
index 212c6db..40a4ad4 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/active-suggestion-marker-split-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/active-suggestion-marker-split-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png
index a013e02..681ef8d0 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png
index dc26be2..0ad476f1 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png
index 1b7d8309..9a8e06e 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png
index 3a3c7efe..6d53405 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/inline-spelling-markers-hidpi-composited-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
index f99dfd7..5d74baf1 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/inline_spelling_markers-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/inline_spelling_markers-expected.png
index 1ca7158..7c049b64 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/inline_spelling_markers-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/inline_spelling_markers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/selection/image-writing-modes-expected.png b/third_party/blink/web_tests/platform/mac/paint/selection/image-writing-modes-expected.png
index b7f772c..5faef797 100644
--- a/third_party/blink/web_tests/platform/mac/paint/selection/image-writing-modes-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/selection/image-writing-modes-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-across-blocks-expected.png b/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-across-blocks-expected.png
index b2b00d51..6572048 100644
--- a/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-across-blocks-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-across-blocks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-across-blocks-line-beginning-end-expected.png b/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-across-blocks-line-beginning-end-expected.png
index 6572048..c7db599b 100644
--- a/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-across-blocks-line-beginning-end-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-across-blocks-line-beginning-end-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-rtl-expected.png b/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-rtl-expected.png
index f486b96..d291c255 100644
--- a/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-newline-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-clear-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-clear-expected.png
deleted file mode 100644
index 8dee85e..0000000
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-clear-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-clear-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-clear-expected.txt
index aceabb8..aed94be 100644
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-clear-expected.txt
+++ b/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-clear-expected.txt
@@ -1,40 +1,34 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='firstLine'",
+          "object": "NGPhysicalBoxFragment LayoutNGBlockFlow DIV id='firstLine'",
           "rect": [8, 8, 100, 200],
-          "reason": "full"
-        },
-        {
-          "object": "InlineTextBox 'FAIL: Test did'",
-          "rect": [8, 48, 92, 119],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox 'not run'",
-          "rect": [8, 48, 92, 119],
+          "object": "NGPhysicalBoxFragment LayoutNGBlockFlow DIV id='firstLine'",
+          "rect": [8, 8, 100, 100],
+          "reason": "appeared"
+        },
+        {
+          "object": "NGPhysicalTextFragment 'FAIL: Test did'",
+          "rect": [8, 8, 92, 200],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox '\u00A0'",
-          "rect": [8, 48, 8, 19],
+          "object": "NGPhysicalTextFragment 'not run'",
+          "rect": [8, 8, 92, 200],
+          "reason": "disappeared"
+        },
+        {
+          "object": "NGPhysicalTextFragment '\u00A0'",
+          "rect": [8, 8, 8, 100],
           "reason": "appeared"
         }
       ]
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/text-match-document-change-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/text-match-document-change-expected.txt
index 8d3dc22..febde0d0 100644
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/text-match-document-change-expected.txt
+++ b/third_party/blink/web_tests/platform/win/paint/invalidation/text-match-document-change-expected.txt
@@ -1,34 +1,23 @@
 {
   "layers": [
     {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
       "name": "Scrolling Contents Layer",
       "bounds": [800, 600],
       "contentsOpaque": true,
       "backgroundColor": "#FFFFFF",
       "paintInvalidations": [
         {
-          "object": "InlineTextBox 'Find-in-page 'findme', then click here)'",
+          "object": "NGPhysicalTextFragment 'Find-in-page 'findme', then click here)'",
           "rect": [18, 130, 235, 39],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox 'To be changed: findme (Manual testing:'",
+          "object": "NGPhysicalTextFragment 'To be changed: findme (Manual testing:'",
           "rect": [18, 130, 235, 39],
           "reason": "disappeared"
         },
         {
-          "object": "InlineTextBox 'After change'",
+          "object": "NGPhysicalTextFragment 'After change'",
           "rect": [18, 130, 77, 19],
           "reason": "appeared"
         },
diff --git a/third_party/blink/web_tests/wpt_internal/webxr/ar_dom_overlay.https.html b/third_party/blink/web_tests/wpt_internal/webxr/ar_dom_overlay.https.html
new file mode 100644
index 0000000..467b4ab
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/webxr/ar_dom_overlay.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>let additionalChromiumResources = ["resources/xr-internal-device-mocking.js"];</script>
+<script src="/webxr/resources/webxr_util.js"></script>
+<script src="/webxr/resources/webxr_test_constants.js"></script>
+<script src="/webxr/resources/webxr_test_asserts.js"></script>
+<canvas />
+
+<script>
+// Because AR is not yet in the core webxr spec, this is an internal-chrome only test.
+let testName = "Ensures DOM Overlay feature works for immersive-ar";
+
+let fakeDeviceInitParams = { supportsImmersive: true,
+                             views: VALID_VIEWS,
+                             supportsEnvironmentIntegration: true,
+                             supportedFeatures: ALL_FEATURES.concat([
+                                 'dom-overlay-for-handheld-ar'])};
+
+let testFunction = function(session, fakeDeviceController, t) {
+  assert_equals(session.mode, 'immersive-ar');
+  assert_not_equals(session.environmentBlendMode, 'opaque');
+
+  // The <body> element should have a transparent background.
+  assert_equals(window.getComputedStyle(document.body).backgroundColor,
+                'rgba(0, 0, 0, 0)');
+
+  // Try fullscreening an element.
+  let elem = document.querySelector('canvas');
+  return elem.requestFullscreen().then(() => {
+      assert_equals(document.fullscreenElement, elem);
+  });
+};
+
+xr_session_promise_test(
+  testName, testFunction, fakeDeviceInitParams, 'immersive-ar',
+    {requiredFeatures: ['dom-overlay-for-handheld-ar']});
+
+</script>
diff --git a/third_party/blink/web_tests/wpt_internal/webxr/resources/xr-internal-device-mocking.js b/third_party/blink/web_tests/wpt_internal/webxr/resources/xr-internal-device-mocking.js
index 99313cd0..6be8bfa 100644
--- a/third_party/blink/web_tests/wpt_internal/webxr/resources/xr-internal-device-mocking.js
+++ b/third_party/blink/web_tests/wpt_internal/webxr/resources/xr-internal-device-mocking.js
@@ -37,3 +37,7 @@
 MockRuntime.prototype.getMissingFrameCount = function() {
   return this.presentation_provider_.missing_frame_count_;
 };
+
+// Patch in experimental features.
+MockRuntime.featureToMojoMap["dom-overlay-for-handheld-ar"] =
+    device.mojom.XRSessionFeature.DOM_OVERLAY_FOR_HANDHELD_AR;
diff --git a/third_party/closure_compiler/externs/automation.js b/third_party/closure_compiler/externs/automation.js
index 79e3522..03985db 100644
--- a/third_party/closure_compiler/externs/automation.js
+++ b/third_party/closure_compiler/externs/automation.js
@@ -1102,9 +1102,9 @@
 /**
  * The ARIA column index as specified by the page author.
  * @type {(number|undefined)}
- * @see https://developer.chrome.com/extensions/automation#type-ariaCellColumnIndex
+ * @see https://developer.chrome.com/extensions/automation#type-tableCellAriaColumnIndex
  */
-chrome.automation.AutomationNode.prototype.ariaCellColumnIndex;
+chrome.automation.AutomationNode.prototype.tableCellAriaColumnIndex;
 
 /**
  * The number of columns that this cell spans (default is 1).
@@ -1123,9 +1123,9 @@
 /**
  * The ARIA row index as specified by the page author.
  * @type {(number|undefined)}
- * @see https://developer.chrome.com/extensions/automation#type-ariaCellRowIndex
+ * @see https://developer.chrome.com/extensions/automation#type-tableCellAriaRowIndex
  */
-chrome.automation.AutomationNode.prototype.ariaCellRowIndex;
+chrome.automation.AutomationNode.prototype.tableCellAriaRowIndex;
 
 /**
  * The number of rows that this cell spans (default is 1).
diff --git a/third_party/crashpad/README.chromium b/third_party/crashpad/README.chromium
index 92efcd3..e1d2e623 100644
--- a/third_party/crashpad/README.chromium
+++ b/third_party/crashpad/README.chromium
@@ -2,7 +2,7 @@
 Short Name: crashpad
 URL: https://crashpad.chromium.org/
 Version: unknown
-Revision: eb0c4726f13d06662b0cf82571e5047b386d6dae
+Revision: c87486f5951f0b6445730d03e388b1f6f68ef7b8
 License: Apache 2.0
 License File: crashpad/LICENSE
 Security Critical: yes
diff --git a/third_party/crashpad/crashpad/client/crashpad_client_linux.cc b/third_party/crashpad/crashpad/client/crashpad_client_linux.cc
index 74f1540..00a83fa0 100644
--- a/third_party/crashpad/crashpad/client/crashpad_client_linux.cc
+++ b/third_party/crashpad/crashpad/client/crashpad_client_linux.cc
@@ -58,24 +58,31 @@
     const std::map<std::string, std::string>& annotations,
     const std::vector<std::string>& arguments,
     int socket) {
-  std::vector<std::string> argv;
 #if defined(ARCH_CPU_64_BITS)
-  argv.push_back("/system/bin/app_process64");
+  static constexpr char kAppProcess[] = "/system/bin/app_process64";
 #else
-  argv.push_back("/system/bin/app_process32");
+  static constexpr char kAppProcess[] = "/system/bin/app_process32";
 #endif
+
+  std::vector<std::string> argv;
+  argv.push_back(kAppProcess);
   argv.push_back("/system/bin");
   argv.push_back("--application");
   argv.push_back(class_name);
 
-  std::vector<std::string> handler_argv = BuildHandlerArgvStrings(
-      base::FilePath(), database, metrics_dir, url, annotations, arguments);
+  std::vector<std::string> handler_argv =
+      BuildHandlerArgvStrings(base::FilePath(kAppProcess),
+                              database,
+                              metrics_dir,
+                              url,
+                              annotations,
+                              arguments);
 
   if (socket != kInvalidFileHandle) {
     handler_argv.push_back(FormatArgumentInt("initial-client-fd", socket));
   }
 
-  argv.insert(argv.end(), handler_argv.begin() + 1, handler_argv.end());
+  argv.insert(argv.end(), handler_argv.begin(), handler_argv.end());
   return argv;
 }
 
diff --git a/third_party/jdk/OWNERS b/third_party/jdk/OWNERS
new file mode 100644
index 0000000..0b91858
--- /dev/null
+++ b/third_party/jdk/OWNERS
@@ -0,0 +1,2 @@
+agrieve@chromium.org
+yliuyliu@google.com
diff --git a/third_party/jdk/README.chromium b/third_party/jdk/README.chromium
new file mode 100644
index 0000000..7d3ed22
--- /dev/null
+++ b/third_party/jdk/README.chromium
@@ -0,0 +1,24 @@
+Name: Java Development Kit
+Short Name: JDK
+URL: https://www.java.com/
+Version: 11.0.4
+License: GPL v2
+License File: NOT_SHIPPED
+Security Critical: no
+
+Description:
+The Java Development Kit (JDK) is a software development environment used for
+developing Java applications and applets. (linux-x64)
+
+How to update:
+1. Find the specific version you want to update from
+   https://www.oracle.com/technetwork/java/javase/downloads/index.html
+2. Click DOWNLOAD for specific version
+3. Accept License Agreement
+4. Download "Linux" version
+5. Unzip compressed files to //third_party/jdk/current
+6. Run "cipd create --pkg-def cipd.yaml" to create cipd package and get instance ID
+7. Update instance ID in //DEPS
+
+Local Modifications:
+None
diff --git a/third_party/jdk/cipd.yaml b/third_party/jdk/cipd.yaml
new file mode 100644
index 0000000..a839290
--- /dev/null
+++ b/third_party/jdk/cipd.yaml
@@ -0,0 +1,11 @@
+# Copyright 2019 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml
+package: chromium/third_party/jdk
+description: Java Development Kit
+root: ./
+data:
+  - dir: current
diff --git a/third_party/libvpx/generate_gni.sh b/third_party/libvpx/generate_gni.sh
index 6a09ef2..fa8d847 100755
--- a/third_party/libvpx/generate_gni.sh
+++ b/third_party/libvpx/generate_gni.sh
@@ -56,9 +56,6 @@
 # $1 - Output base name
 function write_license {
   echo "# This file is generated. Do not edit." >> $1
-  echo "# Copyright (c) 2014 The Chromium Authors. All rights reserved." >> $1
-  echo "# Use of this source code is governed by a BSD-style license that can be" >> $1
-  echo "# found in the LICENSE file." >> $1
   echo "" >> $1
 }
 
diff --git a/third_party/libvpx/libvpx_srcs.gni b/third_party/libvpx/libvpx_srcs.gni
index bbe73b89..a864c48 100644
--- a/third_party/libvpx/libvpx_srcs.gni
+++ b/third_party/libvpx/libvpx_srcs.gni
@@ -1,7 +1,4 @@
 # This file is generated. Do not edit.
-# Copyright (c) 2014 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.
 
 libvpx_srcs_x86 = [
   "//third_party/libvpx/source/libvpx/vp8/common/alloccommon.c",
diff --git a/third_party/webxr_test_pages/webxr-samples/tests/index.html b/third_party/webxr_test_pages/webxr-samples/tests/index.html
index 95a1199..2c551505 100644
--- a/third_party/webxr_test_pages/webxr-samples/tests/index.html
+++ b/third_party/webxr_test_pages/webxr-samples/tests/index.html
@@ -105,6 +105,10 @@
               path: 'cube-sea.html',
               description: 'All hail the cube sea! Not very interesting to look at, but it\'s fantastic for testing!' },
 
+            { title: 'Unresponsive Page', category: 'Basics',
+              path: 'unresponsive-page.html',
+              description: 'A "bad" page that doesn\'t request any frames' },
+
             { title: 'Pointer Painter', category: 'Input',
               path: 'pointer-painter.html',
               description: 'Leaves behind a trail of pointers and cursors on select events.' },
diff --git a/third_party/webxr_test_pages/webxr-samples/tests/unresponsive-page.html b/third_party/webxr_test_pages/webxr-samples/tests/unresponsive-page.html
new file mode 100644
index 0000000..df4a865
--- /dev/null
+++ b/third_party/webxr_test_pages/webxr-samples/tests/unresponsive-page.html
@@ -0,0 +1,120 @@
+<!doctype html>
+<!--
+Copyright 2018 The Immersive Web Community Group
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+-->
+<html>
+  <head>
+    <meta charset='utf-8'>
+    <meta name='viewport' content='width=device-width, initial-scale=1, user-scalable=no'>
+    <meta name='mobile-web-app-capable' content='yes'>
+    <meta name='apple-mobile-web-app-capable' content='yes'>
+
+    <title>Unresponsive Page</title>
+
+    <link href='../css/common.css' rel='stylesheet'></link>
+
+    <!--The polyfill is not needed for browser that have native API support,
+        but is linked by these samples for wider compatibility.-->
+    <!--script src='https://cdn.jsdelivr.net/npm/webxr-polyfill@latest/build/webxr-polyfill.js'></script-->
+    <script src='../js/xrray-polyfill.js' type='module'></script>
+    <script src='../js/webxr-polyfill.js'></script>
+
+    <script src='../js/webxr-button.js'></script>
+  </head>
+  <body>
+    <header>
+      <details open>
+        <summary>Unresponsive Page</summary>
+        <p>
+          This page mimics a poorly behaved page which requests a session but
+          never begins requesting or processing frames.
+          <a class="back" href="./index.html">Back</a>
+        </p>
+      </details>
+    </header>
+    <main style='text-align: center;'>
+      <p>Click 'Enter XR' to see content</p>
+    </main>
+    <script type="module">
+      import {createWebGLContext} from '../js/cottontail/src/core/renderer.js';
+      import {QueryArgs} from '../js/cottontail/src/util/query-args.js';
+
+      // If requested, initialize the WebXR polyfill
+      if (QueryArgs.getBool('allowPolyfill', false)) {
+        var polyfill = new WebXRPolyfill();
+      }
+
+      // XR globals.
+      let xrButton = null;
+
+      // Checks to see if WebXR is available and, if so, queries a list of
+      // XRDevices that are connected to the system.
+      function initXR() {
+        // Adds a helper button to the page that indicates if any XRDevices are
+        // available and let's the user pick between them if there's multiple.
+        xrButton = new XRDeviceButton({
+          onRequestSession: onRequestSession,
+          onEndSession: onEndSession,
+          supportedSessionTypes: ['immersive-vr']
+        });
+        document.querySelector('header').appendChild(xrButton.domElement);
+      }
+
+      // Called when the user selects a device to present to. In response we
+      // will request an exclusive session from that device.
+      function onRequestSession() {
+        navigator.xr.requestSession('immersive-vr').then(onSessionStarted);
+      }
+
+      // Called when we've successfully acquired a XRSession. In response we
+      // will set up the necessary session state and kick off the frame loop.
+      function onSessionStarted(session) {
+        session.mode = 'immersive-vr';
+        // This informs the 'Enter XR' button that the session has started and
+        // that it should display 'Exit XR' instead.
+        xrButton.setSession(session);
+
+        // Listen for the sessions 'end' event so we can respond if the user
+        // or UA ends the session for any reason.
+        session.addEventListener('end', onSessionEnded);
+
+        // Normally we'd set up our context, request a reference space, and then
+        // start a frame loop here, but we want to pretend to be stalled.
+      }
+
+      // Called when the user clicks the 'Exit XR' button. In response we end
+      // the session.
+      function onEndSession(session) {
+        session.end();
+      }
+
+      // Called either when the user has explicitly ended the session (like in
+      // onEndSession()) or when the UA has ended the session for any reason.
+      // At this point the session object is no longer usable and should be
+      // discarded.
+      function onSessionEnded(event) {
+        xrButton.setSession(null);
+      }
+
+      // Start the XR application.
+      initXR();
+    </script>
+  </body>
+</html>
diff --git a/tools/android/avd/BUILD.gn b/tools/android/avd/BUILD.gn
deleted file mode 100644
index 93c51b3..0000000
--- a/tools/android/avd/BUILD.gn
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import("//build/config/python.gni")
-
-python_library("avd_py") {
-  testonly = true
-  pydeps_file = "avd.pydeps"
-  data = [
-    "proto/",
-  ]
-}
diff --git a/tools/android/avd/avd.py b/tools/android/avd/avd.py
index 397b6d5..2889e0c 100755
--- a/tools/android/avd/avd.py
+++ b/tools/android/avd/avd.py
@@ -4,476 +4,21 @@
 # found in the LICENSE file.
 
 import argparse
-import contextlib
-import json
-import logging
 import os
-import socket
-import stat
-import subprocess
 import sys
-import threading
-
-from google.protobuf import text_format
-from proto import avd_pb2
 
 _SRC_ROOT = os.path.abspath(
     os.path.join(os.path.dirname(__file__), '..', '..', '..'))
 
 sys.path.append(
-    os.path.join(_SRC_ROOT, 'third_party', 'catapult', 'common', 'py_utils'))
-from py_utils import tempfile_ext
-
-sys.path.append(
     os.path.join(_SRC_ROOT, 'third_party', 'catapult', 'devil'))
-from devil.android import device_utils
-from devil.android.sdk import adb_wrapper
 from devil.android.tools import script_common
-from devil.utils import cmd_helper
 from devil.utils import logging_common
-from devil.utils import timeout_retry
 
 sys.path.append(
     os.path.join(_SRC_ROOT, 'build', 'android'))
 import devil_chromium
-
-
-_ALL_PACKAGES = object()
-_DEFAULT_AVDMANAGER_PATH = os.path.join(
-    _SRC_ROOT, 'third_party', 'android_sdk', 'public',
-    'tools', 'bin', 'avdmanager')
-
-
-class AvdException(Exception):
-  """Raised when this module has a problem interacting with an AVD."""
-
-  def __init__(self, summary, command=None, stdout=None, stderr=None):
-    message_parts = [summary]
-    if command:
-      message_parts.append('  command: %s' % ' '.join(command))
-    if stdout:
-      message_parts.append('  stdout:')
-      message_parts.extend(
-          '    %s' % line for line in stdout.splitlines())
-    if stderr:
-      message_parts.append('  stderr:')
-      message_parts.extend(
-          '    %s' % line for line in stderr.splitlines())
-
-    super(AvdException, self).__init__('\n'.join(message_parts))
-
-
-def _Load(avd_proto_path):
-  """Loads an Avd proto from a textpb file at the given path.
-
-  Should not be called outside of this module.
-
-  Args:
-    avd_proto_path: path to a textpb file containing an Avd message.
-  """
-  with open(avd_proto_path) as avd_proto_file:
-    return text_format.Merge(avd_proto_file.read(), avd_pb2.Avd())
-
-
-class _AvdManagerAgent(object):
-  """Private utility for interacting with avdmanager."""
-
-  def __init__(self, avd_home, sdk_root):
-    """Create an _AvdManagerAgent.
-
-    Args:
-      avd_home: path to ANDROID_AVD_HOME directory.
-        Typically something like /path/to/dir/.android/avd
-      sdk_root: path to SDK root directory.
-    """
-    self._avd_home = avd_home
-    self._sdk_root = sdk_root
-
-    self._env = dict(os.environ)
-
-    # avdmanager, like many tools that have evolved from `android`
-    # (http://bit.ly/2m9JiTx), uses toolsdir to find the SDK root.
-    # Pass avdmanager a fake directory under the directory in which
-    # we install the system images s.t. avdmanager can find the
-    # system images.
-    fake_tools_dir = os.path.join(
-        self._sdk_root,
-        'non-existent-tools')
-    self._env.update({
-        'ANDROID_AVD_HOME': self._avd_home,
-        'AVDMANAGER_OPTS':
-            '-Dcom.android.sdkmanager.toolsdir=%s' % fake_tools_dir,
-    })
-
-  def Create(self, avd_name, system_image, force=False):
-    """Call `avdmanager create`.
-
-    Args:
-      avd_name: name of the AVD to create.
-      system_image: system image to use for the AVD.
-      force: whether to force creation, overwriting any existing
-        AVD with the same name.
-    """
-    create_cmd = [
-        _DEFAULT_AVDMANAGER_PATH,
-        '-v',
-        'create',
-        'avd',
-        '-n', avd_name,
-        '-k', system_image,
-    ]
-    if force:
-      create_cmd += ['--force']
-
-    create_proc = cmd_helper.Popen(
-        create_cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
-        stderr=subprocess.PIPE, env=self._env)
-    output, error = create_proc.communicate(input='\n')
-    if create_proc.returncode != 0:
-      raise AvdException(
-          'AVD creation failed',
-          command=create_cmd,
-          stdout=output,
-          stderr=error)
-
-    for line in output.splitlines():
-      logging.info('  %s', line)
-
-  def Delete(self, avd_name):
-    """Call `avdmanager delete`.
-
-    Args:
-      avd_name: name of the AVD to delete.
-    """
-    delete_cmd = [
-        _DEFAULT_AVDMANAGER_PATH,
-        '-v',
-        'delete',
-        'avd',
-        '-n', avd_name,
-    ]
-    try:
-      for line in cmd_helper.IterCmdOutputLines(delete_cmd, env=self._env):
-        logging.info('  %s', line)
-    except subprocess.CalledProcessError as e:
-      raise AvdException(
-          'AVD deletion failed: %s' % str(e),
-          command=delete_cmd)
-
-
-class AvdConfig(object):
-  """Represents a particular AVD configuration.
-
-  This class supports creation, installation, and execution of an AVD
-  from a given Avd proto message, as defined in
-  //tools/android/avd/proto/avd.proto.
-  """
-
-  def __init__(self, avd_proto_path):
-    """Create an AvdConfig object.
-
-    Args:
-      avd_proto_path: path to a textpb file containing an Avd message.
-    """
-    self._config = _Load(avd_proto_path)
-
-    self._emulator_home = os.path.join(
-        _SRC_ROOT, self._config.avd_package.dest_path)
-    self._emulator_sdk_root = os.path.join(
-        _SRC_ROOT, self._config.emulator_package.dest_path)
-    self._emulator_path = os.path.join(
-        self._emulator_sdk_root, 'emulator', 'emulator')
-
-    self._initialized = False
-    self._initializer_lock = threading.Lock()
-
-  def Create(self, force=False, snapshot=False, keep=False,
-             cipd_json_output=None):
-    """Create an instance of the AVD CIPD package.
-
-    This method:
-     - installs the requisite system image
-     - creates the AVD
-     - modifies the AVD's ini files to support running chromium tests
-       in chromium infrastructure
-     - optionally starts & stops the AVD for snapshotting (default no)
-     - creates and uploads an instance of the AVD CIPD package
-     - optionally deletes the AVD (default yes)
-
-    Args:
-      force: bool indicating whether to force create the AVD.
-      snapshot: bool indicating whether to snapshot the AVD before creating
-        the CIPD package.
-      keep: bool indicating whether to keep the AVD after creating
-        the CIPD package.
-      cipd_json_output: string path to pass to `cipd create` via -json-output.
-    """
-    logging.info('Installing required packages.')
-    self.Install(packages=[
-        self._config.emulator_package,
-        self._config.system_image_package,
-    ])
-
-    android_avd_home = os.path.join(self._emulator_home, 'avd')
-
-    if not os.path.exists(android_avd_home):
-      os.makedirs(android_avd_home)
-
-    avd_manager = _AvdManagerAgent(
-        avd_home=android_avd_home,
-        sdk_root=self._emulator_sdk_root)
-
-    logging.info('Creating AVD.')
-    avd_manager.Create(
-        avd_name=self._config.avd_name,
-        system_image=self._config.system_image_name,
-        force=force)
-
-    try:
-      logging.info('Modifying AVD configuration.')
-
-      root_ini = os.path.join(
-          android_avd_home, '%s.ini' % self._config.avd_name)
-      avd_dir = os.path.join(
-          android_avd_home, '%s.avd' % self._config.avd_name)
-      config_ini = os.path.join(avd_dir, 'config.ini')
-
-      with open(root_ini, 'a') as root_ini_file:
-        root_ini_file.write('path.rel=avd/%s.avd\n' % self._config.avd_name)
-
-      with open(config_ini, 'a') as config_ini_file:
-        config_ini_file.write('disk.dataPartition.size=4G\n')
-
-      # Start & stop the AVD.
-      self._Initialize()
-      instance = _AvdInstance(
-          self._emulator_path, self._config.avd_name, self._emulator_home)
-      instance.Start(read_only=not snapshot)
-      device_utils.DeviceUtils(instance.serial).WaitUntilFullyBooted(
-          timeout=180, retries=0)
-      instance.Stop()
-
-      package_def_content = {
-          'package': self._config.avd_package.package_name,
-          'root': self._emulator_home,
-          'install_mode': 'copy',
-          'data': [
-              {'dir': os.path.relpath(avd_dir, self._emulator_home)},
-              {'file': os.path.relpath(root_ini, self._emulator_home)},
-          ],
-      }
-
-      logging.info('Creating AVD CIPD package.')
-      logging.debug('ensure file content: %s',
-                    json.dumps(package_def_content, indent=2))
-
-      with tempfile_ext.TemporaryFileName(suffix='.json') as package_def_path:
-        with open(package_def_path, 'w') as package_def_file:
-          json.dump(package_def_content, package_def_file)
-
-        logging.info('  %s', self._config.avd_package.package_name)
-        cipd_create_cmd = [
-            'cipd', 'create', '-pkg-def', package_def_path,
-        ]
-        if cipd_json_output:
-          cipd_create_cmd.extend([
-              '-json-output', cipd_json_output,
-          ])
-        try:
-          for line in cmd_helper.IterCmdOutputLines(cipd_create_cmd):
-            logging.info('    %s', line)
-        except subprocess.CalledProcessError as e:
-          raise AvdException(
-              'CIPD package creation failed: %s' % str(e),
-              command=cipd_create_cmd)
-
-    finally:
-      if not keep:
-        logging.info('Deleting AVD.')
-        avd_manager.Delete(avd_name=self._config.avd_name)
-
-  def Install(self, packages=_ALL_PACKAGES):
-    """Installs the requested CIPD packages.
-
-    Returns: None
-    Raises: AvdException on failure to install.
-    """
-    pkgs_by_dir = {}
-    if packages is _ALL_PACKAGES:
-      packages = [
-          self._config.avd_package,
-          self._config.emulator_package,
-          self._config.system_image_package,
-      ]
-    for pkg in packages:
-      if not pkg.dest_path in pkgs_by_dir:
-        pkgs_by_dir[pkg.dest_path] = []
-      pkgs_by_dir[pkg.dest_path].append(pkg)
-
-    for pkg_dir, pkgs in pkgs_by_dir.iteritems():
-      logging.info('Installing packages in %s', pkg_dir)
-      cipd_root = os.path.join(_SRC_ROOT, pkg_dir)
-      if not os.path.exists(cipd_root):
-        os.makedirs(cipd_root)
-      ensure_path = os.path.join(cipd_root, '.ensure')
-      with open(ensure_path, 'w') as ensure_file:
-        # Make CIPD ensure that all files are present, even if
-        # it thinks the package is installed.
-        ensure_file.write('$ParanoidMode CheckPresence\n\n')
-        for pkg in pkgs:
-          ensure_file.write('%s %s\n' % (pkg.package_name, pkg.version))
-          logging.info('  %s %s', pkg.package_name, pkg.version)
-      ensure_cmd = [
-          'cipd', 'ensure', '-ensure-file', ensure_path, '-root', cipd_root,
-      ]
-      try:
-        for line in cmd_helper.IterCmdOutputLines(ensure_cmd):
-          logging.info('    %s', line)
-      except subprocess.CalledProcessError as e:
-        raise AvdException(
-            'Failed to install CIPD package %s: %s' % (
-                pkg.package_name, str(e)),
-            command=ensure_cmd)
-
-    # The emulator requires that some files are writable.
-    for dirname, _, filenames in os.walk(self._emulator_home):
-      for f in filenames:
-        path = os.path.join(dirname, f)
-        if (os.lstat(path).st_mode &
-            (stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) == stat.S_IRUSR):
-          os.chmod(path, stat.S_IRUSR | stat.S_IWUSR)
-
-  def _Initialize(self):
-    if self._initialized:
-      return
-
-    with self._initializer_lock:
-      if self._initialized:
-        return
-
-      # Emulator start-up looks for the adb daemon. Make sure it's running.
-      adb_wrapper.AdbWrapper.StartServer()
-
-      # Emulator start-up tries to check for the SDK root by looking for
-      # platforms/ and platform-tools/. Ensure they exist.
-      # See http://bit.ly/2YAkyFE for context.
-      required_dirs = [
-          os.path.join(self._emulator_sdk_root, 'platforms'),
-          os.path.join(self._emulator_sdk_root, 'platform-tools'),
-      ]
-      for d in required_dirs:
-        if not os.path.exists(d):
-          os.makedirs(d)
-
-  def CreateInstance(self):
-    """Creates an AVD instance without starting it.
-
-    Returns:
-      An _AvdInstance.
-    """
-    self._Initialize()
-    return _AvdInstance(
-        self._emulator_path, self._config.avd_name, self._emulator_home)
-
-  def StartInstance(self):
-    """Starts an AVD instance.
-
-    Returns:
-      An _AvdInstance.
-    """
-    instance = self.CreateInstance()
-    instance.Start()
-    return instance
-
-
-class _AvdInstance(object):
-  """Represents a single running instance of an AVD.
-
-  This class should only be created directly by AvdConfig.StartInstance,
-  but its other methods can be freely called.
-  """
-
-  def __init__(self, emulator_path, avd_name, emulator_home):
-    """Create an _AvdInstance object.
-
-    Args:
-      emulator_path: path to the emulator binary.
-      avd_name: name of the AVD to run.
-      emulator_home: path to the emulator home directory.
-    """
-    self._avd_name = avd_name
-    self._emulator_home = emulator_home
-    self._emulator_path = emulator_path
-    self._emulator_proc = None
-    self._emulator_serial = None
-    self._sink = None
-
-  def __str__(self):
-    return '%s|%s' % (self._avd_name, (self._emulator_serial or id(self)))
-
-  def Start(self, read_only=True):
-    """Starts the emulator running an instance of the given AVD."""
-    with tempfile_ext.TemporaryFileName() as socket_path, (contextlib.closing(
-        socket.socket(socket.AF_UNIX))) as sock:
-      sock.bind(socket_path)
-      emulator_cmd = [
-          self._emulator_path,
-          '-avd',
-          self._avd_name,
-          '-report-console',
-          'unix:%s' % socket_path,
-          '-no-window'
-      ]
-      if read_only:
-        emulator_cmd += [
-            '-read-only',
-        ]
-      emulator_env = {}
-      if self._emulator_home:
-        emulator_env['ANDROID_EMULATOR_HOME'] = self._emulator_home
-      sock.listen(1)
-
-      logging.info('Starting emulator.')
-
-      # TODO(jbudorick): Add support for logging emulator stdout & stderr at
-      # higher logging levels.
-      self._sink = open('/dev/null', 'w')
-      self._emulator_proc = cmd_helper.Popen(
-          emulator_cmd,
-          stdout=self._sink,
-          stderr=self._sink,
-          env=emulator_env)
-
-      # Waits for the emulator to report its serial as requested via
-      # -report-console. See http://bit.ly/2lK3L18 for more.
-      def listen_for_serial(s):
-        logging.info('Waiting for connection from emulator.')
-        with contextlib.closing(s.accept()[0]) as conn:
-          val = conn.recv(1024)
-          return 'emulator-%d' % int(val)
-
-      try:
-        self._emulator_serial = timeout_retry.Run(
-            listen_for_serial, timeout=30, retries=0, args=[sock])
-        logging.info('%s started', self._emulator_serial)
-      except Exception as e:
-        self.Stop()
-        raise AvdException('Emulator failed to start: %s' % str(e))
-
-  def Stop(self):
-    """Stops the emulator process."""
-    if self._emulator_proc:
-      if self._emulator_proc.poll() is None:
-        self._emulator_proc.terminate()
-        self._emulator_proc.wait()
-      self._emulator_proc = None
-    if self._sink:
-      self._sink.close()
-      self._sink = None
-
-  @property
-  def serial(self):
-    return self._emulator_serial
+from pylib.local.emulator import avd
 
 
 def main(raw_args):
@@ -497,7 +42,7 @@
   add_common_arguments(install_parser)
 
   def install_cmd(args):
-    AvdConfig(args.avd_config).Install()
+    avd.AvdConfig(args.avd_config).Install()
     return 0
 
   install_parser.set_defaults(func=install_cmd)
@@ -526,7 +71,7 @@
            'via -json-output.')
 
   def create_cmd(args):
-    AvdConfig(args.avd_config).Create(
+    avd.AvdConfig(args.avd_config).Create(
         force=args.force, snapshot=args.snapshot, keep=args.keep,
         cipd_json_output=args.cipd_json_output)
     return 0
diff --git a/tools/android/avd/avd.pydeps b/tools/android/avd/avd.pydeps
deleted file mode 100644
index 3aa0c24..0000000
--- a/tools/android/avd/avd.pydeps
+++ /dev/null
@@ -1,71 +0,0 @@
-# Generated by running:
-#   build/print_python_deps.py --root tools/android/avd --output tools/android/avd/avd.pydeps tools/android/avd/avd.py
-../../../build/android/devil_chromium.py
-../../../build/android/pylib/__init__.py
-../../../build/android/pylib/constants/__init__.py
-../../../build/android/pylib/constants/host_paths.py
-../../../third_party/catapult/common/py_utils/py_utils/__init__.py
-../../../third_party/catapult/common/py_utils/py_utils/cloud_storage.py
-../../../third_party/catapult/common/py_utils/py_utils/cloud_storage_global_lock.py
-../../../third_party/catapult/common/py_utils/py_utils/lock.py
-../../../third_party/catapult/common/py_utils/py_utils/tempfile_ext.py
-../../../third_party/catapult/dependency_manager/dependency_manager/__init__.py
-../../../third_party/catapult/dependency_manager/dependency_manager/archive_info.py
-../../../third_party/catapult/dependency_manager/dependency_manager/base_config.py
-../../../third_party/catapult/dependency_manager/dependency_manager/cloud_storage_info.py
-../../../third_party/catapult/dependency_manager/dependency_manager/dependency_info.py
-../../../third_party/catapult/dependency_manager/dependency_manager/dependency_manager_util.py
-../../../third_party/catapult/dependency_manager/dependency_manager/exceptions.py
-../../../third_party/catapult/dependency_manager/dependency_manager/local_path_info.py
-../../../third_party/catapult/dependency_manager/dependency_manager/manager.py
-../../../third_party/catapult/dependency_manager/dependency_manager/uploader.py
-../../../third_party/catapult/devil/devil/__init__.py
-../../../third_party/catapult/devil/devil/android/__init__.py
-../../../third_party/catapult/devil/devil/android/apk_helper.py
-../../../third_party/catapult/devil/devil/android/constants/__init__.py
-../../../third_party/catapult/devil/devil/android/constants/chrome.py
-../../../third_party/catapult/devil/devil/android/constants/file_system.py
-../../../third_party/catapult/devil/devil/android/decorators.py
-../../../third_party/catapult/devil/devil/android/device_blacklist.py
-../../../third_party/catapult/devil/devil/android/device_errors.py
-../../../third_party/catapult/devil/devil/android/device_signal.py
-../../../third_party/catapult/devil/devil/android/device_temp_file.py
-../../../third_party/catapult/devil/devil/android/device_utils.py
-../../../third_party/catapult/devil/devil/android/install_commands.py
-../../../third_party/catapult/devil/devil/android/logcat_monitor.py
-../../../third_party/catapult/devil/devil/android/md5sum.py
-../../../third_party/catapult/devil/devil/android/ndk/__init__.py
-../../../third_party/catapult/devil/devil/android/ndk/abis.py
-../../../third_party/catapult/devil/devil/android/sdk/__init__.py
-../../../third_party/catapult/devil/devil/android/sdk/aapt.py
-../../../third_party/catapult/devil/devil/android/sdk/adb_wrapper.py
-../../../third_party/catapult/devil/devil/android/sdk/build_tools.py
-../../../third_party/catapult/devil/devil/android/sdk/bundletool.py
-../../../third_party/catapult/devil/devil/android/sdk/intent.py
-../../../third_party/catapult/devil/devil/android/sdk/keyevent.py
-../../../third_party/catapult/devil/devil/android/sdk/split_select.py
-../../../third_party/catapult/devil/devil/android/sdk/version_codes.py
-../../../third_party/catapult/devil/devil/android/tools/__init__.py
-../../../third_party/catapult/devil/devil/android/tools/script_common.py
-../../../third_party/catapult/devil/devil/base_error.py
-../../../third_party/catapult/devil/devil/constants/__init__.py
-../../../third_party/catapult/devil/devil/constants/exit_codes.py
-../../../third_party/catapult/devil/devil/devil_env.py
-../../../third_party/catapult/devil/devil/utils/__init__.py
-../../../third_party/catapult/devil/devil/utils/cmd_helper.py
-../../../third_party/catapult/devil/devil/utils/host_utils.py
-../../../third_party/catapult/devil/devil/utils/lazy/__init__.py
-../../../third_party/catapult/devil/devil/utils/lazy/weak_constant.py
-../../../third_party/catapult/devil/devil/utils/logging_common.py
-../../../third_party/catapult/devil/devil/utils/lsusb.py
-../../../third_party/catapult/devil/devil/utils/parallelizer.py
-../../../third_party/catapult/devil/devil/utils/reraiser_thread.py
-../../../third_party/catapult/devil/devil/utils/reset_usb.py
-../../../third_party/catapult/devil/devil/utils/run_tests_helper.py
-../../../third_party/catapult/devil/devil/utils/timeout_retry.py
-../../../third_party/catapult/devil/devil/utils/watchdog_timer.py
-../../../third_party/catapult/devil/devil/utils/zip_utils.py
-../../../third_party/catapult/third_party/zipfile/zipfile_2_7_13.py
-avd.py
-proto/__init__.py
-proto/avd_pb2.py
diff --git a/tools/android/avd/proto/avd_pb2.py b/tools/android/avd/proto/avd_pb2.py
deleted file mode 100644
index 96bdac1..0000000
--- a/tools/android/avd/proto/avd_pb2.py
+++ /dev/null
@@ -1,153 +0,0 @@
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: avd.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-from google.protobuf import descriptor_pb2
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='avd.proto',
-  package='tools.android.avd.proto',
-  syntax='proto3',
-  serialized_pb=_b('\n\tavd.proto\x12\x17tools.android.avd.proto\"G\n\x0b\x43IPDPackage\x12\x14\n\x0cpackage_name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x11\n\tdest_path\x18\x03 \x01(\t\"\xf1\x01\n\x03\x41vd\x12>\n\x10\x65mulator_package\x18\x01 \x01(\x0b\x32$.tools.android.avd.proto.CIPDPackage\x12\x42\n\x14system_image_package\x18\x02 \x01(\x0b\x32$.tools.android.avd.proto.CIPDPackage\x12\x19\n\x11system_image_name\x18\x03 \x01(\t\x12\x39\n\x0b\x61vd_package\x18\x04 \x01(\x0b\x32$.tools.android.avd.proto.CIPDPackage\x12\x10\n\x08\x61vd_name\x18\x05 \x01(\tb\x06proto3')
-)
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-
-
-
-_CIPDPACKAGE = _descriptor.Descriptor(
-  name='CIPDPackage',
-  full_name='tools.android.avd.proto.CIPDPackage',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='package_name', full_name='tools.android.avd.proto.CIPDPackage.package_name', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='version', full_name='tools.android.avd.proto.CIPDPackage.version', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='dest_path', full_name='tools.android.avd.proto.CIPDPackage.dest_path', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=38,
-  serialized_end=109,
-)
-
-
-_AVD = _descriptor.Descriptor(
-  name='Avd',
-  full_name='tools.android.avd.proto.Avd',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='emulator_package', full_name='tools.android.avd.proto.Avd.emulator_package', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='system_image_package', full_name='tools.android.avd.proto.Avd.system_image_package', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='system_image_name', full_name='tools.android.avd.proto.Avd.system_image_name', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='avd_package', full_name='tools.android.avd.proto.Avd.avd_package', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='avd_name', full_name='tools.android.avd.proto.Avd.avd_name', index=4,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=112,
-  serialized_end=353,
-)
-
-_AVD.fields_by_name['emulator_package'].message_type = _CIPDPACKAGE
-_AVD.fields_by_name['system_image_package'].message_type = _CIPDPACKAGE
-_AVD.fields_by_name['avd_package'].message_type = _CIPDPACKAGE
-DESCRIPTOR.message_types_by_name['CIPDPackage'] = _CIPDPACKAGE
-DESCRIPTOR.message_types_by_name['Avd'] = _AVD
-
-CIPDPackage = _reflection.GeneratedProtocolMessageType('CIPDPackage', (_message.Message,), dict(
-  DESCRIPTOR = _CIPDPACKAGE,
-  __module__ = 'avd_pb2'
-  # @@protoc_insertion_point(class_scope:tools.android.avd.proto.CIPDPackage)
-  ))
-_sym_db.RegisterMessage(CIPDPackage)
-
-Avd = _reflection.GeneratedProtocolMessageType('Avd', (_message.Message,), dict(
-  DESCRIPTOR = _AVD,
-  __module__ = 'avd_pb2'
-  # @@protoc_insertion_point(class_scope:tools.android.avd.proto.Avd)
-  ))
-_sym_db.RegisterMessage(Avd)
-
-
-# @@protoc_insertion_point(module_scope)
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index 8bde3e0..56398c3 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -614,6 +614,7 @@
       'Win x64 Builder': 'gpu_tests_release_bot_minimal_symbols',
       'Win x64 Builder (dbg)': 'gpu_tests_debug_bot',
       'Windows deterministic': 'release_bot_x86_minimal_symbols',
+      'win-celab-builder-rel': 'celab_release_bot',
     },
 
     'internal.client.kitchensync': {
@@ -899,6 +900,7 @@
       'win10_chromium_x64_rel_ng_exp': 'release_trybot',
       'win-annotator-rel': 'release_trybot',
       'win-asan': 'asan_clang_fuzzer_static_v8_heap_minimal_symbols_release',
+      'win-celab-try-rel': 'celab_release_bot',
       'win-jumbo-rel': 'jumbo_large_chunks_release_bot_compile_only',
       'win-libfuzzer-asan-rel': 'libfuzzer_windows_asan_release_trybot',
       'win7-rel': 'gpu_tests_release_trybot_x86_resource_whitelisting',
@@ -1265,6 +1267,10 @@
       'cast', 'cast_audio', 'release_trybot',
     ],
 
+    'celab_release_bot': [
+      'release_bot', 'minimal_symbols'
+    ],
+
     'cfi_full_cfi_icall_cfi_diag_recover_release_static': [
       'cfi_full', 'cfi_icall', 'cfi_diag', 'cfi_recover', 'thin_lto', 'release', 'static',
     ],
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 8fdd729..01c5598 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -36776,6 +36776,7 @@
   <int value="317432596" label="DisplayLocking:disabled"/>
   <int value="319683583" label="ContentSuggestionsDebugLog:enabled"/>
   <int value="320121752" label="DelegateOverscrollSwipes:disabled"/>
+  <int value="321366101" label="WebXRARDOMOverlay:enabled"/>
   <int value="323605372" label="ui-disable-compositor-animation-timelines"/>
   <int value="324060906"
       label="enable-experimental-accessibility-language-detection"/>
@@ -36901,6 +36902,7 @@
   <int value="477967119" label="enable-unified-media-pipeline"/>
   <int value="479906041" label="RunAllFlashInAllowMode:disabled"/>
   <int value="480544447" label="NonValidatingReloadOnRefreshContentV2:enabled"/>
+  <int value="480677983" label="WebXRARDOMOverlay:disabled"/>
   <int value="481506759" label="ServiceWorkerScriptStreaming:enabled"/>
   <int value="482232604" label="PercentBasedScrolling:enabled"/>
   <int value="492113129" label="ExperimentalAppBanners:enabled"/>
@@ -53073,6 +53075,7 @@
   <int value="3" label="User dismissed the Safety Tip with the esc key"/>
   <int value="4" label="User dismissed the Safety Tip with the close button"/>
   <int value="5" label="User dismissed the Safety Tip with the ignore button"/>
+  <int value="6" label="User opened help center"/>
 </enum>
 
 <enum name="SafetyTipStatus">
diff --git a/tools/metrics/histograms/extract_histograms.py b/tools/metrics/histograms/extract_histograms.py
index 0f59390..f45619565 100644
--- a/tools/metrics/histograms/extract_histograms.py
+++ b/tools/metrics/histograms/extract_histograms.py
@@ -521,7 +521,12 @@
     suffix_nodes = histogram_suffixes.getElementsByTagName(suffix_tag)
     suffix_labels = {}
     for suffix in suffix_nodes:
-      suffix_labels[suffix.getAttribute('name')] = suffix.getAttribute('label')
+      suffix_name = suffix.getAttribute('name')
+      if not suffix.hasAttribute('label'):
+        logging.error('suffix %s in histogram_suffixes %s should have a label',
+                      suffix_name, name)
+        have_errors = True
+      suffix_labels[suffix_name] = suffix.getAttribute('label')
     # Find owners list under current histogram_suffixes tag.
     owners, _ = _ExtractOwners(histogram_suffixes)
 
diff --git a/tools/metrics/histograms/extract_histograms_test.py b/tools/metrics/histograms/extract_histograms_test.py
index cc2afe3..7a69dbf 100644
--- a/tools/metrics/histograms/extract_histograms_test.py
+++ b/tools/metrics/histograms/extract_histograms_test.py
@@ -481,6 +481,34 @@
     self.assertEquals('This is a summary with & and " and \'',
                       hists['Test.Histogram']['summary'])
 
+  def testNewSuffixWithoutLabel(self):
+    suffix_without_label = xml.dom.minidom.parseString("""
+<histogram-configuration>
+<histogram_suffixes_list>
+  <histogram_suffixes name="Suffixes" separator=".">
+    <suffix base="true" name="BaseSuffix"/>
+  </histogram_suffixes>
+</histogram_suffixes_list>
+</histogram-configuration>
+""")
+    _, have_errors = extract_histograms.ExtractHistogramsFromDom(
+        suffix_without_label)
+    self.assertTrue(have_errors)
+
+  def testNewSuffixWithLabel(self):
+    suffix_with_label = xml.dom.minidom.parseString("""
+<histogram-configuration>
+<histogram_suffixes_list>
+  <histogram_suffixes name="Suffixes" separator=".">
+    <suffix base="true" name="BaseSuffix" label="Base"/>
+  </histogram_suffixes>
+</histogram_suffixes_list>
+</histogram-configuration>
+""")
+    have_errors = extract_histograms. _UpdateHistogramsWithSuffixes(
+        suffix_with_label, {})
+    self.assertFalse(have_errors)
+
 if __name__ == "__main__":
   logging.basicConfig(level=logging.ERROR + 1)
   unittest.main()
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 379f755..73e9681 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -163346,9 +163346,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="AccountManagerMigrationSteps" separator=".">
-  <suffix name="ArcAccountsMigration"/>
-  <suffix name="ContentAreaAccountsMigration"/>
-  <suffix name="DeviceAccountMigration"/>
+  <suffix name="ArcAccountsMigration" label=""/>
+  <suffix name="ContentAreaAccountsMigration" label=""/>
+  <suffix name="DeviceAccountMigration" label=""/>
   <affected-histogram name="AccountManager.Migrations.StepResult"/>
 </histogram_suffixes>
 
@@ -163388,8 +163388,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="AdapterDecision" separator="." ordering="prefix,2">
-  <suffix name="BrightnessChange"/>
-  <suffix name="NoBrightnessChange"/>
+  <suffix name="BrightnessChange" label=""/>
+  <suffix name="NoBrightnessChange" label=""/>
   <affected-histogram
       name="AutoScreenBrightness.AdapterDecisionAtUserChange.Brighten.AlsDelta"/>
   <affected-histogram
@@ -163726,8 +163726,8 @@
 
 <histogram_suffixes name="AlsBrightnessDirection" separator="."
     ordering="prefix,2">
-  <suffix name="Brighten"/>
-  <suffix name="Darken"/>
+  <suffix name="Brighten" label=""/>
+  <suffix name="Darken" label=""/>
   <affected-histogram
       name="AutoScreenBrightness.AdapterDecisionAtUserChange.AlsDelta"/>
   <affected-histogram
@@ -163812,14 +163812,14 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="AndroidDownloadTypes" separator=".">
-  <suffix name="Audio"/>
-  <suffix name="Document"/>
-  <suffix name="Image"/>
-  <suffix name="OfflinePage"/>
-  <suffix name="Other"/>
-  <suffix name="PrefetchedOfflinePage"/>
-  <suffix name="Total"/>
-  <suffix name="Video"/>
+  <suffix name="Audio" label=""/>
+  <suffix name="Document" label=""/>
+  <suffix name="Image" label=""/>
+  <suffix name="OfflinePage" label=""/>
+  <suffix name="Other" label=""/>
+  <suffix name="PrefetchedOfflinePage" label=""/>
+  <suffix name="Total" label=""/>
+  <suffix name="Video" label=""/>
   <affected-histogram name="Android.DownloadManager.InitialCount"/>
   <affected-histogram name="Android.DownloadManager.InitialCount.Viewed"/>
   <affected-histogram
@@ -163911,16 +163911,16 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="AndroidGATTEvents" separator=".">
-  <suffix name="onCharacteristicRead.Status"/>
-  <suffix name="onCharacteristicWrite.Status"/>
+  <suffix name="onCharacteristicRead.Status" label=""/>
+  <suffix name="onCharacteristicWrite.Status" label=""/>
   <suffix name="onConnectionStateChange.Status.Connected"
       label="While Connected"/>
   <suffix name="onConnectionStateChange.Status.Disconnected"
       label="While Disonnected"/>
   <suffix name="onConnectionStateChange.Status.InvalidState"
       label="While InvalidState"/>
-  <suffix name="onDescriptorRead.Status"/>
-  <suffix name="onDescriptorWrite.Status"/>
+  <suffix name="onDescriptorRead.Status" label=""/>
+  <suffix name="onDescriptorWrite.Status" label=""/>
   <suffix name="onServicesDiscovered.Status.Connected" label="While Connected"/>
   <suffix name="onServicesDiscovered.Status.Disconnected"
       label="While Disconnected"/>
@@ -163942,23 +163942,23 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="AndroidTabPersistentStoreTime" separator=".">
-  <suffix name="CleanupAllEncryptedTime">
+  <suffix name="CleanupAllEncryptedTime" label="">
     <obsolete>
       Original code deleted in a refactoring.
     </obsolete>
   </suffix>
-  <suffix name="LoadStateInternalPrefetchTime"/>
-  <suffix name="LoadStateInternalTime"/>
-  <suffix name="LoadStateTime"/>
-  <suffix name="MergeStateInternalFetchTime"/>
-  <suffix name="MergeStateInternalTime"/>
-  <suffix name="ReadMergedStateTime"/>
-  <suffix name="ReadSavedStateTime"/>
-  <suffix name="RestoreTabPrefetchTime"/>
-  <suffix name="RestoreTabTime"/>
-  <suffix name="SaveListTime"/>
-  <suffix name="SaveStateTime"/>
-  <suffix name="SaveTabsTime"/>
+  <suffix name="LoadStateInternalPrefetchTime" label=""/>
+  <suffix name="LoadStateInternalTime" label=""/>
+  <suffix name="LoadStateTime" label=""/>
+  <suffix name="MergeStateInternalFetchTime" label=""/>
+  <suffix name="MergeStateInternalTime" label=""/>
+  <suffix name="ReadMergedStateTime" label=""/>
+  <suffix name="ReadSavedStateTime" label=""/>
+  <suffix name="RestoreTabPrefetchTime" label=""/>
+  <suffix name="RestoreTabTime" label=""/>
+  <suffix name="SaveListTime" label=""/>
+  <suffix name="SaveStateTime" label=""/>
+  <suffix name="SaveTabsTime" label=""/>
   <affected-histogram name="Android.StrictMode.TabPersistentStore"/>
 </histogram_suffixes>
 
@@ -163979,14 +163979,14 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="AppListState" separator=".">
-  <suffix name="Closed"/>
-  <suffix name="FullscreenAllApps"/>
-  <suffix name="FullscreenSearch"/>
-  <suffix name="Half"/>
-  <suffix name="HomecherAllApps"/>
-  <suffix name="HomecherClosed"/>
-  <suffix name="HomecherSearch"/>
-  <suffix name="Peeking"/>
+  <suffix name="Closed" label=""/>
+  <suffix name="FullscreenAllApps" label=""/>
+  <suffix name="FullscreenSearch" label=""/>
+  <suffix name="Half" label=""/>
+  <suffix name="HomecherAllApps" label=""/>
+  <suffix name="HomecherClosed" label=""/>
+  <suffix name="HomecherSearch" label=""/>
+  <suffix name="Peeking" label=""/>
   <affected-histogram name="Apps.AppListAppLaunchedV2"/>
 </histogram_suffixes>
 
@@ -164066,8 +164066,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="AsyncDNSPref" separator="_">
-  <suffix name="Disabled"/>
-  <suffix name="Enabled"/>
+  <suffix name="Disabled" label=""/>
+  <suffix name="Enabled" label=""/>
   <affected-histogram name="AsyncDNS.PrefDefaultSource"/>
   <affected-histogram name="AsyncDNS.PrefSource"/>
 </histogram_suffixes>
@@ -164084,11 +164084,11 @@
   <obsolete>
     Deprecated 2016/03. The async set-as-default experiments are finished.
   </obsolete>
-  <suffix name="Abandoned"/>
-  <suffix name="Failure"/>
-  <suffix name="NoErrorsNotDefault"/>
-  <suffix name="Retry"/>
-  <suffix name="Success"/>
+  <suffix name="Abandoned" label=""/>
+  <suffix name="Failure" label=""/>
+  <suffix name="NoErrorsNotDefault" label=""/>
+  <suffix name="Retry" label=""/>
+  <suffix name="Success" label=""/>
   <affected-histogram name="DefaultBrowser.AsyncSetAsDefault.Duration"/>
   <affected-histogram name="DefaultBrowser.SetDefaultAsyncDuration"/>
 </histogram_suffixes>
@@ -164598,44 +164598,44 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="BlinkCanvasDrawImageSizeType" separator=".">
-  <suffix name="Canvas.CPU"/>
-  <suffix name="Canvas.GPU"/>
-  <suffix name="CssImage"/>
-  <suffix name="ImageBitmap"/>
-  <suffix name="ImageElement"/>
-  <suffix name="OffscreenCanvas.CPU"/>
-  <suffix name="OffscreenCanvas.GPU"/>
-  <suffix name="SVG"/>
-  <suffix name="Unknown"/>
-  <suffix name="Video"/>
+  <suffix name="Canvas.CPU" label=""/>
+  <suffix name="Canvas.GPU" label=""/>
+  <suffix name="CssImage" label=""/>
+  <suffix name="ImageBitmap" label=""/>
+  <suffix name="ImageElement" label=""/>
+  <suffix name="OffscreenCanvas.CPU" label=""/>
+  <suffix name="OffscreenCanvas.GPU" label=""/>
+  <suffix name="SVG" label=""/>
+  <suffix name="Unknown" label=""/>
+  <suffix name="Video" label=""/>
   <affected-histogram name="Blink.Canvas.DrawImage.SqrtNumberOfPixels"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="BlinkCanvasDrawImageType" separator=".">
-  <suffix base="true" name="Canvas"/>
-  <suffix base="true" name="CssImage"/>
-  <suffix base="true" name="ImageBitmap"/>
-  <suffix base="true" name="ImageElement"/>
-  <suffix base="true" name="OffscreenCanvas"/>
-  <suffix base="true" name="Others">
+  <suffix base="true" name="Canvas" label=""/>
+  <suffix base="true" name="CssImage" label=""/>
+  <suffix base="true" name="ImageBitmap" label=""/>
+  <suffix base="true" name="ImageElement" label=""/>
+  <suffix base="true" name="OffscreenCanvas" label=""/>
+  <suffix base="true" name="Others" label="">
     <obsolete>
       Deprecated 10/2018 with the addition of CssImage and Unknown.
     </obsolete>
   </suffix>
-  <suffix base="true" name="SVG"/>
-  <suffix base="true" name="Unknown"/>
-  <suffix base="true" name="Video"/>
+  <suffix base="true" name="SVG" label=""/>
+  <suffix base="true" name="Unknown" label=""/>
+  <suffix base="true" name="Video" label=""/>
   <affected-histogram name="Blink.Canvas.DrawImage.Duration"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="BlinkCanvasDurationBySource" separator=".">
-  <suffix name="CPU"/>
-  <suffix name="DisplayList">
+  <suffix name="CPU" label=""/>
+  <suffix name="DisplayList" label="">
     <obsolete>
       Deprecated 11/2017 with removal of Display List Canvas 2D mode.
     </obsolete>
   </suffix>
-  <suffix name="GPU"/>
+  <suffix name="GPU" label=""/>
   <affected-histogram name="Blink.Canvas.DrawImage.Duration.Canvas"/>
   <affected-histogram name="Blink.Canvas.DrawImage.Duration.CssImage"/>
   <affected-histogram name="Blink.Canvas.DrawImage.Duration.ImageBitmap"/>
@@ -164649,28 +164649,28 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="BlinkCanvasOffscreenCommitType" separator=".">
-  <suffix name="GPUCanvasGPUCompositingMain"/>
-  <suffix name="GPUCanvasGPUCompositingWorker"/>
-  <suffix name="GPUCanvasSoftwareCompositingMain"/>
-  <suffix name="GPUCanvasSoftwareCompositingWorker"/>
-  <suffix name="SoftwareCanvasGPUCompositingMain"/>
-  <suffix name="SoftwareCanvasGPUCompositingWorker"/>
-  <suffix name="SoftwareCanvasSoftwareCompositingMain"/>
-  <suffix name="SoftwareCanvasSoftwareCompositingWorker"/>
+  <suffix name="GPUCanvasGPUCompositingMain" label=""/>
+  <suffix name="GPUCanvasGPUCompositingWorker" label=""/>
+  <suffix name="GPUCanvasSoftwareCompositingMain" label=""/>
+  <suffix name="GPUCanvasSoftwareCompositingWorker" label=""/>
+  <suffix name="SoftwareCanvasGPUCompositingMain" label=""/>
+  <suffix name="SoftwareCanvasGPUCompositingWorker" label=""/>
+  <suffix name="SoftwareCanvasSoftwareCompositingMain" label=""/>
+  <suffix name="SoftwareCanvasSoftwareCompositingWorker" label=""/>
   <affected-histogram name="Blink.Canvas.OffscreenCommitTimer"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="BlinkCanvasRasterDurationType" separator=".">
-  <suffix name="Accelerated.CPU"/>
-  <suffix name="Accelerated.GPU"/>
-  <suffix name="Accelerated.Total"/>
-  <suffix name="Unaccelerated"/>
+  <suffix name="Accelerated.CPU" label=""/>
+  <suffix name="Accelerated.GPU" label=""/>
+  <suffix name="Accelerated.Total" label=""/>
+  <suffix name="Unaccelerated" label=""/>
   <affected-histogram name="Blink.Canvas.RasterDuration"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="BlinkCanvasToBlobIdleEncodAndDelayType" separator=".">
-  <suffix name="JPEG"/>
-  <suffix name="PNG"/>
+  <suffix name="JPEG" label=""/>
+  <suffix name="PNG" label=""/>
   <affected-histogram name="Blink.Canvas.ToBlob.CompleteEncodingDelay"/>
   <affected-histogram name="Blink.Canvas.ToBlob.IdleEncodeDuration">
     <obsolete>
@@ -164681,50 +164681,50 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="BlinkCanvasToBlobType" separator=".">
-  <suffix name="JPEG"/>
-  <suffix name="PNG"/>
-  <suffix name="WEBP"/>
+  <suffix name="JPEG" label=""/>
+  <suffix name="PNG" label=""/>
+  <suffix name="WEBP" label=""/>
   <affected-histogram name="Blink.Canvas.ToBlob.ScaledDuration"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="BlinkCanvasToDataURLMimeType" separator=".">
-  <suffix name="BMP">
+  <suffix name="BMP" label="">
     <obsolete>
       Removed in Oct 2016
     </obsolete>
   </suffix>
-  <suffix name="GIF">
+  <suffix name="GIF" label="">
     <obsolete>
       Removed in Oct 2016
     </obsolete>
   </suffix>
-  <suffix name="ICON">
+  <suffix name="ICON" label="">
     <obsolete>
       Removed in Oct 2016
     </obsolete>
   </suffix>
-  <suffix name="JPEG"/>
-  <suffix name="PNG"/>
-  <suffix name="TIFF">
+  <suffix name="JPEG" label=""/>
+  <suffix name="PNG" label=""/>
+  <suffix name="TIFF" label="">
     <obsolete>
       Removed in Oct 2016
     </obsolete>
   </suffix>
-  <suffix name="Unknown">
+  <suffix name="Unknown" label="">
     <obsolete>
       Removed in Oct 2016
     </obsolete>
   </suffix>
-  <suffix name="WEBP"/>
+  <suffix name="WEBP" label=""/>
   <affected-histogram name="Blink.Canvas.ToDataURLScaledDuration"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="BlinkCompositingLayerCount" separator=".">
-  <suffix name="ActiveAnimation"/>
-  <suffix name="AssumedOverlap"/>
-  <suffix name="IndirectComposited"/>
-  <suffix name="Overlap"/>
-  <suffix name="TotalComposited"/>
+  <suffix name="ActiveAnimation" label=""/>
+  <suffix name="AssumedOverlap" label=""/>
+  <suffix name="IndirectComposited" label=""/>
+  <suffix name="Overlap" label=""/>
+  <suffix name="TotalComposited" label=""/>
   <affected-histogram name="Blink.Compositing.LayerPromotionCount"/>
 </histogram_suffixes>
 
@@ -164807,8 +164807,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="BluetoothPairedStates" separator=".">
-  <suffix name="NotPaired"/>
-  <suffix name="Paired"/>
+  <suffix name="NotPaired" label=""/>
+  <suffix name="Paired" label=""/>
   <affected-histogram
       name="Bluetooth.ChromeOS.DeviceSelectionDuration.Settings"/>
   <affected-histogram
@@ -164816,9 +164816,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="BluetoothTransportTypes" separator=".">
-  <suffix name="BLE"/>
-  <suffix name="Classic"/>
-  <suffix name="Dual"/>
+  <suffix name="BLE" label=""/>
+  <suffix name="Classic" label=""/>
+  <suffix name="Dual" label=""/>
   <affected-histogram
       name="Bluetooth.ChromeOS.DeviceSelectionDuration.Settings.NotPaired"/>
   <affected-histogram
@@ -164829,16 +164829,16 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="BluetoothUISurfaces" separator=".">
-  <suffix name="Settings"/>
-  <suffix name="SystemTray"/>
+  <suffix name="Settings" label=""/>
+  <suffix name="SystemTray" label=""/>
   <affected-histogram name="Bluetooth.ChromeOS.DeviceSelectionDuration"/>
   <affected-histogram
       name="Bluetooth.ChromeOS.UserInitiatedReconnectionAttempt.Result"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="BrowserRunningMode" separator=".">
-  <suffix name="FullBrowser"/>
-  <suffix name="ReducedMode"/>
+  <suffix name="FullBrowser" label=""/>
+  <suffix name="ReducedMode" label=""/>
   <affected-histogram
       name="Memory.BackgroundTask.Browser.PrivateMemoryFootprint"/>
   <affected-histogram
@@ -165152,8 +165152,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="CertificateTransparencyProtocol" separator=".">
-  <suffix name="QUIC"/>
-  <suffix name="SSL"/>
+  <suffix name="QUIC" label=""/>
+  <suffix name="SSL" label=""/>
   <affected-histogram
       name="Net.CertificateTransparency.ConnectionComplianceStatus2"/>
   <affected-histogram
@@ -165299,15 +165299,15 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ChromeOS.Camera.JpegProcessMethod" separator=".">
-  <suffix name="Hardware"/>
-  <suffix name="Software"/>
+  <suffix name="Hardware" label=""/>
+  <suffix name="Software" label=""/>
   <affected-histogram name="ChromeOS.Camera.Jpeg.Latency"/>
   <affected-histogram name="ChromeOS.Camera.Jpeg.Resolution"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="ChromeOS.Camera.JpegProcessType" separator=".">
-  <suffix name="Decode"/>
-  <suffix name="Encode"/>
+  <suffix name="Decode" label=""/>
+  <suffix name="Encode" label=""/>
   <affected-histogram name="ChromeOS.Camera.Jpeg.Latency.Hardware"/>
   <affected-histogram name="ChromeOS.Camera.Jpeg.Latency.Software"/>
   <affected-histogram name="ChromeOS.Camera.Jpeg.Resolution.Hardware"/>
@@ -165330,9 +165330,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ChromeOS.MachineIdRegen.AgeSeconds" separator="_">
-  <suffix name="Network"/>
-  <suffix name="Periodic"/>
-  <suffix name="Unknown"/>
+  <suffix name="Network" label=""/>
+  <suffix name="Periodic" label=""/>
+  <suffix name="Unknown" label=""/>
   <affected-histogram name="ChromeOS.MachineIdRegen.AgeSeconds"/>
 </histogram_suffixes>
 
@@ -165609,8 +165609,8 @@
 
 <histogram_suffixes name="CompositorTimingHistoryProcess" separator="."
     ordering="prefix">
-  <suffix name="Browser"/>
-  <suffix name="Renderer"/>
+  <suffix name="Browser" label=""/>
+  <suffix name="Renderer" label=""/>
   <affected-histogram name="Scheduling.BeginImplFrameLatency2"/>
   <affected-histogram name="Scheduling.BeginMainFrameQueueDurationCritical2"/>
   <affected-histogram name="Scheduling.BeginMainFrameStartToCommitDuration2"/>
@@ -165626,8 +165626,8 @@
 
 <histogram_suffixes name="CompositorTimingHistoryProcess2" separator="."
     ordering="prefix">
-  <suffix name="Browser"/>
-  <suffix name="Renderer"/>
+  <suffix name="Browser" label=""/>
+  <suffix name="Renderer" label=""/>
   <affected-histogram name="Scheduling.ImageInvalidationUpdateDuration"/>
 </histogram_suffixes>
 
@@ -165638,8 +165638,8 @@
     an inefficient usage of UMA bandwidth. They have been replaced by new
     metrics of the same name with a &quot;2&quot; appended to them.
   </obsolete>
-  <suffix name="Browser"/>
-  <suffix name="Renderer"/>
+  <suffix name="Browser" label=""/>
+  <suffix name="Renderer" label=""/>
   <affected-histogram name="Scheduling.ActivateDuration"/>
   <affected-histogram name="Scheduling.BeginMainFrameIntervalCritical"/>
   <affected-histogram name="Scheduling.BeginMainFrameIntervalNotCritical"/>
@@ -165741,13 +165741,13 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ConnectionMigrationCause" separator=".">
-  <suffix name="OnMigrateBackToDefaultNetwork"/>
-  <suffix name="OnNetworkConnected"/>
-  <suffix name="OnNetworkDisconnected"/>
-  <suffix name="OnNetworkMadeDefault"/>
-  <suffix name="OnPathDegrading"/>
-  <suffix name="OnWriteError"/>
-  <suffix name="Unknown"/>
+  <suffix name="OnMigrateBackToDefaultNetwork" label=""/>
+  <suffix name="OnNetworkConnected" label=""/>
+  <suffix name="OnNetworkDisconnected" label=""/>
+  <suffix name="OnNetworkMadeDefault" label=""/>
+  <suffix name="OnPathDegrading" label=""/>
+  <suffix name="OnWriteError" label=""/>
+  <suffix name="Unknown" label=""/>
   <affected-histogram name="Net.QuicSession.ConnectionMigration"/>
   <affected-histogram name="Net.QuicSession.ConnectionMigrationProbeSuccess"/>
   <affected-histogram
@@ -165758,8 +165758,8 @@
   <obsolete>
     Deprecated 6/2019. No longer used.
   </obsolete>
-  <suffix name="Default"/>
-  <suffix name="Fallback"/>
+  <suffix name="Default" label=""/>
+  <suffix name="Fallback" label=""/>
   <affected-histogram name="ConnectivityDetector.Probe.HttpResponseCode"/>
   <affected-histogram name="ConnectivityDetector.Probe.Result"/>
 </histogram_suffixes>
@@ -165782,8 +165782,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ConnnectBackupJobs" separator="_">
-  <suffix name="ConnectBackupJobsDisabled"/>
-  <suffix name="ConnectBackupJobsEnabled"/>
+  <suffix name="ConnectBackupJobsDisabled" label=""/>
+  <suffix name="ConnectBackupJobsEnabled" label=""/>
   <affected-histogram name="Net.PreconnectUtilization"/>
   <affected-histogram name="Net.PreconnectUtilization2"/>
   <affected-histogram name="PLT.Abandoned"/>
@@ -166017,12 +166017,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ContextualSearchQuickActionCategory" separator=".">
-  <suffix name="Address"/>
-  <suffix name="Email"/>
-  <suffix name="Event"/>
-  <suffix name="None"/>
-  <suffix name="Phone"/>
-  <suffix name="Website"/>
+  <suffix name="Address" label=""/>
+  <suffix name="Email" label=""/>
+  <suffix name="Event" label=""/>
+  <suffix name="None" label=""/>
+  <suffix name="Phone" label=""/>
+  <suffix name="Website" label=""/>
   <affected-histogram name="Search.ContextualSearchQuickActions.Clicked"/>
   <affected-histogram
       name="Search.ContextualSearchQuickActions.IntentResolution"/>
@@ -166081,9 +166081,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="CrosFirstRunStep" separator="">
-  <suffix name="AppList"/>
-  <suffix name="Help"/>
-  <suffix name="Tray"/>
+  <suffix name="AppList" label=""/>
+  <suffix name="Help" label=""/>
+  <suffix name="Tray" label=""/>
   <affected-histogram name="CrosFirstRun.TimeSpentOnStep"/>
 </histogram_suffixes>
 
@@ -166097,105 +166097,105 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="CryptohomeAsyncDBusMethod" separator=".">
-  <suffix name="AsyncTpmAttestationCreateCertRequest"/>
-  <suffix name="AsyncTpmAttestationCreateEnrollRequest"/>
-  <suffix name="AsyncTpmAttestationEnroll"/>
-  <suffix name="AsyncTpmAttestationFinishCertRequest"/>
-  <suffix name="TpmAttestationRegisterKey"/>
-  <suffix name="TpmAttestationSignEnterpriseVaChallenge"/>
-  <suffix name="TpmAttestationSignSimpleChallenge"/>
+  <suffix name="AsyncTpmAttestationCreateCertRequest" label=""/>
+  <suffix name="AsyncTpmAttestationCreateEnrollRequest" label=""/>
+  <suffix name="AsyncTpmAttestationEnroll" label=""/>
+  <suffix name="AsyncTpmAttestationFinishCertRequest" label=""/>
+  <suffix name="TpmAttestationRegisterKey" label=""/>
+  <suffix name="TpmAttestationSignEnterpriseVaChallenge" label=""/>
+  <suffix name="TpmAttestationSignSimpleChallenge" label=""/>
   <affected-histogram name="Cryptohome.AsyncDBusRequest"/>
   <affected-histogram name="Cryptohome.AsyncDBusRequest.Inqueue"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="CryptohomeClientDBusMethod" separator=".">
-  <suffix name="AddKeyEx"/>
-  <suffix name="AsyncDoesUsersExist"/>
-  <suffix name="AsyncMigrateKey"/>
-  <suffix name="AsyncMount"/>
-  <suffix name="AsyncMountGuest"/>
-  <suffix name="AsyncRemove"/>
-  <suffix name="AsyncRemoveTrackedSubdirectories"/>
-  <suffix name="AsyncTpmAttestationCreateCertRequest"/>
-  <suffix name="AsyncTpmAttestationCreateCertRequestByProfile"/>
-  <suffix name="AsyncTpmAttestationCreateEnrollRequest"/>
-  <suffix name="AsyncTpmAttestationCreateEnrollRequestNew"/>
-  <suffix name="AsyncTpmAttestationEnroll"/>
-  <suffix name="AsyncTpmAttestationEnrollNew"/>
-  <suffix name="AsyncTpmAttestationFinishCertRequest"/>
-  <suffix name="CheckKeyEx"/>
-  <suffix name="FinalizeBootLockbox"/>
-  <suffix name="FlushAndSignBootAttributes"/>
-  <suffix name="GetAccountDiskUsage"/>
-  <suffix name="GetBootAttribute"/>
-  <suffix name="GetCurrentSpaceForGid"/>
-  <suffix name="GetCurrentSpaceForUid"/>
-  <suffix name="GetEndorsementInfo"/>
-  <suffix name="GetFirmwareManagementParameters"/>
-  <suffix name="GetKeyDataEx"/>
-  <suffix name="GetLoginStatus"/>
-  <suffix name="GetSanitizedUsername"/>
-  <suffix name="GetStatusString"/>
-  <suffix name="GetSupportedKeyPolicies"/>
-  <suffix name="GetSystemSalt"/>
-  <suffix name="GetTpmStatus"/>
-  <suffix name="InstallAttributesCount"/>
-  <suffix name="InstallAttributesFinalize"/>
-  <suffix name="InstallAttributesGet"/>
-  <suffix name="InstallAttributesIsFirstInstall"/>
-  <suffix name="InstallAttributesIsInvalid"/>
-  <suffix name="InstallAttributesIsReady"/>
-  <suffix name="InstallAttributesIsSecure"/>
-  <suffix name="InstallAttributesSet"/>
-  <suffix name="IsMounted"/>
-  <suffix name="IsQuotaSupported"/>
-  <suffix name="MigrateKey"/>
-  <suffix name="MigrateKeyEx"/>
-  <suffix name="MigrateToDircrypto"/>
-  <suffix name="Mount"/>
-  <suffix name="MountEx"/>
-  <suffix name="MountGuest"/>
-  <suffix name="MountGuestEx"/>
-  <suffix name="NeedsDircryptoMigration"/>
-  <suffix name="Pkcs11GetTpmTokenInfo"/>
-  <suffix name="Pkcs11GetTpmTokenInfoForUser"/>
-  <suffix name="Pkcs11IsTpmTokenReady"/>
-  <suffix name="RemoveEx"/>
-  <suffix name="RemoveFirmwareManagementParameters"/>
-  <suffix name="RemoveKeyEx"/>
-  <suffix name="RemoveTrackedSubdirectories"/>
-  <suffix name="RenameCryptohome"/>
-  <suffix name="SetBootAttribute"/>
-  <suffix name="SetFirmwareManagementParameters"/>
-  <suffix name="SignBootLockbox"/>
-  <suffix name="TpmAttestationCreateCertRequest"/>
-  <suffix name="TpmAttestationCreateEnrollRequest"/>
-  <suffix name="TpmAttestationDeleteKeys"/>
-  <suffix name="TpmAttestationDoesKeyExist"/>
-  <suffix name="TpmAttestationEnroll"/>
-  <suffix name="TpmAttestationFinishCertRequest"/>
-  <suffix name="TpmAttestationGetCertificate"/>
-  <suffix name="TpmAttestationGetEnrollmentId"/>
-  <suffix name="TpmAttestationGetKeyPayload"/>
-  <suffix name="TpmAttestationGetPublicKey"/>
-  <suffix name="TpmAttestationRegisterKey"/>
-  <suffix name="TpmAttestationSetKeyPayload"/>
-  <suffix name="TpmAttestationSignEnterpriseChallenge"/>
-  <suffix name="TpmAttestationSignEnterpriseVaChallenge"/>
-  <suffix name="TpmAttestationSignSimpleChallenge"/>
-  <suffix name="TpmCanAttemptOwnership"/>
-  <suffix name="TpmClearStoredPassword"/>
-  <suffix name="TpmGetPassword"/>
-  <suffix name="TpmGetVersionStructured"/>
-  <suffix name="TpmIsAttestationEnrolled"/>
-  <suffix name="TpmIsAttestationPrepared"/>
-  <suffix name="TpmIsBeingOwned"/>
-  <suffix name="TpmIsEnabled"/>
-  <suffix name="TpmIsOwned"/>
-  <suffix name="TpmIsReady"/>
-  <suffix name="Unmount"/>
-  <suffix name="UpdateKeyEx"/>
-  <suffix name="VerifyBootLockbox"/>
+  <suffix name="AddKeyEx" label=""/>
+  <suffix name="AsyncDoesUsersExist" label=""/>
+  <suffix name="AsyncMigrateKey" label=""/>
+  <suffix name="AsyncMount" label=""/>
+  <suffix name="AsyncMountGuest" label=""/>
+  <suffix name="AsyncRemove" label=""/>
+  <suffix name="AsyncRemoveTrackedSubdirectories" label=""/>
+  <suffix name="AsyncTpmAttestationCreateCertRequest" label=""/>
+  <suffix name="AsyncTpmAttestationCreateCertRequestByProfile" label=""/>
+  <suffix name="AsyncTpmAttestationCreateEnrollRequest" label=""/>
+  <suffix name="AsyncTpmAttestationCreateEnrollRequestNew" label=""/>
+  <suffix name="AsyncTpmAttestationEnroll" label=""/>
+  <suffix name="AsyncTpmAttestationEnrollNew" label=""/>
+  <suffix name="AsyncTpmAttestationFinishCertRequest" label=""/>
+  <suffix name="CheckKeyEx" label=""/>
+  <suffix name="FinalizeBootLockbox" label=""/>
+  <suffix name="FlushAndSignBootAttributes" label=""/>
+  <suffix name="GetAccountDiskUsage" label=""/>
+  <suffix name="GetBootAttribute" label=""/>
+  <suffix name="GetCurrentSpaceForGid" label=""/>
+  <suffix name="GetCurrentSpaceForUid" label=""/>
+  <suffix name="GetEndorsementInfo" label=""/>
+  <suffix name="GetFirmwareManagementParameters" label=""/>
+  <suffix name="GetKeyDataEx" label=""/>
+  <suffix name="GetLoginStatus" label=""/>
+  <suffix name="GetSanitizedUsername" label=""/>
+  <suffix name="GetStatusString" label=""/>
+  <suffix name="GetSupportedKeyPolicies" label=""/>
+  <suffix name="GetSystemSalt" label=""/>
+  <suffix name="GetTpmStatus" label=""/>
+  <suffix name="InstallAttributesCount" label=""/>
+  <suffix name="InstallAttributesFinalize" label=""/>
+  <suffix name="InstallAttributesGet" label=""/>
+  <suffix name="InstallAttributesIsFirstInstall" label=""/>
+  <suffix name="InstallAttributesIsInvalid" label=""/>
+  <suffix name="InstallAttributesIsReady" label=""/>
+  <suffix name="InstallAttributesIsSecure" label=""/>
+  <suffix name="InstallAttributesSet" label=""/>
+  <suffix name="IsMounted" label=""/>
+  <suffix name="IsQuotaSupported" label=""/>
+  <suffix name="MigrateKey" label=""/>
+  <suffix name="MigrateKeyEx" label=""/>
+  <suffix name="MigrateToDircrypto" label=""/>
+  <suffix name="Mount" label=""/>
+  <suffix name="MountEx" label=""/>
+  <suffix name="MountGuest" label=""/>
+  <suffix name="MountGuestEx" label=""/>
+  <suffix name="NeedsDircryptoMigration" label=""/>
+  <suffix name="Pkcs11GetTpmTokenInfo" label=""/>
+  <suffix name="Pkcs11GetTpmTokenInfoForUser" label=""/>
+  <suffix name="Pkcs11IsTpmTokenReady" label=""/>
+  <suffix name="RemoveEx" label=""/>
+  <suffix name="RemoveFirmwareManagementParameters" label=""/>
+  <suffix name="RemoveKeyEx" label=""/>
+  <suffix name="RemoveTrackedSubdirectories" label=""/>
+  <suffix name="RenameCryptohome" label=""/>
+  <suffix name="SetBootAttribute" label=""/>
+  <suffix name="SetFirmwareManagementParameters" label=""/>
+  <suffix name="SignBootLockbox" label=""/>
+  <suffix name="TpmAttestationCreateCertRequest" label=""/>
+  <suffix name="TpmAttestationCreateEnrollRequest" label=""/>
+  <suffix name="TpmAttestationDeleteKeys" label=""/>
+  <suffix name="TpmAttestationDoesKeyExist" label=""/>
+  <suffix name="TpmAttestationEnroll" label=""/>
+  <suffix name="TpmAttestationFinishCertRequest" label=""/>
+  <suffix name="TpmAttestationGetCertificate" label=""/>
+  <suffix name="TpmAttestationGetEnrollmentId" label=""/>
+  <suffix name="TpmAttestationGetKeyPayload" label=""/>
+  <suffix name="TpmAttestationGetPublicKey" label=""/>
+  <suffix name="TpmAttestationRegisterKey" label=""/>
+  <suffix name="TpmAttestationSetKeyPayload" label=""/>
+  <suffix name="TpmAttestationSignEnterpriseChallenge" label=""/>
+  <suffix name="TpmAttestationSignEnterpriseVaChallenge" label=""/>
+  <suffix name="TpmAttestationSignSimpleChallenge" label=""/>
+  <suffix name="TpmCanAttemptOwnership" label=""/>
+  <suffix name="TpmClearStoredPassword" label=""/>
+  <suffix name="TpmGetPassword" label=""/>
+  <suffix name="TpmGetVersionStructured" label=""/>
+  <suffix name="TpmIsAttestationEnrolled" label=""/>
+  <suffix name="TpmIsAttestationPrepared" label=""/>
+  <suffix name="TpmIsBeingOwned" label=""/>
+  <suffix name="TpmIsEnabled" label=""/>
+  <suffix name="TpmIsOwned" label=""/>
+  <suffix name="TpmIsReady" label=""/>
+  <suffix name="Unmount" label=""/>
+  <suffix name="UpdateKeyEx" label=""/>
+  <suffix name="VerifyBootLockbox" label=""/>
   <affected-histogram name="CryptohomeClient"/>
 </histogram_suffixes>
 
@@ -166713,12 +166713,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="DataUse.AppTabState.Dimensions" separator=".">
-  <suffix name="Downstream.AppBackground"/>
-  <suffix name="Downstream.AppForeground.TabBackground"/>
-  <suffix name="Downstream.AppForeground.TabForeground"/>
-  <suffix name="Upstream.AppBackground"/>
-  <suffix name="Upstream.AppForeground.TabBackground"/>
-  <suffix name="Upstream.AppForeground.TabForeground"/>
+  <suffix name="Downstream.AppBackground" label=""/>
+  <suffix name="Downstream.AppForeground.TabBackground" label=""/>
+  <suffix name="Downstream.AppForeground.TabForeground" label=""/>
+  <suffix name="Upstream.AppBackground" label=""/>
+  <suffix name="Upstream.AppForeground.TabBackground" label=""/>
+  <suffix name="Upstream.AppForeground.TabForeground" label=""/>
   <affected-histogram name="DataUse.AppTabState"/>
 </histogram_suffixes>
 
@@ -166732,18 +166732,18 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="DataUse.Dimensions" separator=".">
-  <suffix name="Downstream.Background.Cellular"/>
-  <suffix name="Downstream.Background.NotCellular"/>
-  <suffix name="Downstream.Foreground.Cellular"/>
-  <suffix name="Downstream.Foreground.NotCellular"/>
-  <suffix name="Downstream.Unknown.Cellular"/>
-  <suffix name="Downstream.Unknown.NotCellular"/>
-  <suffix name="Upstream.Background.Cellular"/>
-  <suffix name="Upstream.Background.NotCellular"/>
-  <suffix name="Upstream.Foreground.Cellular"/>
-  <suffix name="Upstream.Foreground.NotCellular"/>
-  <suffix name="Upstream.Unknown.Cellular"/>
-  <suffix name="Upstream.Unknown.NotCellular"/>
+  <suffix name="Downstream.Background.Cellular" label=""/>
+  <suffix name="Downstream.Background.NotCellular" label=""/>
+  <suffix name="Downstream.Foreground.Cellular" label=""/>
+  <suffix name="Downstream.Foreground.NotCellular" label=""/>
+  <suffix name="Downstream.Unknown.Cellular" label=""/>
+  <suffix name="Downstream.Unknown.NotCellular" label=""/>
+  <suffix name="Upstream.Background.Cellular" label=""/>
+  <suffix name="Upstream.Background.NotCellular" label=""/>
+  <suffix name="Upstream.Foreground.Cellular" label=""/>
+  <suffix name="Upstream.Foreground.NotCellular" label=""/>
+  <suffix name="Upstream.Unknown.Cellular" label=""/>
+  <suffix name="Upstream.Unknown.NotCellular" label=""/>
   <affected-histogram name="DataUse.TrafficSize.System"/>
   <affected-histogram name="DataUse.TrafficSize.User"/>
 </histogram_suffixes>
@@ -166752,86 +166752,86 @@
   <obsolete>
     Replaced by version without network-type breakdown in June, 2018.
   </obsolete>
-  <suffix name="Downstream.Background.Cellular">
+  <suffix name="Downstream.Background.Cellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Downstream.Background.CellularKB"/>
-  <suffix name="Downstream.Background.NotCellular">
+  <suffix name="Downstream.Background.CellularKB" label=""/>
+  <suffix name="Downstream.Background.NotCellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Downstream.Background.NotCellularKB"/>
-  <suffix name="Downstream.Foreground.Cellular">
+  <suffix name="Downstream.Background.NotCellularKB" label=""/>
+  <suffix name="Downstream.Foreground.Cellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Downstream.Foreground.CellularKB"/>
-  <suffix name="Downstream.Foreground.NotCellular">
+  <suffix name="Downstream.Foreground.CellularKB" label=""/>
+  <suffix name="Downstream.Foreground.NotCellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Downstream.Foreground.NotCellularKB"/>
-  <suffix name="Downstream.Unknown.Cellular">
+  <suffix name="Downstream.Foreground.NotCellularKB" label=""/>
+  <suffix name="Downstream.Unknown.Cellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Downstream.Unknown.CellularKB"/>
-  <suffix name="Downstream.Unknown.NotCellular">
+  <suffix name="Downstream.Unknown.CellularKB" label=""/>
+  <suffix name="Downstream.Unknown.NotCellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Downstream.Unknown.NotCellularKB"/>
-  <suffix name="Upstream.Background.Cellular">
+  <suffix name="Downstream.Unknown.NotCellularKB" label=""/>
+  <suffix name="Upstream.Background.Cellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Upstream.Background.CellularKB"/>
-  <suffix name="Upstream.Background.NotCellular">
+  <suffix name="Upstream.Background.CellularKB" label=""/>
+  <suffix name="Upstream.Background.NotCellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Upstream.Background.NotCellularKB"/>
-  <suffix name="Upstream.Foreground.Cellular">
+  <suffix name="Upstream.Background.NotCellularKB" label=""/>
+  <suffix name="Upstream.Foreground.Cellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Upstream.Foreground.CellularKB"/>
-  <suffix name="Upstream.Foreground.NotCellular">
+  <suffix name="Upstream.Foreground.CellularKB" label=""/>
+  <suffix name="Upstream.Foreground.NotCellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Upstream.Foreground.NotCellularKB"/>
-  <suffix name="Upstream.Unknown.Cellular">
+  <suffix name="Upstream.Foreground.NotCellularKB" label=""/>
+  <suffix name="Upstream.Unknown.Cellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Upstream.Unknown.CellularKB"/>
-  <suffix name="Upstream.Unknown.NotCellular">
+  <suffix name="Upstream.Unknown.CellularKB" label=""/>
+  <suffix name="Upstream.Unknown.NotCellular" label="">
     <obsolete>
       Replaced by KB version in October, 2017.
     </obsolete>
   </suffix>
-  <suffix name="Upstream.Unknown.NotCellularKB"/>
+  <suffix name="Upstream.Unknown.NotCellularKB" label=""/>
   <affected-histogram name="DataUse.MessageSize.AllServices"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="DataUse.Dimensions.AllServicesKB" separator=".">
-  <suffix name="Downstream.Background"/>
-  <suffix name="Downstream.Foreground"/>
-  <suffix name="Upstream.Background"/>
-  <suffix name="Upstream.Foreground"/>
+  <suffix name="Downstream.Background" label=""/>
+  <suffix name="Downstream.Foreground" label=""/>
+  <suffix name="Upstream.Background" label=""/>
+  <suffix name="Upstream.Foreground" label=""/>
   <affected-histogram name="DataReductionProxy.LastWeekAggregateKB.Services"/>
   <affected-histogram name="DataReductionProxy.ThisWeekAggregateKB.Services"/>
   <affected-histogram name="DataUse.AllServicesKB"/>
@@ -166841,42 +166841,42 @@
   <obsolete>
     Deprecated Oct 2018
   </obsolete>
-  <suffix name="Autofill"/>
-  <suffix name="DomainReliability"/>
-  <suffix name="GAIA"/>
-  <suffix name="GCMDriver"/>
-  <suffix name="GoogleURLTracker"/>
-  <suffix name="ImageFetcherUntagged"/>
-  <suffix name="Invalidation"/>
-  <suffix name="LargeIconService"/>
-  <suffix name="MachineIntelligence"/>
-  <suffix name="NotTagged"/>
-  <suffix name="NTPSnippets">
+  <suffix name="Autofill" label=""/>
+  <suffix name="DomainReliability" label=""/>
+  <suffix name="GAIA" label=""/>
+  <suffix name="GCMDriver" label=""/>
+  <suffix name="GoogleURLTracker" label=""/>
+  <suffix name="ImageFetcherUntagged" label=""/>
+  <suffix name="Invalidation" label=""/>
+  <suffix name="LargeIconService" label=""/>
+  <suffix name="MachineIntelligence" label=""/>
+  <suffix name="NotTagged" label=""/>
+  <suffix name="NTPSnippets" label="">
     <obsolete>
       Deprecated March 2017
     </obsolete>
   </suffix>
-  <suffix name="NTPSnippetsSuggestions"/>
-  <suffix name="NTPSnippetsThumbnails"/>
-  <suffix name="Omnibox"/>
-  <suffix name="Policy"/>
-  <suffix name="ProfileDownloader"/>
-  <suffix name="Rappor"/>
-  <suffix name="SafeBrowsing"/>
-  <suffix name="SpellChecker"/>
-  <suffix name="Suggestions"/>
-  <suffix name="Sync"/>
-  <suffix name="Translate"/>
-  <suffix name="UMA"/>
-  <suffix name="UpdateClient"/>
-  <suffix name="Variations"/>
-  <suffix name="WebResourceService"/>
+  <suffix name="NTPSnippetsSuggestions" label=""/>
+  <suffix name="NTPSnippetsThumbnails" label=""/>
+  <suffix name="Omnibox" label=""/>
+  <suffix name="Policy" label=""/>
+  <suffix name="ProfileDownloader" label=""/>
+  <suffix name="Rappor" label=""/>
+  <suffix name="SafeBrowsing" label=""/>
+  <suffix name="SpellChecker" label=""/>
+  <suffix name="Suggestions" label=""/>
+  <suffix name="Sync" label=""/>
+  <suffix name="Translate" label=""/>
+  <suffix name="UMA" label=""/>
+  <suffix name="UpdateClient" label=""/>
+  <suffix name="Variations" label=""/>
+  <suffix name="WebResourceService" label=""/>
   <affected-histogram name="DataUse.MessageSize"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="DataUse.TrafficSource" separator=".">
-  <suffix name="System"/>
-  <suffix name="User"/>
+  <suffix name="System" label=""/>
+  <suffix name="User" label=""/>
   <affected-histogram name="DataUse.BackgroundToDataRecievedPerByte"/>
   <affected-histogram name="DataUse.BackgroundToFirstDownstream"/>
 </histogram_suffixes>
@@ -166924,9 +166924,9 @@
   <obsolete>
     Deprecated as of 12/2013. Default pinned apps trial is finished.
   </obsolete>
-  <suffix name="Alternate"/>
-  <suffix name="Control"/>
-  <suffix name="Existing"/>
+  <suffix name="Alternate" label=""/>
+  <suffix name="Control" label=""/>
+  <suffix name="Existing" label=""/>
   <affected-histogram name="Cros.ClickOnShelf"/>
 </histogram_suffixes>
 
@@ -167204,10 +167204,10 @@
   <obsolete>
     Deprecated 11/2018 in issue 894963.
   </obsolete>
-  <suffix name="BookmarksFootNote"/>
-  <suffix name="BookmarksNewBubble"/>
-  <suffix name="HistoryPage"/>
-  <suffix name="SavePasswordsNewBubble"/>
+  <suffix name="BookmarksFootNote" label=""/>
+  <suffix name="BookmarksNewBubble" label=""/>
+  <suffix name="HistoryPage" label=""/>
+  <suffix name="SavePasswordsNewBubble" label=""/>
   <affected-histogram name="DesktopIOSPromotion.DismissalReason"/>
   <affected-histogram name="DesktopIOSPromotion.SMSToSigninTime"/>
 </histogram_suffixes>
@@ -167642,8 +167642,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="DriveCommonTimings" separator=".">
-  <suffix name="FailTime"/>
-  <suffix name="SuccessTime"/>
+  <suffix name="FailTime" label=""/>
+  <suffix name="SuccessTime" label=""/>
   <affected-histogram name="DriveCommon.Lifecycle.MountTime"/>
   <affected-histogram name="DriveCommon.LocalSearch.OfflineSearchTime"/>
   <affected-histogram name="DriveCommon.LocalSearch.SharedSearchTime"/>
@@ -167653,8 +167653,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="DualCertVerifierTrial" separator="_">
-  <suffix name="TrialPrimary"/>
-  <suffix name="TrialSecondary"/>
+  <suffix name="TrialPrimary" label=""/>
+  <suffix name="TrialSecondary" label=""/>
   <affected-histogram name="Net.CertVerifier_First_Job_Latency"/>
   <affected-histogram name="Net.CertVerifier_Job_Latency"/>
 </histogram_suffixes>
@@ -167713,17 +167713,17 @@
 
 <histogram_suffixes name="EngagementScoreBuckets" separator="_">
   <owner>calamity@chromium.org</owner>
-  <suffix name="0"/>
-  <suffix name="10"/>
-  <suffix name="20"/>
-  <suffix name="30"/>
-  <suffix name="40"/>
-  <suffix name="50"/>
-  <suffix name="60"/>
-  <suffix name="70"/>
-  <suffix name="80"/>
-  <suffix name="90"/>
-  <suffix name="100"/>
+  <suffix name="0" label=""/>
+  <suffix name="10" label=""/>
+  <suffix name="20" label=""/>
+  <suffix name="30" label=""/>
+  <suffix name="40" label=""/>
+  <suffix name="50" label=""/>
+  <suffix name="60" label=""/>
+  <suffix name="70" label=""/>
+  <suffix name="80" label=""/>
+  <suffix name="90" label=""/>
+  <suffix name="100" label=""/>
   <affected-histogram name="SiteEngagementService.EngagementScoreBucket"/>
 </histogram_suffixes>
 
@@ -167823,37 +167823,37 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="EventLatencyOS" separator=".">
-  <suffix name="MOUSE_WHEEL"/>
-  <suffix name="TOUCH_MOVED"/>
-  <suffix name="TOUCH_PRESSED"/>
-  <suffix name="TOUCH_RELEASED"/>
+  <suffix name="MOUSE_WHEEL" label=""/>
+  <suffix name="TOUCH_MOVED" label=""/>
+  <suffix name="TOUCH_PRESSED" label=""/>
+  <suffix name="TOUCH_RELEASED" label=""/>
   <affected-histogram name="Event.Latency.OS"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="ExitFunnels" separator=".">
-  <suffix name="BackgroundOff"/>
-  <suffix name="BackgroundOn"/>
-  <suffix name="BrowserExit"/>
-  <suffix name="EndSession"/>
-  <suffix name="ES_CloseApp"/>
-  <suffix name="ES_Critical"/>
-  <suffix name="ES_Logoff"/>
-  <suffix name="ES_Other"/>
-  <suffix name="HungBrowserTerminated"/>
-  <suffix name="KillProcess"/>
-  <suffix name="LastWindowClose"/>
-  <suffix name="MessageWindowHung"/>
-  <suffix name="MessageWindowNotFound"/>
-  <suffix name="MessageWindowVanished"/>
-  <suffix name="ProcessSingletonIsShuttingDown"/>
-  <suffix name="RendezvousToHungBrowser"/>
-  <suffix name="SessionEnding"/>
-  <suffix name="TraybarEndSession"/>
-  <suffix name="TraybarExit"/>
-  <suffix name="WatcherEndSession"/>
-  <suffix name="WatcherLogoff"/>
-  <suffix name="WatcherQueryEndSession"/>
-  <suffix name="WM_ENDSESSION"/>
+  <suffix name="BackgroundOff" label=""/>
+  <suffix name="BackgroundOn" label=""/>
+  <suffix name="BrowserExit" label=""/>
+  <suffix name="EndSession" label=""/>
+  <suffix name="ES_CloseApp" label=""/>
+  <suffix name="ES_Critical" label=""/>
+  <suffix name="ES_Logoff" label=""/>
+  <suffix name="ES_Other" label=""/>
+  <suffix name="HungBrowserTerminated" label=""/>
+  <suffix name="KillProcess" label=""/>
+  <suffix name="LastWindowClose" label=""/>
+  <suffix name="MessageWindowHung" label=""/>
+  <suffix name="MessageWindowNotFound" label=""/>
+  <suffix name="MessageWindowVanished" label=""/>
+  <suffix name="ProcessSingletonIsShuttingDown" label=""/>
+  <suffix name="RendezvousToHungBrowser" label=""/>
+  <suffix name="SessionEnding" label=""/>
+  <suffix name="TraybarEndSession" label=""/>
+  <suffix name="TraybarExit" label=""/>
+  <suffix name="WatcherEndSession" label=""/>
+  <suffix name="WatcherLogoff" label=""/>
+  <suffix name="WatcherQueryEndSession" label=""/>
+  <suffix name="WM_ENDSESSION" label=""/>
   <affected-histogram name="Stability.ExitFunnel"/>
 </histogram_suffixes>
 
@@ -168027,8 +168027,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="FeedOrHostOlder" separator=".">
-  <suffix name="FeedIsOlder"/>
-  <suffix name="HostIsOlder"/>
+  <suffix name="FeedIsOlder" label=""/>
+  <suffix name="HostIsOlder" label=""/>
   <affected-histogram
       name="ContentSuggestions.Feed.Scheduler.ContentAgeDifference"/>
 </histogram_suffixes>
@@ -168221,8 +168221,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="FileOperations" separator=".">
-  <suffix name="DeleteFile.NonRecursive"/>
-  <suffix name="DeleteFile.Recursive"/>
+  <suffix name="DeleteFile.NonRecursive" label=""/>
+  <suffix name="DeleteFile.Recursive" label=""/>
   <affected-histogram name="Windows.FilesystemError"/>
   <affected-histogram name="Windows.PostOperationState"/>
 </histogram_suffixes>
@@ -168942,8 +168942,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ImportantFileWriterSuffix" separator=".">
-  <suffix name="BookmarkStorage"/>
-  <suffix name="FeedbackReport"/>
+  <suffix name="BookmarkStorage" label=""/>
+  <suffix name="FeedbackReport" label=""/>
   <affected-histogram name="ImportantFile.FileCreateError"/>
   <affected-histogram name="ImportantFile.FileDeleteError"/>
   <affected-histogram name="ImportantFile.FileOpenError"/>
@@ -169114,8 +169114,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="IOMode" separator=".">
-  <suffix name="Asynchronous"/>
-  <suffix name="Synchronous"/>
+  <suffix name="Asynchronous" label=""/>
+  <suffix name="Synchronous" label=""/>
   <affected-histogram name="Net.QuicSession.PacketWriteTime"/>
 </histogram_suffixes>
 
@@ -169127,10 +169127,10 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="IOSProductTourScreens" separator="">
-  <suffix name="Incognito"/>
-  <suffix name="Sync"/>
-  <suffix name="Unknown"/>
-  <suffix name="VoiceSearch"/>
+  <suffix name="Incognito" label=""/>
+  <suffix name="Sync" label=""/>
+  <suffix name="Unknown" label=""/>
+  <suffix name="VoiceSearch" label=""/>
   <affected-histogram name="ProductTour.IOSScreens"/>
 </histogram_suffixes>
 
@@ -169161,14 +169161,14 @@
   </suffix>
   <suffix name="IPH_ChromeHomePullToRefresh"
       label="In product help for Chrome Home shown after a pull-to-refresh."/>
-  <suffix name="IPH_ContextualSearch">
+  <suffix name="IPH_ContextualSearch" label="">
     <obsolete>
       Replaced with IPH_ContextualSearchWebSearch.
     </obsolete>
   </suffix>
   <suffix name="IPH_ContextualSearchOptIn"
       label="In product help for opting-in for contextual search."/>
-  <suffix name="IPH_ContextualSearchPanel">
+  <suffix name="IPH_ContextualSearchPanel" label="">
     <obsolete>
       Replaced with IPH_ContextualSearchPromotePanelOpen.
     </obsolete>
@@ -169177,7 +169177,7 @@
       label="In product help for opening the contextual search panel."/>
   <suffix name="IPH_ContextualSearchPromoteTap"
       label="In product help for tap trigger for contextual search."/>
-  <suffix name="IPH_ContextualSearchTap">
+  <suffix name="IPH_ContextualSearchTap" label="">
     <obsolete>
       Replaced with IPH_ContextualSearchPromoteTap.
     </obsolete>
@@ -169264,8 +169264,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="IPProtocolType" separator="_">
-  <suffix name="TCP"/>
-  <suffix name="UDP"/>
+  <suffix name="TCP" label=""/>
+  <suffix name="UDP" label=""/>
   <affected-histogram name="WebRTC.PeerConnection.CandidatePairType"/>
   <affected-histogram name="WebRTC.SystemMaxConsecutiveBytesDelayed"/>
   <affected-histogram name="WebRTC.SystemPercentPacketsDelayed"/>
@@ -169328,8 +169328,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="JSDialogs.UserGestureSinceLoad" separator=".">
-  <suffix name="NoUserGestureSinceLoad"/>
-  <suffix name="UserGestureSinceLoad"/>
+  <suffix name="NoUserGestureSinceLoad" label=""/>
+  <suffix name="UserGestureSinceLoad" label=""/>
   <affected-histogram name="JSDialogs.CharacterCount"/>
 </histogram_suffixes>
 
@@ -169392,22 +169392,22 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="LECredentialOps" separator=".">
-  <suffix name="Check"/>
-  <suffix name="Insert"/>
-  <suffix name="Remove"/>
-  <suffix name="Reset"/>
-  <suffix name="ResetTree"/>
-  <suffix name="Sync"/>
-  <suffix name="SyncOutcome"/>
+  <suffix name="Check" label=""/>
+  <suffix name="Insert" label=""/>
+  <suffix name="Remove" label=""/>
+  <suffix name="Reset" label=""/>
+  <suffix name="ResetTree" label=""/>
+  <suffix name="Sync" label=""/>
+  <suffix name="SyncOutcome" label=""/>
   <affected-histogram name="Cryptohome.LECredential"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="LECredentialOpsActions" separator=".">
-  <suffix name="Backend"/>
-  <suffix name="BackendGetLog"/>
-  <suffix name="BackendReplayLog"/>
-  <suffix name="LoadFromDisk"/>
-  <suffix name="SaveToDisk"/>
+  <suffix name="Backend" label=""/>
+  <suffix name="BackendGetLog" label=""/>
+  <suffix name="BackendReplayLog" label=""/>
+  <suffix name="LoadFromDisk" label=""/>
+  <suffix name="SaveToDisk" label=""/>
   <affected-histogram name="Cryptohome.LECredential.Check"/>
   <affected-histogram name="Cryptohome.LECredential.Insert"/>
   <affected-histogram name="Cryptohome.LECredential.Remove"/>
@@ -169771,11 +169771,11 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="LockScreenAppDataItemOperation" separator=".">
-  <suffix name="DeleteItem"/>
-  <suffix name="GetRegisteredItems"/>
-  <suffix name="ReadItem"/>
-  <suffix name="RegisterItem"/>
-  <suffix name="WriteItem"/>
+  <suffix name="DeleteItem" label=""/>
+  <suffix name="GetRegisteredItems" label=""/>
+  <suffix name="ReadItem" label=""/>
+  <suffix name="RegisterItem" label=""/>
+  <suffix name="WriteItem" label=""/>
   <affected-histogram
       name="Apps.LockScreen.DataItemStorage.FailedOperationDuration"/>
   <affected-histogram name="Apps.LockScreen.DataItemStorage.OperationDuration"/>
@@ -169850,9 +169850,9 @@
 
 <histogram_suffixes name="MachineLearningServiceRequests" separator="."
     ordering="prefix">
-  <suffix base="true" name="CreateGraphExecutorResult"/>
-  <suffix base="true" name="ExecuteResult"/>
-  <suffix base="true" name="LoadModelResult"/>
+  <suffix base="true" name="CreateGraphExecutorResult" label=""/>
+  <suffix base="true" name="ExecuteResult" label=""/>
+  <suffix base="true" name="LoadModelResult" label=""/>
   <affected-histogram name="MachineLearningService.CpuTimeMicrosec"/>
   <affected-histogram name="MachineLearningService.ElapsedTimeMicrosec"/>
   <affected-histogram name="MachineLearningService.PrivateMemoryDeltaKb">
@@ -169875,13 +169875,13 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ManifestProperties" separator=".">
-  <suffix name="display"/>
-  <suffix name="gcm_sender_id"/>
-  <suffix name="icons"/>
-  <suffix name="name"/>
-  <suffix name="orientation"/>
-  <suffix name="short_name"/>
-  <suffix name="start_url"/>
+  <suffix name="display" label=""/>
+  <suffix name="gcm_sender_id" label=""/>
+  <suffix name="icons" label=""/>
+  <suffix name="name" label=""/>
+  <suffix name="orientation" label=""/>
+  <suffix name="short_name" label=""/>
+  <suffix name="start_url" label=""/>
   <affected-histogram name="Manifest.HasProperty"/>
 </histogram_suffixes>
 
@@ -169996,10 +169996,10 @@
   <obsolete>
     Removed from code as of 07/2019.
   </obsolete>
-  <suffix name="FullscreenLandscape"/>
-  <suffix name="FullscreenPortrait"/>
-  <suffix name="InlineLandscape"/>
-  <suffix name="InlinePortrait"/>
+  <suffix name="FullscreenLandscape" label=""/>
+  <suffix name="FullscreenPortrait" label=""/>
+  <suffix name="InlineLandscape" label=""/>
+  <suffix name="InlinePortrait" label=""/>
   <affected-histogram name="Media.Timeline.Width"/>
 </histogram_suffixes>
 
@@ -170104,12 +170104,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="MediaTimelineWidths" separator=".">
-  <suffix name="32_47"/>
-  <suffix name="48_79"/>
-  <suffix name="80_127"/>
-  <suffix name="128_255"/>
-  <suffix name="256_511"/>
-  <suffix name="512_inf"/>
+  <suffix name="32_47" label=""/>
+  <suffix name="48_79" label=""/>
+  <suffix name="80_127" label=""/>
+  <suffix name="128_255" label=""/>
+  <suffix name="256_511" label=""/>
+  <suffix name="512_inf" label=""/>
   <affected-histogram name="Media.Timeline.DragGestureDuration"/>
   <affected-histogram name="Media.Timeline.DragPercent"/>
   <affected-histogram name="Media.Timeline.DragSumAbsTimeDelta"/>
@@ -170264,10 +170264,10 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="MediaWMPIMemoryUsage" separator=".">
-  <suffix name="Audio"/>
-  <suffix name="DataSource"/>
-  <suffix name="Demuxer"/>
-  <suffix name="Video"/>
+  <suffix name="Audio" label=""/>
+  <suffix name="DataSource" label=""/>
+  <suffix name="Demuxer" label=""/>
+  <suffix name="Video" label=""/>
   <affected-histogram name="Media.WebMediaPlayerImpl.Memory"/>
 </histogram_suffixes>
 
@@ -170298,12 +170298,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="MemoryStateTransition" separator=".">
-  <suffix name="NormalToSuspended"/>
-  <suffix name="NormalToThrottled"/>
-  <suffix name="SuspendedToNormal"/>
-  <suffix name="SuspendedToThrottled"/>
-  <suffix name="ThrottledToNormal"/>
-  <suffix name="ThrottledToSuspended"/>
+  <suffix name="NormalToSuspended" label=""/>
+  <suffix name="NormalToThrottled" label=""/>
+  <suffix name="SuspendedToNormal" label=""/>
+  <suffix name="SuspendedToThrottled" label=""/>
+  <suffix name="ThrottledToNormal" label=""/>
+  <suffix name="ThrottledToSuspended" label=""/>
   <affected-histogram name="Memory.Coordinator.StateDuration"/>
   <affected-histogram name="Memory.Coordinator.TotalPrivate"/>
 </histogram_suffixes>
@@ -170322,8 +170322,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="MixedContentDownloadDownloadSecurity" separator=".">
-  <suffix name="DownloadInsecure"/>
-  <suffix name="DownloadSecure"/>
+  <suffix name="DownloadInsecure" label=""/>
+  <suffix name="DownloadSecure" label=""/>
   <affected-histogram
       name="Download.InsecureBlocking.Extensions.InitiatorInsecure"/>
   <affected-histogram
@@ -170333,23 +170333,23 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="MixedContentDownloadInitiatorSecurity" separator=".">
-  <suffix base="true" name="InitiatorInsecure"/>
-  <suffix base="true" name="InitiatorSecure"/>
-  <suffix base="true" name="InitiatorUnknown"/>
+  <suffix base="true" name="InitiatorInsecure" label=""/>
+  <suffix base="true" name="InitiatorSecure" label=""/>
+  <suffix base="true" name="InitiatorUnknown" label=""/>
   <affected-histogram name="Download.InsecureBlocking.Extensions"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="MixedContentDownloadMimeSecurity" separator=".">
-  <suffix name="Insecure"/>
-  <suffix name="Other"/>
-  <suffix name="Secure"/>
+  <suffix name="Insecure" label=""/>
+  <suffix name="Other" label=""/>
+  <suffix name="Secure" label=""/>
   <affected-histogram name="Download.InsecureBlocking.Verification.Item"/>
   <affected-histogram name="Download.InsecureBlocking.Verification.Manager"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="MixedContentDownloadMimeSource" separator=".">
-  <suffix base="true" name="Item"/>
-  <suffix base="true" name="Manager"/>
+  <suffix base="true" name="Item" label=""/>
+  <suffix base="true" name="Manager" label=""/>
   <affected-histogram name="Download.InsecureBlocking.Verification"/>
 </histogram_suffixes>
 
@@ -170369,27 +170369,27 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="Mobile.Messages.Password.Type" separator=".">
-  <suffix name="InfobarTypePasswordSave"/>
-  <suffix name="InfobarTypePasswordUpdate"/>
+  <suffix name="InfobarTypePasswordSave" label=""/>
+  <suffix name="InfobarTypePasswordUpdate" label=""/>
   <affected-histogram name="Mobile.Messages.Passwords.Modal.Dismiss"/>
   <affected-histogram name="Mobile.Messages.Passwords.Modal.Event"/>
   <affected-histogram name="Mobile.Messages.Passwords.Modal.Present"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="Mobile.Messages.Type" separator=".">
-  <suffix name="InfobarTypeConfirm"/>
-  <suffix name="InfobarTypePasswordSave"/>
-  <suffix name="InfobarTypePasswordUpdate"/>
+  <suffix name="InfobarTypeConfirm" label=""/>
+  <suffix name="InfobarTypePasswordSave" label=""/>
+  <suffix name="InfobarTypePasswordUpdate" label=""/>
   <affected-histogram name="Mobile.Messages.Banner.Dismiss"/>
   <affected-histogram name="Mobile.Messages.Banner.Event"/>
   <affected-histogram name="Mobile.Messages.Modal.Event"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="MobileDownloadBytesDownloadedTypes" separator=".">
-  <suffix name="ChromeNetworkStack.Failure"/>
-  <suffix name="ChromeNetworkStack.Success"/>
-  <suffix name="DownloadManager.Failure"/>
-  <suffix name="DownloadManager.Success"/>
+  <suffix name="ChromeNetworkStack.Failure" label=""/>
+  <suffix name="ChromeNetworkStack.Success" label=""/>
+  <suffix name="DownloadManager.Failure" label=""/>
+  <suffix name="DownloadManager.Success" label=""/>
   <affected-histogram name="MobileDownload.BytesDownloaded"/>
 </histogram_suffixes>
 
@@ -170401,25 +170401,25 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="MobileDownloadDownloadTimeTypes" separator=".">
-  <suffix name="ChromeNetworkStack.Cancel"/>
-  <suffix name="ChromeNetworkStack.Failure"/>
-  <suffix name="ChromeNetworkStack.Success"/>
-  <suffix name="DownloadManager.Failure"/>
-  <suffix name="DownloadManager.Success"/>
+  <suffix name="ChromeNetworkStack.Cancel" label=""/>
+  <suffix name="ChromeNetworkStack.Failure" label=""/>
+  <suffix name="ChromeNetworkStack.Success" label=""/>
+  <suffix name="DownloadManager.Failure" label=""/>
+  <suffix name="DownloadManager.Success" label=""/>
   <affected-histogram name="MobileDownload.DownloadTime"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="MobileDownloadInterruptionsCountTypes" separator=".">
-  <suffix name="ChromeNetworkStack.Cancel"/>
-  <suffix name="ChromeNetworkStack.Failure"/>
-  <suffix name="ChromeNetworkStack.Success"/>
+  <suffix name="ChromeNetworkStack.Cancel" label=""/>
+  <suffix name="ChromeNetworkStack.Failure" label=""/>
+  <suffix name="ChromeNetworkStack.Success" label=""/>
   <affected-histogram name="MobileDownload.InterruptionsCount"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="MobileDownloadResumptionsCountTypes" separator=".">
-  <suffix name="Automatic"/>
-  <suffix name="Manual"/>
-  <suffix name="Total"/>
+  <suffix name="Automatic" label=""/>
+  <suffix name="Manual" label=""/>
+  <suffix name="Total" label=""/>
   <affected-histogram name="MobileDownload.ResumptionsCount"/>
 </histogram_suffixes>
 
@@ -170474,16 +170474,16 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NativeFileSystemAPIChooserType" separator=".">
-  <suffix name="OpenDirectory"/>
-  <suffix name="OpenFile"/>
-  <suffix name="OpenMultipleFiles"/>
-  <suffix name="SaveFile"/>
+  <suffix name="OpenDirectory" label=""/>
+  <suffix name="OpenFile" label=""/>
+  <suffix name="OpenMultipleFiles" label=""/>
+  <suffix name="SaveFile" label=""/>
   <affected-histogram name="NativeFileSystemAPI.FileChooserResult"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="NativeFileSystemAPIHandleType" separator=".">
-  <suffix name="Directory"/>
-  <suffix name="File"/>
+  <suffix name="Directory" label=""/>
+  <suffix name="File" label=""/>
   <affected-histogram name="NativeFileSystemAPI.WritePermissionRequestOutcome"/>
 </histogram_suffixes>
 
@@ -170499,10 +170499,10 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NatType" separator=".">
-  <suffix name="NoNAT"/>
-  <suffix name="NonSymNAT"/>
-  <suffix name="SymNAT"/>
-  <suffix name="UnknownNAT"/>
+  <suffix name="NoNAT" label=""/>
+  <suffix name="NonSymNAT" label=""/>
+  <suffix name="SymNAT" label=""/>
+  <suffix name="UnknownNAT" label=""/>
   <affected-histogram name="WebRTC.Stun.BatchSuccessPercent"/>
   <affected-histogram name="WebRTC.Stun.ResponseLatency"/>
   <affected-histogram name="WebRTC.Stun.SuccessPercent"/>
@@ -171986,9 +171986,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NetHttpContentLengthType" separator=".">
-  <suffix name="Http"/>
-  <suffix name="Https"/>
-  <suffix name="Video"/>
+  <suffix name="Http" label=""/>
+  <suffix name="Https" label=""/>
+  <suffix name="Video" label=""/>
   <affected-histogram name="Net.HttpContentLength"/>
   <affected-histogram name="Net.HttpContentLengthV2"/>
   <affected-histogram name="Net.HttpOriginalContentLength"/>
@@ -172191,7 +172191,7 @@
 
 <histogram_suffixes name="NewTabPageProviders" separator=".">
   <suffix name="client" label="Suggestions coming from the client."/>
-  <suffix name="client0">
+  <suffix name="client0" label="">
     <obsolete>
       Hasn't been used for a while, as of 2016-07.
     </obsolete>
@@ -172212,27 +172212,27 @@
     </obsolete>
   </suffix>
   <suffix name="server" label="Suggestions coming from the server."/>
-  <suffix name="server0">
+  <suffix name="server0" label="">
     <obsolete>
       Hasn't been used for a while, as of 2016-07.
     </obsolete>
   </suffix>
-  <suffix name="server8">
+  <suffix name="server8" label="">
     <obsolete>
       Not used anymore as of 2016-07.
     </obsolete>
   </suffix>
-  <suffix name="server9">
+  <suffix name="server9" label="">
     <obsolete>
       Has never been used.
     </obsolete>
   </suffix>
-  <suffix name="server10">
+  <suffix name="server10" label="">
     <obsolete>
       Has never been used.
     </obsolete>
   </suffix>
-  <suffix name="server11">
+  <suffix name="server11" label="">
     <obsolete>
       Has never been used.
     </obsolete>
@@ -172310,10 +172310,10 @@
   <obsolete>
     Deprecated in June 2019.
   </obsolete>
-  <suffix name="ActionIcon"/>
-  <suffix name="Badge"/>
-  <suffix name="Icon"/>
-  <suffix name="Image"/>
+  <suffix name="ActionIcon" label=""/>
+  <suffix name="Badge" label=""/>
+  <suffix name="Icon" label=""/>
+  <suffix name="Image" label=""/>
   <affected-histogram name="Notifications.LoadFailTime"/>
   <affected-histogram name="Notifications.LoadFileSize"/>
   <affected-histogram name="Notifications.LoadFinishTime"/>
@@ -172321,9 +172321,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NotificationSchedulerClientType" separator=".">
-  <suffix name="__Test__"/>
-  <suffix name="Unknown"/>
-  <suffix name="WebUI"/>
+  <suffix name="__Test__" label=""/>
+  <suffix name="Unknown" label=""/>
+  <suffix name="WebUI" label=""/>
   <affected-histogram name="Notifications.Scheduler.IhnrActionButtonEvent"/>
   <affected-histogram name="Notifications.Scheduler.Impression.Count"/>
   <affected-histogram
@@ -172876,43 +172876,43 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="OmniboxProviderTime" separator=".">
-  <suffix name="Bookmark"/>
-  <suffix name="Builtin"/>
-  <suffix name="Contact"/>
-  <suffix name="ExtensionApp"/>
-  <suffix name="HistoryContents"/>
-  <suffix name="HistoryQuick"/>
-  <suffix name="HistoryURL"/>
-  <suffix name="Keyword"/>
-  <suffix name="Search"/>
-  <suffix name="Shortcuts"/>
-  <suffix name="ZeroSuggest"/>
+  <suffix name="Bookmark" label=""/>
+  <suffix name="Builtin" label=""/>
+  <suffix name="Contact" label=""/>
+  <suffix name="ExtensionApp" label=""/>
+  <suffix name="HistoryContents" label=""/>
+  <suffix name="HistoryQuick" label=""/>
+  <suffix name="HistoryURL" label=""/>
+  <suffix name="Keyword" label=""/>
+  <suffix name="Search" label=""/>
+  <suffix name="Shortcuts" label=""/>
+  <suffix name="ZeroSuggest" label=""/>
   <affected-histogram name="Omnibox.ProviderTime"/>
   <affected-histogram name="Omnibox.ProviderTime2"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="OobeScreenName" separator=".">
-  <suffix name="App-downloading"/>
-  <suffix name="Arc_tos"/>
-  <suffix name="Assistant-optin-flow"/>
-  <suffix name="Auto-enrollment-check"/>
-  <suffix name="Demo-preferences"/>
-  <suffix name="Discover"/>
-  <suffix name="Enroll"/>
-  <suffix name="Eula"/>
-  <suffix name="Fingerprint-setup"/>
-  <suffix name="Hid-detection"/>
-  <suffix name="Image"/>
-  <suffix name="Marketing-opt-in"/>
-  <suffix name="Multidevice-setup"/>
-  <suffix name="Network"/>
-  <suffix name="Network-selection"/>
-  <suffix name="Recommend-apps"/>
-  <suffix name="Reset"/>
-  <suffix name="Sync-consent"/>
-  <suffix name="Tos"/>
-  <suffix name="Update"/>
-  <suffix name="Wrong-hwid"/>
+  <suffix name="App-downloading" label=""/>
+  <suffix name="Arc_tos" label=""/>
+  <suffix name="Assistant-optin-flow" label=""/>
+  <suffix name="Auto-enrollment-check" label=""/>
+  <suffix name="Demo-preferences" label=""/>
+  <suffix name="Discover" label=""/>
+  <suffix name="Enroll" label=""/>
+  <suffix name="Eula" label=""/>
+  <suffix name="Fingerprint-setup" label=""/>
+  <suffix name="Hid-detection" label=""/>
+  <suffix name="Image" label=""/>
+  <suffix name="Marketing-opt-in" label=""/>
+  <suffix name="Multidevice-setup" label=""/>
+  <suffix name="Network" label=""/>
+  <suffix name="Network-selection" label=""/>
+  <suffix name="Recommend-apps" label=""/>
+  <suffix name="Reset" label=""/>
+  <suffix name="Sync-consent" label=""/>
+  <suffix name="Tos" label=""/>
+  <suffix name="Update" label=""/>
+  <suffix name="Wrong-hwid" label=""/>
   <affected-histogram name="OOBE.StepCompletionTime"/>
 </histogram_suffixes>
 
@@ -172944,11 +172944,11 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="OtherActivityProcesses" separator=".">
-  <suffix name="gpu-process"/>
-  <suffix name="ppapi"/>
-  <suffix name="renderer"/>
-  <suffix name="setup"/>
-  <suffix name="utility"/>
+  <suffix name="gpu-process" label=""/>
+  <suffix name="ppapi" label=""/>
+  <suffix name="renderer" label=""/>
+  <suffix name="setup" label=""/>
+  <suffix name="utility" label=""/>
   <affected-histogram name="UMA.Histograms.Activity"/>
 </histogram_suffixes>
 
@@ -173082,11 +173082,11 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="PageLoadEventConditions" separator=".">
-  <suffix name="AfterCommit.BeforePaint"/>
-  <suffix base="true" name="AfterPaint.Before1sDelayedInteraction"/>
-  <suffix base="true" name="AfterPaint.BeforeInteraction"/>
-  <suffix name="BeforeCommit"/>
-  <suffix name="DuringParse"/>
+  <suffix name="AfterCommit.BeforePaint" label=""/>
+  <suffix base="true" name="AfterPaint.Before1sDelayedInteraction" label=""/>
+  <suffix base="true" name="AfterPaint.BeforeInteraction" label=""/>
+  <suffix name="BeforeCommit" label=""/>
+  <suffix name="DuringParse" label=""/>
   <affected-histogram name="PageLoad.AbortTiming.Background"/>
   <affected-histogram name="PageLoad.AbortTiming.ClientRedirect"/>
   <affected-histogram name="PageLoad.AbortTiming.Close"/>
@@ -173990,7 +173990,7 @@
              process"/>
   <suffix name="UserGesture"
       label="(experimental) Page load that has a user gesture"/>
-  <suffix name="UserInputEvent">
+  <suffix name="UserInputEvent" label="">
     <obsolete>
       Deprecated in favor of UserGesture.
     </obsolete>
@@ -174113,8 +174113,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="PasswordCustomPassphrase" separator=".">
-  <suffix name="WithCustomPassphrase"/>
-  <suffix name="WithoutCustomPassphrase"/>
+  <suffix name="WithCustomPassphrase" label=""/>
+  <suffix name="WithoutCustomPassphrase" label=""/>
   <affected-histogram name="PasswordManager.AccountsPerSite"/>
   <affected-histogram name="PasswordManager.AccountsPerSite.AutoGenerated"/>
   <affected-histogram name="PasswordManager.AccountsPerSite.UserCreated"/>
@@ -174133,9 +174133,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="PasswordGenerated" separator=".">
-  <suffix base="true" name="AutoGenerated"/>
-  <suffix base="true" name="Overall"/>
-  <suffix base="true" name="UserCreated"/>
+  <suffix base="true" name="AutoGenerated" label=""/>
+  <suffix base="true" name="Overall" label=""/>
+  <suffix base="true" name="UserCreated" label=""/>
   <affected-histogram name="PasswordManager.AccountsPerSite"/>
   <affected-histogram name="PasswordManager.TimesPasswordUsed"/>
   <affected-histogram name="PasswordManager.TotalAccounts"/>
@@ -174143,8 +174143,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="PasswordGenerationType" separator=".">
-  <suffix name="Automatic"/>
-  <suffix name="Manual"/>
+  <suffix name="Automatic" label=""/>
+  <suffix name="Manual" label=""/>
   <affected-histogram name="KeyboardAccessory.GenerationDialogChoice"/>
 </histogram_suffixes>
 
@@ -174407,15 +174407,15 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="PerformanceMonitor" separator=".">
-  <suffix name="BrowserProcess"/>
-  <suffix name="GPUProcess"/>
-  <suffix name="PluginProcess"/>
-  <suffix name="PPAPIFlashProcess"/>
-  <suffix name="PPAPIProcess"/>
-  <suffix name="RendererExtensionEventProcess"/>
-  <suffix name="RendererExtensionPersistentProcess"/>
-  <suffix name="RendererProcess"/>
-  <suffix name="WorkerProcess"/>
+  <suffix name="BrowserProcess" label=""/>
+  <suffix name="GPUProcess" label=""/>
+  <suffix name="PluginProcess" label=""/>
+  <suffix name="PPAPIFlashProcess" label=""/>
+  <suffix name="PPAPIProcess" label=""/>
+  <suffix name="RendererExtensionEventProcess" label=""/>
+  <suffix name="RendererExtensionPersistentProcess" label=""/>
+  <suffix name="RendererProcess" label=""/>
+  <suffix name="WorkerProcess" label=""/>
   <affected-histogram name="PerformanceMonitor.AverageCPU"/>
   <affected-histogram name="PerformanceMonitor.AverageDisk"/>
   <affected-histogram name="PerformanceMonitor.EnergyImpact"/>
@@ -175246,8 +175246,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ProviderPermissionType" separator=".">
-  <suffix name="READ_HISTORY_BOOKMARKS"/>
-  <suffix name="WRITE_HISTORY_BOOKMARKS"/>
+  <suffix name="READ_HISTORY_BOOKMARKS" label=""/>
+  <suffix name="WRITE_HISTORY_BOOKMARKS" label=""/>
   <affected-histogram name="Android.ChromeBrowserProvider.CallerHasPermission"/>
   <affected-histogram name="Android.ChromeBrowserProvider.SignaturePassed"/>
 </histogram_suffixes>
@@ -175422,7 +175422,7 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ReadErrorSourceNetwork" separator=".">
-  <suffix name="AnyNetwork"/>
+  <suffix name="AnyNetwork" label=""/>
   <suffix name="CurrentNetwork"
       label="This metric is for current network only."/>
   <suffix name="OtherNetworks"
@@ -175432,9 +175432,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="RecurrenceRankerModel" separator=".">
-  <suffix name="QueryBasedMixedTypes"/>
-  <suffix name="QueryBasedMixedTypesGroup"/>
-  <suffix name="ZeroStateMixedTypes"/>
+  <suffix name="QueryBasedMixedTypes" label=""/>
+  <suffix name="QueryBasedMixedTypesGroup" label=""/>
+  <suffix name="ZeroStateMixedTypes" label=""/>
   <affected-histogram name="RecurrenceRanker.InitializationStatus"/>
   <affected-histogram name="RecurrenceRanker.SerializationStatus"/>
   <affected-histogram name="RecurrenceRanker.Usage"/>
@@ -175448,7 +175448,7 @@
       label="Malware interstitial referrer attribution."/>
   <suffix name="NativeFileSystemWriteAttribution"
       label="Native File System Write attribution."/>
-  <suffix name="PasswordEventAttribution"/>
+  <suffix name="PasswordEventAttribution" label=""/>
   <suffix name="PhishingInterstitialAttribution"
       label="Phishing interstitial referrer attribution."/>
   <suffix name="PPAPIDownloadAttribution"
@@ -175796,8 +175796,8 @@
 
 <histogram_suffixes name="RendererScheduler.ProcessVisibilityStateSplit"
     separator=".">
-  <suffix name="Background"/>
-  <suffix name="Foreground"/>
+  <suffix name="Background" label=""/>
+  <suffix name="Foreground" label=""/>
   <affected-histogram name="RendererScheduler.TaskCPUDurationPerThreadType"/>
   <affected-histogram name="RendererScheduler.TaskCPUDurationPerThreadType2"/>
   <affected-histogram name="RendererScheduler.TaskDurationPerTaskType"/>
@@ -175807,20 +175807,20 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="RendererScheduler.QueueType" separator=".">
-  <suffix name="Compositor"/>
-  <suffix name="Input"/>
-  <suffix name="Loading"/>
-  <suffix name="Other"/>
+  <suffix name="Compositor" label=""/>
+  <suffix name="Input" label=""/>
+  <suffix name="Loading" label=""/>
+  <suffix name="Other" label=""/>
   <affected-histogram name="RendererScheduler.QueueingDurationPerQueueType"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="RendererScheduler.TaskCountPerTaskLength"
     separator=".">
-  <suffix name="LongerThan1s"/>
-  <suffix name="LongerThan16ms"/>
-  <suffix name="LongerThan50ms"/>
-  <suffix name="LongerThan100ms"/>
-  <suffix name="LongerThan150ms"/>
+  <suffix name="LongerThan1s" label=""/>
+  <suffix name="LongerThan16ms" label=""/>
+  <suffix name="LongerThan50ms" label=""/>
+  <suffix name="LongerThan100ms" label=""/>
+  <suffix name="LongerThan150ms" label=""/>
   <affected-histogram name="RendererScheduler.TaskCountPerFrameType"/>
   <affected-histogram
       name="RendererScheduler.TaskCountPerFrameType.HasSafePoint"/>
@@ -175829,8 +175829,8 @@
 
 <histogram_suffixes
     name="RendererScheduler.TaskDurationPerFrameOriginTypeSplit" separator=".">
-  <suffix name="DedicatedWorker"/>
-  <suffix name="DedicatedWorker.Background"/>
+  <suffix name="DedicatedWorker" label=""/>
+  <suffix name="DedicatedWorker.Background" label=""/>
   <affected-histogram name="RendererScheduler.TaskDurationPerFrameOriginType"/>
 </histogram_suffixes>
 
@@ -175902,9 +175902,9 @@
 
 <histogram_suffixes name="RendererScheduler.TaskDurationPerTaskTypeSplit"
     separator=".">
-  <suffix name="UseCaseInputHandling"/>
-  <suffix name="UseCaseLoading"/>
-  <suffix name="UseCaseNone"/>
+  <suffix name="UseCaseInputHandling" label=""/>
+  <suffix name="UseCaseLoading" label=""/>
+  <suffix name="UseCaseNone" label=""/>
   <affected-histogram name="RendererScheduler.TaskDurationPerTaskType2"/>
 </histogram_suffixes>
 
@@ -176165,20 +176165,20 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ResourceType" separator=".">
-  <suffix name="CSSStyleSheet"/>
-  <suffix name="Font"/>
-  <suffix name="Image"/>
-  <suffix name="ImportResource"/>
-  <suffix name="LinkPrefetch"/>
-  <suffix name="LinkSubresource"/>
-  <suffix name="MainResource"/>
-  <suffix name="Manifest"/>
-  <suffix name="Media"/>
-  <suffix name="Raw"/>
-  <suffix name="Script"/>
-  <suffix name="SVGDocument"/>
-  <suffix name="TextTrack"/>
-  <suffix name="XSLStyleSheet"/>
+  <suffix name="CSSStyleSheet" label=""/>
+  <suffix name="Font" label=""/>
+  <suffix name="Image" label=""/>
+  <suffix name="ImportResource" label=""/>
+  <suffix name="LinkPrefetch" label=""/>
+  <suffix name="LinkSubresource" label=""/>
+  <suffix name="MainResource" label=""/>
+  <suffix name="Manifest" label=""/>
+  <suffix name="Media" label=""/>
+  <suffix name="Raw" label=""/>
+  <suffix name="Script" label=""/>
+  <suffix name="SVGDocument" label=""/>
+  <suffix name="TextTrack" label=""/>
+  <suffix name="XSLStyleSheet" label=""/>
   <affected-histogram name="Blink.MemoryCache.RevalidationPolicy"/>
   <affected-histogram name="Blink.MemoryCache.RevalidationPolicy.Dead"/>
   <affected-histogram name="Blink.MemoryCache.RevalidationPolicy.Preload"/>
@@ -176207,20 +176207,20 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SafeBrowsing.V4Store.Metrics" separator=".">
-  <suffix name="CertCsdDownloadWhitelist"/>
-  <suffix name="ChromeExtMalware"/>
-  <suffix name="ChromeUrlClientIncident"/>
-  <suffix name="IpMalware"/>
-  <suffix name="UrlBilling"/>
-  <suffix name="UrlCsdDownloadWhitelist"/>
-  <suffix name="UrlCsdWhitelist"/>
-  <suffix name="UrlHighConfidenceAllowlist"/>
-  <suffix name="UrlMalBin"/>
-  <suffix name="UrlMalware"/>
-  <suffix name="UrlSoceng"/>
-  <suffix name="UrlSubresourceFilter"/>
-  <suffix name="UrlSuspiciousSite"/>
-  <suffix name="UrlUws"/>
+  <suffix name="CertCsdDownloadWhitelist" label=""/>
+  <suffix name="ChromeExtMalware" label=""/>
+  <suffix name="ChromeUrlClientIncident" label=""/>
+  <suffix name="IpMalware" label=""/>
+  <suffix name="UrlBilling" label=""/>
+  <suffix name="UrlCsdDownloadWhitelist" label=""/>
+  <suffix name="UrlCsdWhitelist" label=""/>
+  <suffix name="UrlHighConfidenceAllowlist" label=""/>
+  <suffix name="UrlMalBin" label=""/>
+  <suffix name="UrlMalware" label=""/>
+  <suffix name="UrlSoceng" label=""/>
+  <suffix name="UrlSubresourceFilter" label=""/>
+  <suffix name="UrlSuspiciousSite" label=""/>
+  <suffix name="UrlUws" label=""/>
   <affected-histogram name="SafeBrowsing.V4Database.Size"/>
   <affected-histogram
       name="SafeBrowsing.V4ProcessFullUpdate.ApplyUpdate.Result"/>
@@ -176257,26 +176257,26 @@
   <obsolete>
     Removed in M73. See https://crbug.com/916192
   </obsolete>
-  <suffix name="Bloom"/>
-  <suffix name="BloomPrefixSet"/>
-  <suffix name="CsdWhitelist"/>
-  <suffix name="Download"/>
-  <suffix name="DownloadWhitelist"/>
-  <suffix name="ExtensionBlacklist"/>
-  <suffix name="InclusionWhitelist"/>
-  <suffix name="IPBlacklist"/>
-  <suffix name="ModuleWhitelist"/>
-  <suffix name="ResourceBlacklist"/>
-  <suffix name="Side-EffectFreeWhitelist"/>
-  <suffix name="UwSList"/>
-  <suffix name="UwSListPrefixSet"/>
+  <suffix name="Bloom" label=""/>
+  <suffix name="BloomPrefixSet" label=""/>
+  <suffix name="CsdWhitelist" label=""/>
+  <suffix name="Download" label=""/>
+  <suffix name="DownloadWhitelist" label=""/>
+  <suffix name="ExtensionBlacklist" label=""/>
+  <suffix name="InclusionWhitelist" label=""/>
+  <suffix name="IPBlacklist" label=""/>
+  <suffix name="ModuleWhitelist" label=""/>
+  <suffix name="ResourceBlacklist" label=""/>
+  <suffix name="Side-EffectFreeWhitelist" label=""/>
+  <suffix name="UwSList" label=""/>
+  <suffix name="UwSListPrefixSet" label=""/>
   <affected-histogram name="SafeBrowsing.V4UnusedStoreFileExists.V3"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="SafeBrowsing.V4UnusedStore.Metrics" separator=".">
-  <suffix name="AnyIpMalware"/>
-  <suffix name="ChromeFilenameClientIncident"/>
-  <suffix name="UrlSuspiciousSiteId"/>
+  <suffix name="AnyIpMalware" label=""/>
+  <suffix name="ChromeFilenameClientIncident" label=""/>
+  <suffix name="UrlSuspiciousSiteId" label=""/>
   <affected-histogram name="SafeBrowsing.V4UnusedStoreFileExists"/>
 </histogram_suffixes>
 
@@ -176473,8 +176473,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SchedulerTotalDurationHistograms" separator=".">
-  <suffix name="Negative"/>
-  <suffix name="Positive"/>
+  <suffix name="Negative" label=""/>
+  <suffix name="Positive" label=""/>
   <affected-histogram
       name="Scheduler.Experimental.Renderer.TotalTime.Wall.MainThread"/>
 </histogram_suffixes>
@@ -176529,17 +176529,17 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SearchEnginePromoDeviceType" separator=".">
-  <suffix name="ExistingDevice"/>
-  <suffix name="NewDevice"/>
+  <suffix name="ExistingDevice" label=""/>
+  <suffix name="NewDevice" label=""/>
   <affected-histogram name="Search.SearchEngineListedInPromoDialog"/>
   <affected-histogram name="Search.SearchEngineSelectionInPromoDialog"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="SearchEnginePromoOrdering" separator="."
     ordering="prefix,2">
-  <suffix name="First"/>
-  <suffix name="Second"/>
-  <suffix name="Third"/>
+  <suffix name="First" label=""/>
+  <suffix name="Second" label=""/>
+  <suffix name="Third" label=""/>
   <affected-histogram
       name="Search.SearchEngineListedInPromoDialog.ExistingDevice"/>
   <affected-histogram name="Search.SearchEngineListedInPromoDialog.NewDevice"/>
@@ -176547,7 +176547,7 @@
 
 <histogram_suffixes name="SecurityInterstitialLookalikeType" separator="."
     ordering="prefix">
-  <suffix name="lookalike"/>
+  <suffix name="lookalike" label=""/>
   <affected-histogram name="interstitial.decision"/>
   <affected-histogram name="interstitial.decision.repeat_visit"/>
   <affected-histogram name="interstitial.interaction"/>
@@ -176555,19 +176555,19 @@
 
 <histogram_suffixes name="SecurityInterstitialSBType" separator="."
     ordering="prefix">
-  <suffix name="billing"/>
-  <suffix name="billing_subresource"/>
-  <suffix name="harmful"/>
-  <suffix name="harmful_subresource"/>
-  <suffix name="malware"/>
-  <suffix name="malware_subresource"/>
-  <suffix name="origin_policy"/>
-  <suffix name="phishing"/>
-  <suffix name="phishing_subresource"/>
-  <suffix name="social_engineering_ads"/>
-  <suffix name="social_engineering_ads_subresource"/>
-  <suffix name="social_engineering_landing"/>
-  <suffix name="social_engineering_landing_subresource"/>
+  <suffix name="billing" label=""/>
+  <suffix name="billing_subresource" label=""/>
+  <suffix name="harmful" label=""/>
+  <suffix name="harmful_subresource" label=""/>
+  <suffix name="malware" label=""/>
+  <suffix name="malware_subresource" label=""/>
+  <suffix name="origin_policy" label=""/>
+  <suffix name="phishing" label=""/>
+  <suffix name="phishing_subresource" label=""/>
+  <suffix name="social_engineering_ads" label=""/>
+  <suffix name="social_engineering_ads_subresource" label=""/>
+  <suffix name="social_engineering_landing" label=""/>
+  <suffix name="social_engineering_landing_subresource" label=""/>
   <affected-histogram name="interstitial.decision"/>
   <affected-histogram name="interstitial.decision.repeat_visit"/>
   <affected-histogram name="interstitial.interaction"/>
@@ -176637,9 +176637,9 @@
 
 <histogram_suffixes name="SecurityInterstitialSSLType" separator="."
     ordering="prefix">
-  <suffix name="bad_clock"/>
-  <suffix name="ssl_nonoverridable"/>
-  <suffix name="ssl_overridable"/>
+  <suffix name="bad_clock" label=""/>
+  <suffix name="ssl_nonoverridable" label=""/>
+  <suffix name="ssl_overridable" label=""/>
   <affected-histogram name="interstitial.decision"/>
   <affected-histogram name="interstitial.decision.repeat_visit"/>
   <affected-histogram name="interstitial.interaction"/>
@@ -176724,10 +176724,10 @@
 
 <histogram_suffixes name="ServiceWorker.EventType" separator="_">
   <suffix name="ACTIVATE" label="ACTIVATE"/>
-  <suffix name="BACKGROUND_FETCH_ABORT"/>
-  <suffix name="BACKGROUND_FETCH_CLICK"/>
-  <suffix name="BACKGROUND_FETCH_FAIL"/>
-  <suffix name="BACKGROUND_FETCH_SUCCESS"/>
+  <suffix name="BACKGROUND_FETCH_ABORT" label=""/>
+  <suffix name="BACKGROUND_FETCH_CLICK" label=""/>
+  <suffix name="BACKGROUND_FETCH_FAIL" label=""/>
+  <suffix name="BACKGROUND_FETCH_SUCCESS" label=""/>
   <suffix name="COOKIE_CHANGE" label="COOKIE_CHANGE"/>
   <suffix name="FETCH_MAIN_FRAME" label="FETCH_MAIN_FRAME"/>
   <suffix name="FETCH_SHARED_WORKER" label="FETCH_SHARED_WORKER"/>
@@ -176846,7 +176846,7 @@
 
   <suffix name="DuringStartup"
       label="The worker started up during browser startup."/>
-  <suffix name="ExistingProcess">
+  <suffix name="ExistingProcess" label="">
     <obsolete>
       Deprecated as of 07/2017. Replaced by ExistingUnreadyProcess and
       ExistingReadyProcess.
@@ -176877,7 +176877,7 @@
       label="The activated worker was already starting up."/>
   <suffix name="StartWorkerDuringStartup"
       label="Started a worker during browser startup."/>
-  <suffix name="StartWorkerExistingProcess">
+  <suffix name="StartWorkerExistingProcess" label="">
     <obsolete>
       Deprecated as of 07/2017. Replaced by StartWorkerExistingUnreadyProcess
       and StartWorkerExistingReadyProcess.
@@ -176895,7 +176895,7 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ServiceWorkerCache.Cache" separator=".">
-  <suffix name="Batch">
+  <suffix name="Batch" label="">
     <obsolete>
       Deprecated as of 08/2018. Replaced by ServiceWorkerCache.Cache.Put and
       ServiceWorkerCache.Cache.Delete.
@@ -176909,7 +176909,7 @@
       ServiceWorkerCache.Cache.Renderer.DeleteOne.
     </obsolete>
   </suffix>
-  <suffix name="Keys">
+  <suffix name="Keys" label="">
     <obsolete>
       Deprecated as of 08/2018. Replaced by ServiceWorkerCache.Cache.Keys2 in
       order to use a larger maximum value.
@@ -176923,7 +176923,7 @@
       ServiceWorkerCache.Cache.Renderer.Keys.
     </obsolete>
   </suffix>
-  <suffix name="Match">
+  <suffix name="Match" label="">
     <obsolete>
       Deprecated as of 08/2018. Replaced by ServiceWorkerCache.Cache.Match2 in
       order to use a larger maximum value.
@@ -176937,7 +176937,7 @@
       ServiceWorkerCache.Cache.Renderer.Match.Hit.
     </obsolete>
   </suffix>
-  <suffix name="MatchAll">
+  <suffix name="MatchAll" label="">
     <obsolete>
       Deprecated as of 08/2018. Replaced by ServiceWorkerCache.Cache.MatchAll2
       in order to use a larger maximum value.
@@ -177097,7 +177097,7 @@
       ServiceWorkerCache.CacheStorage.Renderer.Keys.
     </obsolete>
   </suffix>
-  <suffix name="Match">
+  <suffix name="Match" label="">
     <obsolete>
       Deprecated as of 08/2018. Replaced by
       ServiceWorkerCache.CacheStorage.Match2 in order to use a larger maximum
@@ -177195,20 +177195,20 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ServiceWorkerSchedulerOp" separator=".">
-  <suffix name="Close"/>
-  <suffix name="Delete"/>
-  <suffix name="GetAllMatched"/>
-  <suffix name="Has"/>
-  <suffix name="Init"/>
-  <suffix name="Keys"/>
-  <suffix name="Match"/>
-  <suffix name="MatchAll"/>
-  <suffix name="Open"/>
-  <suffix name="Put"/>
-  <suffix name="Size"/>
-  <suffix name="SizeThenClose"/>
-  <suffix name="WriteIndex"/>
-  <suffix name="WriteSideData"/>
+  <suffix name="Close" label=""/>
+  <suffix name="Delete" label=""/>
+  <suffix name="GetAllMatched" label=""/>
+  <suffix name="Has" label=""/>
+  <suffix name="Init" label=""/>
+  <suffix name="Keys" label=""/>
+  <suffix name="Match" label=""/>
+  <suffix name="MatchAll" label=""/>
+  <suffix name="Open" label=""/>
+  <suffix name="Put" label=""/>
+  <suffix name="Size" label=""/>
+  <suffix name="SizeThenClose" label=""/>
+  <suffix name="WriteIndex" label=""/>
+  <suffix name="WriteSideData" label=""/>
   <affected-histogram
       name="ServiceWorkerCache.Cache.Scheduler.IsOperationSlow"/>
   <affected-histogram
@@ -177359,10 +177359,10 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SetupInstallWin32Apis" separator=".">
-  <suffix name="ChangeServiceConfig"/>
-  <suffix name="CreateService"/>
-  <suffix name="DeleteService"/>
-  <suffix name="OpenSCManager"/>
+  <suffix name="ChangeServiceConfig" label=""/>
+  <suffix name="CreateService" label=""/>
+  <suffix name="DeleteService" label=""/>
+  <suffix name="OpenSCManager" label=""/>
   <affected-histogram name="Setup.Install.Win32ApiError"/>
 </histogram_suffixes>
 
@@ -177411,7 +177411,7 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="Signin.Actions" separator=".">
-  <suffix name="AllAccessPointActions"/>
+  <suffix name="AllAccessPointActions" label=""/>
   <suffix name="AndroidAccountConsistencyFirstRunActions"
       label="Signin Flow shown on android after Account Consistency flag was
              enabled."/>
@@ -177430,14 +177430,14 @@
   <obsolete>
     Deprecated as of 12/2014.
   </obsolete>
-  <suffix name="AppLauncherActions"/>
-  <suffix name="ExtensionInstallBubbleActions"/>
-  <suffix name="MenuActions"/>
-  <suffix name="NTPLinkActions"/>
-  <suffix name="OneClickActions"/>
-  <suffix name="SettingsActions"/>
-  <suffix name="StartPageActions"/>
-  <suffix name="UnknownActions"/>
+  <suffix name="AppLauncherActions" label=""/>
+  <suffix name="ExtensionInstallBubbleActions" label=""/>
+  <suffix name="MenuActions" label=""/>
+  <suffix name="NTPLinkActions" label=""/>
+  <suffix name="OneClickActions" label=""/>
+  <suffix name="SettingsActions" label=""/>
+  <suffix name="StartPageActions" label=""/>
+  <suffix name="UnknownActions" label=""/>
   <affected-histogram name="Signin"/>
 </histogram_suffixes>
 
@@ -177519,8 +177519,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="Size" separator=".">
-  <suffix name="Height"/>
-  <suffix name="Width"/>
+  <suffix name="Height" label=""/>
+  <suffix name="Width" label=""/>
   <affected-histogram name="BrowserWindow.Resize.StepBoundsChange"/>
 </histogram_suffixes>
 
@@ -177534,8 +177534,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SmartLockStatusTypes" separator=".">
-  <suffix name="Other"/>
-  <suffix name="Unlockable"/>
+  <suffix name="Other" label=""/>
+  <suffix name="Unlockable" label=""/>
   <affected-histogram
       name="SmartLock.Performance.AuthenticationToReceiveFirstRemoteStatusDuration.Unlock"/>
   <affected-histogram
@@ -177585,9 +177585,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SocketOperation" separator=".">
-  <suffix name="Connect"/>
-  <suffix name="Read"/>
-  <suffix name="Write"/>
+  <suffix name="Connect" label=""/>
+  <suffix name="Read" label=""/>
+  <suffix name="Write" label=""/>
   <affected-histogram name="Net.SSLProtocolErrorCipher"/>
   <affected-histogram name="Net.SSLProtocolErrorReason"/>
 </histogram_suffixes>
@@ -177621,18 +177621,18 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SoftwareReporterEngine" separator="_">
-  <suffix name="ESET"/>
-  <suffix name="Experimental">
+  <suffix name="ESET" label=""/>
+  <suffix name="Experimental" label="">
     <obsolete>
       Deprecated 10/2018. Replaced by ESET suffix.
     </obsolete>
   </suffix>
-  <suffix name="Original">
+  <suffix name="Original" label="">
     <obsolete>
       Deprecated 10/2018. Replaced by URZA suffix.
     </obsolete>
   </suffix>
-  <suffix name="URZA"/>
+  <suffix name="URZA" label=""/>
   <affected-histogram name="SoftwareReporter.FoundUwSReadError"/>
   <affected-histogram name="SoftwareReporter.LogsUploadEnabled"/>
   <affected-histogram name="SoftwareReporter.LogsUploadResult"/>
@@ -177697,9 +177697,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SplitViewResizeModes" separator=".">
-  <suffix name="TabletMode.MultiWindow"/>
-  <suffix name="TabletMode.SingleWindow"/>
-  <suffix name="TabletMode.WithOverview"/>
+  <suffix name="TabletMode.MultiWindow" label=""/>
+  <suffix name="TabletMode.SingleWindow" label=""/>
+  <suffix name="TabletMode.WithOverview" label=""/>
   <affected-histogram name="Ash.SplitViewResize.PresentationTime"/>
   <affected-histogram name="Ash.SplitViewResize.PresentationTime.MaxLatency"/>
 </histogram_suffixes>
@@ -177767,8 +177767,8 @@
   <obsolete>
     Removed 2011-06-01.
   </obsolete>
-  <suffix name="FalseStart_disabled"/>
-  <suffix name="FalseStart_enabled"/>
+  <suffix name="FalseStart_disabled" label=""/>
+  <suffix name="FalseStart_enabled" label=""/>
   <affected-histogram name="Net.SSL_Connection_Latency"/>
   <affected-histogram name="Net.SSL_Connection_Latency_2"/>
   <affected-histogram name="PLT.BeginToFinish_LinkLoadNormal"/>
@@ -177776,9 +177776,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="StaleWhileRevalidate" separator=".">
-  <suffix name="Cache"/>
-  <suffix name="Network"/>
-  <suffix name="StaleCache"/>
+  <suffix name="Cache" label=""/>
+  <suffix name="Network" label=""/>
+  <suffix name="StaleCache" label=""/>
   <affected-histogram
       name="PageLoad.Clients.StaleWhileRevalidate.PaintTiming.FirstContentfulPaint"/>
   <affected-histogram
@@ -178244,52 +178244,52 @@
   <obsolete>
     No longer logged.
   </obsolete>
-  <suffix name="PreRead_0"/>
-  <suffix name="PreRead_5"/>
-  <suffix name="PreRead_10"/>
-  <suffix name="PreRead_15"/>
-  <suffix name="PreRead_20"/>
-  <suffix name="PreRead_25"/>
-  <suffix name="PreRead_30"/>
-  <suffix name="PreRead_35"/>
-  <suffix name="PreRead_40"/>
-  <suffix name="PreRead_45"/>
-  <suffix name="PreRead_50"/>
-  <suffix name="PreRead_55"/>
-  <suffix name="PreRead_60"/>
-  <suffix name="PreRead_65"/>
-  <suffix name="PreRead_70"/>
-  <suffix name="PreRead_75"/>
-  <suffix name="PreRead_80"/>
-  <suffix name="PreRead_85"/>
-  <suffix name="PreRead_90"/>
-  <suffix name="PreRead_95"/>
-  <suffix name="PreRead_100"/>
-  <suffix name="PreReadDisabled"/>
-  <suffix name="PreReadEnabled"/>
-  <suffix name="XP_PreRead_0"/>
-  <suffix name="XP_PreRead_5"/>
-  <suffix name="XP_PreRead_10"/>
-  <suffix name="XP_PreRead_15"/>
-  <suffix name="XP_PreRead_20"/>
-  <suffix name="XP_PreRead_25"/>
-  <suffix name="XP_PreRead_30"/>
-  <suffix name="XP_PreRead_35"/>
-  <suffix name="XP_PreRead_40"/>
-  <suffix name="XP_PreRead_45"/>
-  <suffix name="XP_PreRead_50"/>
-  <suffix name="XP_PreRead_55"/>
-  <suffix name="XP_PreRead_60"/>
-  <suffix name="XP_PreRead_65"/>
-  <suffix name="XP_PreRead_70"/>
-  <suffix name="XP_PreRead_75"/>
-  <suffix name="XP_PreRead_80"/>
-  <suffix name="XP_PreRead_85"/>
-  <suffix name="XP_PreRead_90"/>
-  <suffix name="XP_PreRead_95"/>
-  <suffix name="XP_PreRead_100"/>
-  <suffix name="XP_PreReadDisabled"/>
-  <suffix name="XP_PreReadEnabled"/>
+  <suffix name="PreRead_0" label=""/>
+  <suffix name="PreRead_5" label=""/>
+  <suffix name="PreRead_10" label=""/>
+  <suffix name="PreRead_15" label=""/>
+  <suffix name="PreRead_20" label=""/>
+  <suffix name="PreRead_25" label=""/>
+  <suffix name="PreRead_30" label=""/>
+  <suffix name="PreRead_35" label=""/>
+  <suffix name="PreRead_40" label=""/>
+  <suffix name="PreRead_45" label=""/>
+  <suffix name="PreRead_50" label=""/>
+  <suffix name="PreRead_55" label=""/>
+  <suffix name="PreRead_60" label=""/>
+  <suffix name="PreRead_65" label=""/>
+  <suffix name="PreRead_70" label=""/>
+  <suffix name="PreRead_75" label=""/>
+  <suffix name="PreRead_80" label=""/>
+  <suffix name="PreRead_85" label=""/>
+  <suffix name="PreRead_90" label=""/>
+  <suffix name="PreRead_95" label=""/>
+  <suffix name="PreRead_100" label=""/>
+  <suffix name="PreReadDisabled" label=""/>
+  <suffix name="PreReadEnabled" label=""/>
+  <suffix name="XP_PreRead_0" label=""/>
+  <suffix name="XP_PreRead_5" label=""/>
+  <suffix name="XP_PreRead_10" label=""/>
+  <suffix name="XP_PreRead_15" label=""/>
+  <suffix name="XP_PreRead_20" label=""/>
+  <suffix name="XP_PreRead_25" label=""/>
+  <suffix name="XP_PreRead_30" label=""/>
+  <suffix name="XP_PreRead_35" label=""/>
+  <suffix name="XP_PreRead_40" label=""/>
+  <suffix name="XP_PreRead_45" label=""/>
+  <suffix name="XP_PreRead_50" label=""/>
+  <suffix name="XP_PreRead_55" label=""/>
+  <suffix name="XP_PreRead_60" label=""/>
+  <suffix name="XP_PreRead_65" label=""/>
+  <suffix name="XP_PreRead_70" label=""/>
+  <suffix name="XP_PreRead_75" label=""/>
+  <suffix name="XP_PreRead_80" label=""/>
+  <suffix name="XP_PreRead_85" label=""/>
+  <suffix name="XP_PreRead_90" label=""/>
+  <suffix name="XP_PreRead_95" label=""/>
+  <suffix name="XP_PreRead_100" label=""/>
+  <suffix name="XP_PreReadDisabled" label=""/>
+  <suffix name="XP_PreReadEnabled" label=""/>
   <affected-histogram name="Startup.BrowserMessageLoopStartTime"/>
   <affected-histogram name="Startup.BrowserOpenTabs"/>
 </histogram_suffixes>
@@ -178706,7 +178706,7 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="TeamDrivesSupport" separator=".">
-  <suffix name="TeamDrives"/>
+  <suffix name="TeamDrives" label=""/>
   <affected-histogram name="Drive.DeltaFeedLoadTime"/>
   <affected-histogram name="Drive.DirectoryFeedLoadTime"/>
   <affected-histogram name="Drive.FullFeedLoadTime"/>
@@ -178834,23 +178834,23 @@
   <obsolete>
     Deprecated as of 11/2017 in Issue 650338. Using a DCHECK instead.
   </obsolete>
-  <suffix name="Browser"/>
-  <suffix name="Renderer"/>
+  <suffix name="Browser" label=""/>
+  <suffix name="Renderer" label=""/>
   <affected-histogram name="Event.TimestampHasValidTimebase"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="TotalTimeToHttpsGoogle" separator=".">
-  <suffix name="NotQuic">
+  <suffix name="NotQuic" label="">
     <obsolete>
       Deprecated as of 08/2015. Use Net.HttpJob.*Secure.NotQuic instead.
     </obsolete>
   </suffix>
-  <suffix name="Quic">
+  <suffix name="Quic" label="">
     <obsolete>
       Deprecated as of 08/2015. Use Net.HttpJob.*Secure.Quic instead.
     </obsolete>
   </suffix>
-  <suffix name="Secure.NotQuic">
+  <suffix name="Secure.NotQuic" label="">
     <obsolete>
       Deprecated as of 08/2018. No longer used.
     </obsolete>
@@ -179012,10 +179012,10 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="VideoCaptureFrameDrop" separator=".">
-  <suffix name="DeviceCapture"/>
-  <suffix name="DisplayCapture"/>
-  <suffix name="GumDesktopCapture"/>
-  <suffix name="GumTabCapture"/>
+  <suffix name="DeviceCapture" label=""/>
+  <suffix name="DisplayCapture" label=""/>
+  <suffix name="GumDesktopCapture" label=""/>
+  <suffix name="GumTabCapture" label=""/>
   <affected-histogram name="Media.VideoCapture.FrameDrop"/>
   <affected-histogram name="Media.VideoCapture.MaxFrameDropExceeded"/>
 </histogram_suffixes>
@@ -179232,9 +179232,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="WebMediaPlayerContentTypes" separator=".">
-  <suffix name="Audio"/>
-  <suffix name="AudioVideo"/>
-  <suffix name="Video"/>
+  <suffix name="Audio" label=""/>
+  <suffix name="AudioVideo" label=""/>
+  <suffix name="Video" label=""/>
   <affected-histogram name="Media.PreloadMetadataSuspendWasIdeal"/>
 </histogram_suffixes>
 
@@ -179292,14 +179292,14 @@
 
 <histogram_suffixes name="WebRTCVideoExperimentGroupId" separator=".">
   <owner>ilnik@chromium.org</owner>
-  <suffix name="ExperimentGroup0"/>
-  <suffix name="ExperimentGroup1"/>
-  <suffix name="ExperimentGroup2"/>
-  <suffix name="ExperimentGroup3"/>
-  <suffix name="ExperimentGroup4"/>
-  <suffix name="S0"/>
-  <suffix name="S1"/>
-  <suffix name="S2"/>
+  <suffix name="ExperimentGroup0" label=""/>
+  <suffix name="ExperimentGroup1" label=""/>
+  <suffix name="ExperimentGroup2" label=""/>
+  <suffix name="ExperimentGroup3" label=""/>
+  <suffix name="ExperimentGroup4" label=""/>
+  <suffix name="S0" label=""/>
+  <suffix name="S1" label=""/>
+  <suffix name="S2" label=""/>
   <affected-histogram name="WebRTC.Video.Decoded.Vp8.Qp"/>
   <affected-histogram name="WebRTC.Video.EndToEndDelayInMs"/>
   <affected-histogram name="WebRTC.Video.EndToEndDelayMaxInMs"/>
@@ -179326,21 +179326,21 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="WebSocketErrorCodesVariants" separator="_">
-  <suffix name="Localhost"/>
-  <suffix name="NotLocalhost"/>
+  <suffix name="Localhost" label=""/>
+  <suffix name="NotLocalhost" label=""/>
   <affected-histogram name="Net.WebSocket.ErrorCodes"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="WebSocketMessageSizeReceive" separator=".">
-  <suffix name="ArrayBuffer"/>
-  <suffix name="Blob"/>
+  <suffix name="ArrayBuffer" label=""/>
+  <suffix name="Blob" label=""/>
   <affected-histogram name="WebCore.WebSocket.MessageSize.Receive"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="WebSocketMessageSizeSend" separator=".">
-  <suffix name="ArrayBuffer"/>
-  <suffix name="ArrayBufferView"/>
-  <suffix name="Blob"/>
+  <suffix name="ArrayBuffer" label=""/>
+  <suffix name="ArrayBufferView" label=""/>
+  <suffix name="Blob" label=""/>
   <affected-histogram name="WebCore.WebSocket.MessageSize.Send"/>
 </histogram_suffixes>
 
@@ -179353,13 +179353,13 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="WeekdayNames" separator="_">
-  <suffix name="Friday"/>
-  <suffix name="Monday"/>
-  <suffix name="Saturday"/>
-  <suffix name="Sunday"/>
-  <suffix name="Thursday"/>
-  <suffix name="Tuesday"/>
-  <suffix name="Wednesday"/>
+  <suffix name="Friday" label=""/>
+  <suffix name="Monday" label=""/>
+  <suffix name="Saturday" label=""/>
+  <suffix name="Sunday" label=""/>
+  <suffix name="Thursday" label=""/>
+  <suffix name="Tuesday" label=""/>
+  <suffix name="Wednesday" label=""/>
   <affected-histogram name="NewTabPage.ContentSuggestions.UsageTimeLocal"/>
 </histogram_suffixes>
 
@@ -179388,72 +179388,72 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="WrenchMenuActionTimings" separator=".">
-  <suffix name="About"/>
-  <suffix name="AppInfo"/>
-  <suffix name="BetaForum"/>
-  <suffix name="BookmarkAllTabs"/>
-  <suffix name="BookmarkOpen">
+  <suffix name="About" label=""/>
+  <suffix name="AppInfo" label=""/>
+  <suffix name="BetaForum" label=""/>
+  <suffix name="BookmarkAllTabs" label=""/>
+  <suffix name="BookmarkOpen" label="">
     <obsolete>
       Deprecated as of 02/2015. Use WrenchMenu.TimeToAction.OpenBookmark
       instead.
     </obsolete>
   </suffix>
-  <suffix name="BookmarkPage"/>
-  <suffix name="Cast"/>
-  <suffix name="ChromeOSRestart"/>
-  <suffix name="ClearBrowsingData"/>
-  <suffix name="Copy"/>
-  <suffix name="CopyUrl"/>
-  <suffix name="CreateHostedApp"/>
-  <suffix name="CreateShortcuts">
+  <suffix name="BookmarkPage" label=""/>
+  <suffix name="Cast" label=""/>
+  <suffix name="ChromeOSRestart" label=""/>
+  <suffix name="ClearBrowsingData" label=""/>
+  <suffix name="Copy" label=""/>
+  <suffix name="CopyUrl" label=""/>
+  <suffix name="CreateHostedApp" label=""/>
+  <suffix name="CreateShortcuts" label="">
     <obsolete>
       Deprecated as of 04/2017. Replaced by Bookmark Apps (CreateHostedApp).
     </obsolete>
   </suffix>
-  <suffix name="Cut"/>
-  <suffix name="DevTools"/>
-  <suffix name="DevToolsConsole"/>
-  <suffix name="DevToolsDevices"/>
-  <suffix name="DistillPage"/>
-  <suffix name="EnterFullScreen"/>
-  <suffix name="Exit"/>
-  <suffix name="Feedback"/>
-  <suffix name="Find"/>
-  <suffix name="HelpPage"/>
-  <suffix name="ImportSettings"/>
-  <suffix name="ManageExtensions"/>
-  <suffix name="NewIncognitoWindow"/>
-  <suffix name="NewTab"/>
-  <suffix name="NewWindow"/>
-  <suffix name="OpenBookmark"/>
-  <suffix name="OpenInChrome"/>
-  <suffix name="OpenRecentTab"/>
-  <suffix name="Paste"/>
-  <suffix name="PinToStartScreen"/>
-  <suffix name="Print"/>
-  <suffix name="ProfilingEnabled"/>
-  <suffix name="RecentTab">
+  <suffix name="Cut" label=""/>
+  <suffix name="DevTools" label=""/>
+  <suffix name="DevToolsConsole" label=""/>
+  <suffix name="DevToolsDevices" label=""/>
+  <suffix name="DistillPage" label=""/>
+  <suffix name="EnterFullScreen" label=""/>
+  <suffix name="Exit" label=""/>
+  <suffix name="Feedback" label=""/>
+  <suffix name="Find" label=""/>
+  <suffix name="HelpPage" label=""/>
+  <suffix name="ImportSettings" label=""/>
+  <suffix name="ManageExtensions" label=""/>
+  <suffix name="NewIncognitoWindow" label=""/>
+  <suffix name="NewTab" label=""/>
+  <suffix name="NewWindow" label=""/>
+  <suffix name="OpenBookmark" label=""/>
+  <suffix name="OpenInChrome" label=""/>
+  <suffix name="OpenRecentTab" label=""/>
+  <suffix name="Paste" label=""/>
+  <suffix name="PinToStartScreen" label=""/>
+  <suffix name="Print" label=""/>
+  <suffix name="ProfilingEnabled" label=""/>
+  <suffix name="RecentTab" label="">
     <obsolete>
       Deprecated as of 02/2015. Use WrenchMenu.TimeToAction.OpenRecentTab
       instead.
     </obsolete>
   </suffix>
-  <suffix name="RequestTabletSite"/>
-  <suffix name="RestoreTab"/>
-  <suffix name="SavePage"/>
-  <suffix name="Settings"/>
-  <suffix name="ShowBookmarkBar"/>
-  <suffix name="ShowBookmarkMgr"/>
-  <suffix name="ShowDownloads"/>
-  <suffix name="ShowHistory"/>
-  <suffix name="ShowSyncSetup"/>
-  <suffix name="SiteSettings"/>
-  <suffix name="TaskManager"/>
-  <suffix name="ViewSource"/>
-  <suffix name="Win8MetroRestart"/>
-  <suffix name="WinDesktopRestart"/>
-  <suffix name="ZoomMinus"/>
-  <suffix name="ZoomPlus"/>
+  <suffix name="RequestTabletSite" label=""/>
+  <suffix name="RestoreTab" label=""/>
+  <suffix name="SavePage" label=""/>
+  <suffix name="Settings" label=""/>
+  <suffix name="ShowBookmarkBar" label=""/>
+  <suffix name="ShowBookmarkMgr" label=""/>
+  <suffix name="ShowDownloads" label=""/>
+  <suffix name="ShowHistory" label=""/>
+  <suffix name="ShowSyncSetup" label=""/>
+  <suffix name="SiteSettings" label=""/>
+  <suffix name="TaskManager" label=""/>
+  <suffix name="ViewSource" label=""/>
+  <suffix name="Win8MetroRestart" label=""/>
+  <suffix name="WinDesktopRestart" label=""/>
+  <suffix name="ZoomMinus" label=""/>
+  <suffix name="ZoomPlus" label=""/>
   <affected-histogram name="WrenchMenu.TimeToAction"/>
 </histogram_suffixes>
 
diff --git a/tools/perf/benchmarks/blink_perf.py b/tools/perf/benchmarks/blink_perf.py
index aa3dce7..9e306350 100644
--- a/tools/perf/benchmarks/blink_perf.py
+++ b/tools/perf/benchmarks/blink_perf.py
@@ -563,4 +563,5 @@
     return 'blink_perf.display_locking'
 
   def SetExtraBrowserOptions(self, options):
-    options.AppendExtraBrowserArgs(['--enable-blink-features=DisplayLocking'])
+    options.AppendExtraBrowserArgs(
+      ['--enable-blink-features=DisplayLocking,CSSContentSize'])
diff --git a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc
index 6587ba0..3e7d499 100644
--- a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc
+++ b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc
@@ -155,6 +155,14 @@
   // is on the next TextUnit boundary, if one exists.
   switch (unit) {
     case TextUnit_Character: {
+      // Sometimes, the start endpoint will be positioned at the end of anchor,
+      // meaning the end endpoint will be positioned in another anchor. Because
+      // Windows ATs behave undesirably when the start and end endpoints are not
+      // in the same anchor (for character and word navigation), move the start
+      // endpoint to the start of the other anchor.
+      if (start_->AtEndOfAnchor() && !start_->AtEndOfDocument()) {
+        start_ = start_->AsPositionBeforeCharacter();
+      }
       // For characters, the start endpoint will always be on a TextUnit
       // boundary, thus we only need to move the end position.
       AXPositionInstance end_backup = end_->Clone();
@@ -193,6 +201,12 @@
       // in order to move to the next one (stopping at the last anchor's end).
       end_ = start_->CreateNextWordStartPosition(
           AXBoundaryBehavior::StopAtLastAnchorBoundary);
+      // Because Windows ATs behave undesirably when the start and end endpoints
+      // are not in the same anchor (for character and word navigation), make
+      // sure to bring back the end endpoint to the end of the start's anchor.
+      if (start_->anchor_id() != end_->anchor_id()) {
+        end_ = start_->CreatePositionAtEndOfAnchor();
+      }
       break;
     case TextUnit_Line:
       start_ = start_->CreatePreviousLineStartPosition(
@@ -205,6 +219,11 @@
           AXBoundaryBehavior::StopIfAlreadyAtBoundary);
       end_ = start_->CreateNextParagraphEndPosition(
           AXBoundaryBehavior::StopIfAlreadyAtBoundary);
+
+      if (!start_->AtEndOfDocument())
+        start_ = start_->AsPositionBeforeCharacter();
+      if (!end_->AtEndOfDocument())
+        end_ = end_->AsPositionBeforeCharacter();
       break;
     case TextUnit_Page: {
       // If the document doesn't support pagination, default to document units
@@ -227,20 +246,6 @@
       return UIA_E_NOTSUPPORTED;
   }
 
-  // Some text positions are equal when compared, but they could be located at
-  // different anchors, affecting how `GetEnclosingElement` works. Normalize the
-  // endpoints to correctly enclose characters of the text representation.
-  AXPositionInstance normalized_start = start_->AsPositionBeforeCharacter();
-  AXPositionInstance normalized_end = end_->AsPositionBeforeCharacter();
-
-  if (!normalized_start->IsNullPosition()) {
-    DCHECK_EQ(*start_, *normalized_start);
-    start_ = std::move(normalized_start);
-  }
-  if (!normalized_end->IsNullPosition()) {
-    DCHECK_EQ(*end_, *normalized_end);
-    end_ = std::move(normalized_end);
-  }
   return S_OK;
 }
 
diff --git a/ui/aura/BUILD.gn b/ui/aura/BUILD.gn
index ff3692c..61cb4cb 100644
--- a/ui/aura/BUILD.gn
+++ b/ui/aura/BUILD.gn
@@ -39,6 +39,7 @@
     "scoped_enable_unadjusted_mouse_events.h",
     "scoped_keyboard_hook.h",
     "scoped_simple_keyboard_hook.h",
+    "scoped_window_event_targeting_blocker.h",
     "scoped_window_targeter.h",
     "window.h",
     "window_delegate.h",
@@ -81,6 +82,7 @@
     "null_window_targeter.cc",
     "scoped_keyboard_hook.cc",
     "scoped_simple_keyboard_hook.cc",
+    "scoped_window_event_targeting_blocker.cc",
     "scoped_window_targeter.cc",
     "window.cc",
     "window_delegate.cc",
diff --git a/ui/aura/scoped_window_event_targeting_blocker.cc b/ui/aura/scoped_window_event_targeting_blocker.cc
new file mode 100644
index 0000000..219076d
--- /dev/null
+++ b/ui/aura/scoped_window_event_targeting_blocker.cc
@@ -0,0 +1,42 @@
+// Copyright 2019 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 "ui/aura/scoped_window_event_targeting_blocker.h"
+
+#include "ui/aura/window.h"
+
+namespace aura {
+
+ScopedWindowEventTargetingBlocker::ScopedWindowEventTargetingBlocker(
+    Window* window)
+    : window_(window) {
+  if (window_->event_targeting_blocker_count_ == 0) {
+    window_->restore_event_targeting_policy_ = window_->event_targeting_policy_;
+    window_->SetEventTargetingPolicy(EventTargetingPolicy::kNone);
+  }
+  // Increase |Window::event_targeting_blocker_count_| after setting the event
+  // targeting policy to kNone as Window::SetEventTargetingPolicy() relies on
+  // |Window::event_targeting_blocker_count_| to see if the policy is allowed
+  // to be changed.
+  window_->event_targeting_blocker_count_++;
+  window_->AddObserver(this);
+}
+
+ScopedWindowEventTargetingBlocker::~ScopedWindowEventTargetingBlocker() {
+  if (!window_)
+    return;
+  window_->RemoveObserver(this);
+  window_->event_targeting_blocker_count_--;
+  DCHECK_GE(window_->event_targeting_blocker_count_, 0);
+  if (window_->event_targeting_blocker_count_ == 0)
+    window_->SetEventTargetingPolicy(window_->restore_event_targeting_policy_);
+}
+
+void ScopedWindowEventTargetingBlocker::OnWindowDestroying(Window* window) {
+  DCHECK_EQ(window, window_);
+  window_->RemoveObserver(this);
+  window_ = nullptr;
+}
+
+}  // namespace aura
diff --git a/ui/aura/scoped_window_event_targeting_blocker.h b/ui/aura/scoped_window_event_targeting_blocker.h
new file mode 100644
index 0000000..e240f35
--- /dev/null
+++ b/ui/aura/scoped_window_event_targeting_blocker.h
@@ -0,0 +1,34 @@
+// Copyright 2019 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 UI_AURA_SCOPED_WINDOW_EVENT_TARGETING_BLOCKER_H_
+#define UI_AURA_SCOPED_WINDOW_EVENT_TARGETING_BLOCKER_H_
+
+#include "base/macros.h"
+#include "ui/aura/aura_export.h"
+#include "ui/aura/window_observer.h"
+
+namespace aura {
+
+class Window;
+
+// Temporarily blocks the event targeting by setting kNone targeting policy to
+// |window_|. The original event targeting policy will be restored if all
+// targeting blockers are removed from |window_|.
+class AURA_EXPORT ScopedWindowEventTargetingBlocker : public WindowObserver {
+ public:
+  explicit ScopedWindowEventTargetingBlocker(Window* window);
+  ~ScopedWindowEventTargetingBlocker() override;
+
+  // WindowObserver:
+  void OnWindowDestroying(Window* window) override;
+
+ private:
+  Window* window_;
+  DISALLOW_COPY_AND_ASSIGN(ScopedWindowEventTargetingBlocker);
+};
+
+}  // namespace aura
+
+#endif  // UI_AURA_SCOPED_WINDOW_EVENT_TARGETING_BLOCKER_H_
diff --git a/ui/aura/window.cc b/ui/aura/window.cc
index 4828e77f..88272e4 100644
--- a/ui/aura/window.cc
+++ b/ui/aura/window.cc
@@ -108,6 +108,8 @@
       delegate_(delegate),
       event_targeting_policy_(
           aura::EventTargetingPolicy::kTargetAndDescendants),
+      restore_event_targeting_policy_(
+          aura::EventTargetingPolicy::kTargetAndDescendants),
       // Don't notify newly added observers during notification. This causes
       // problems for code that adds an observer as part of an observer
       // notification (such as the workspace code).
@@ -570,6 +572,14 @@
 }
 
 void Window::SetEventTargetingPolicy(EventTargetingPolicy policy) {
+  // If the event targeting is blocked on the window, do not allow change event
+  // targeting policy until all event targeting blockers are removed from the
+  // window.
+  if (event_targeting_blocker_count_ > 0) {
+    restore_event_targeting_policy_ = policy;
+    return;
+  }
+
 #if DCHECK_IS_ON()
   const bool old_window_accepts_events =
       (event_targeting_policy_ == EventTargetingPolicy::kTargetOnly) ||
diff --git a/ui/aura/window.h b/ui/aura/window.h
index fcfdd77..8558a5c 100644
--- a/ui/aura/window.h
+++ b/ui/aura/window.h
@@ -69,13 +69,13 @@
 
 class LayoutManager;
 class ScopedKeyboardHook;
+class ScopedWindowEventTargetingBlocker;
 class WindowDelegate;
-class WindowObserver;
 class WindowTargeter;
 class WindowTreeHost;
 
 // Defined in class_property.h (which we do not include)
-template<typename T>
+template <typename T>
 using WindowProperty = ui::ClassProperty<T>;
 
 namespace test {
@@ -110,10 +110,7 @@
   static constexpr int kInitialId = -1;
 
   // Used when stacking windows.
-  enum StackDirection {
-    STACK_ABOVE,
-    STACK_BELOW
-  };
+  enum StackDirection { STACK_ABOVE, STACK_BELOW };
 
   // These values are persisted to logs. Entries should not be renumbered and
   // numeric values should never be reused.
@@ -397,7 +394,7 @@
   void* GetNativeWindowProperty(const char* key) const;
 
   // Type of a function to delete a property that this window owns.
-  //typedef void (*PropertyDeallocator)(int64_t value);
+  // typedef void (*PropertyDeallocator)(int64_t value);
 
   // Overridden from ui::LayerDelegate:
   void OnDeviceScaleFactorChanged(float old_device_scale_factor,
@@ -513,6 +510,7 @@
   friend class HitTestDataProviderAura;
   friend class LayoutManager;
   friend class PropertyConverter;
+  friend class ScopedWindowEventTargetingBlocker;
   friend class WindowTargeter;
   friend class test::WindowTestApi;
 
@@ -682,6 +680,10 @@
 
   // Makes the window pass all events through to any windows behind it.
   EventTargetingPolicy event_targeting_policy_;
+  // Used to restore to the original event targeting policy after all event
+  // targeting blockers on this window are removed.
+  EventTargetingPolicy restore_event_targeting_policy_;
+  int event_targeting_blocker_count_ = 0;
 
   base::ReentrantObserverList<WindowObserver, true> observers_;
 
diff --git a/ui/aura/window_unittest.cc b/ui/aura/window_unittest.cc
index b94aa8c..941e2463 100644
--- a/ui/aura/window_unittest.cc
+++ b/ui/aura/window_unittest.cc
@@ -24,6 +24,7 @@
 #include "ui/aura/client/visibility_client.h"
 #include "ui/aura/client/window_parenting_client.h"
 #include "ui/aura/layout_manager.h"
+#include "ui/aura/scoped_window_event_targeting_blocker.h"
 #include "ui/aura/test/aura_test_base.h"
 #include "ui/aura/test/aura_test_utils.h"
 #include "ui/aura/test/test_window_delegate.h"
@@ -1612,6 +1613,39 @@
   EXPECT_TRUE(w111.get()->layer()->accept_events());
 }
 
+TEST_F(WindowTest, ScopedEventTargetingBlockerTest) {
+  // Test only when all event targeting blockers are removed from the window,
+  // its event targeting policy will restore back to its original value.
+  std::unique_ptr<Window> window(CreateTestWindowWithDelegate(
+      nullptr, 1, gfx::Rect(0, 0, 500, 500), root_window()));
+  EXPECT_EQ(window->event_targeting_policy(),
+            EventTargetingPolicy::kTargetAndDescendants);
+  auto event_targeting_blocker1 =
+      std::make_unique<ScopedWindowEventTargetingBlocker>(window.get());
+  EXPECT_EQ(window->event_targeting_policy(), EventTargetingPolicy::kNone);
+  auto event_targeting_blocker2 =
+      std::make_unique<ScopedWindowEventTargetingBlocker>(window.get());
+  EXPECT_EQ(window->event_targeting_policy(), EventTargetingPolicy::kNone);
+  event_targeting_blocker2.reset();
+  EXPECT_EQ(window->event_targeting_policy(), EventTargetingPolicy::kNone);
+  event_targeting_blocker1.reset();
+  EXPECT_EQ(window->event_targeting_policy(),
+            EventTargetingPolicy::kTargetAndDescendants);
+
+  // It's possible that the event target policy changes when there is an event
+  // targeting blocker in place. In this case when the event targeting blocker
+  // is removed from the window, the window should restore to the changed event
+  // targeting policy.
+  auto event_targeting_blocker3 =
+      std::make_unique<ScopedWindowEventTargetingBlocker>(window.get());
+  EXPECT_EQ(window->event_targeting_policy(), EventTargetingPolicy::kNone);
+  window->SetEventTargetingPolicy(EventTargetingPolicy::kTargetOnly);
+  EXPECT_EQ(window->event_targeting_policy(), EventTargetingPolicy::kNone);
+  event_targeting_blocker3.reset();
+  EXPECT_EQ(window->event_targeting_policy(),
+            EventTargetingPolicy::kTargetOnly);
+}
+
 // Tests transformation on the root window.
 TEST_F(WindowTest, Transform) {
   gfx::Size size = host()->GetBoundsInPixels().size();
diff --git a/ui/base/template_expressions.cc b/ui/base/template_expressions.cc
index e67b048..8adaa61d 100644
--- a/ui/base/template_expressions.cc
+++ b/ui/base/template_expressions.cc
@@ -21,18 +21,18 @@
 const size_t kHtmlTemplateStartSize = base::size(kHtmlTemplateStart) - 1;
 
 // Currently only legacy _template: html`...`, syntax is supported.
-enum HtmlTemplateType { NONE = 0, LEGACY = 1 };
+enum HtmlTemplateType { INVALID = 0, NONE = 1, LEGACY = 2 };
 
 struct TemplatePosition {
   HtmlTemplateType type;
   base::StringPiece::size_type position;
 };
 
-TemplatePosition FindHtmlTemplateStart(const base::StringPiece& source) {
-  base::StringPiece::size_type found = source.find(kHtmlTemplateStart);
-  HtmlTemplateType type = found == base::StringPiece::npos ? NONE : LEGACY;
-  return {type, found + kHtmlTemplateStartSize};
-}
+struct HtmlTemplate {
+  base::StringPiece::size_type start;
+  base::StringPiece::size_type length;
+  HtmlTemplateType type;
+};
 
 TemplatePosition FindHtmlTemplateEnd(const base::StringPiece& source) {
   enum State { OPEN, IN_ESCAPE, IN_TICK };
@@ -62,6 +62,36 @@
   return {NONE, base::StringPiece::npos};
 }
 
+HtmlTemplate FindHtmlTemplate(const base::StringPiece& source) {
+  HtmlTemplate out;
+  base::StringPiece::size_type found = source.find(kHtmlTemplateStart);
+
+  // No template found, return early.
+  if (found == base::StringPiece::npos) {
+    out.type = NONE;
+    return out;
+  }
+
+  out.start = found + kHtmlTemplateStartSize;
+  TemplatePosition end = FindHtmlTemplateEnd(source.substr(out.start));
+  // Template is not terminated.
+  if (end.type == NONE) {
+    out.type = INVALID;
+    return out;
+  }
+
+  out.length = end.position;
+  // Check for a nested template
+  if (source.substr(out.start, out.length).find(kHtmlTemplateStart) !=
+      base::StringPiece::npos) {
+    out.type = INVALID;
+    return out;
+  }
+
+  out.type = LEGACY;
+  return out;
+}
+
 // Escape quotes and backslashes ('"\).
 std::string PolymerParameterEscape(const std::string& in_string) {
   std::string out;
@@ -200,42 +230,45 @@
 bool ReplaceTemplateExpressionsInJS(base::StringPiece source,
                                     const TemplateReplacements& replacements,
                                     std::string* formatted) {
-  // Replacement is only done in JS for the contents of the HTML _template
-  // string.
-  TemplatePosition start_result = FindHtmlTemplateStart(source);
-  if (start_result.type == NONE) {
-    *formatted = source.as_string();
-    return true;
+  CHECK(formatted->empty());
+  base::StringPiece remaining = source;
+  while (true) {
+    // Replacement is only done in JS for the contents of HTML _template
+    // strings.
+    HtmlTemplate current_template = FindHtmlTemplate(remaining);
+
+    // If there was an error finding a template, return false.
+    if (current_template.type == INVALID)
+      return false;
+
+    // If there are no more templates, copy the remaining JS to the output and
+    // return true.
+    if (current_template.type == NONE) {
+      formatted->append(remaining.as_string());
+      return true;
+    }
+
+    // Copy the JS before the template to the output.
+    formatted->append(remaining.substr(0, current_template.start).as_string());
+
+    // Retrieve the HTML portion of the source.
+    base::StringPiece html_template =
+        remaining.substr(current_template.start, current_template.length);
+
+    // Perform replacements with JS escaping.
+    std::string formatted_html;
+    if (!ReplaceTemplateExpressionsInternal(html_template, replacements, true,
+                                            &formatted_html)) {
+      return false;
+    }
+
+    // Append the formatted HTML template.
+    formatted->append(formatted_html);
+
+    // Increment to the end of the current template.
+    remaining =
+        remaining.substr(current_template.start + current_template.length);
   }
-
-  // Only one template allowed per file.
-  TemplatePosition second_start_result =
-      FindHtmlTemplateStart(source.substr(start_result.position));
-  if (second_start_result.type != NONE)
-    return false;
-
-  TemplatePosition end_result =
-      FindHtmlTemplateEnd(source.substr(start_result.position));
-
-  // Template must be properly terminated.
-  if (start_result.type != end_result.type)
-    return false;
-
-  // Retrieve the HTML portion of the source.
-  base::StringPiece html_template =
-      source.substr(start_result.position, end_result.position);
-
-  // Perform replacements with JS escaping.
-  std::string formatted_html;
-  if (!ReplaceTemplateExpressionsInternal(html_template, replacements, true,
-                                          &formatted_html)) {
-    return false;
-  }
-
-  // Re-assemble the JS file.
-  *formatted =
-      source.substr(0, start_result.position).as_string() + formatted_html +
-      source.substr(start_result.position + end_result.position).as_string();
   return true;
 }
 
diff --git a/ui/base/template_expressions_unittest.cc b/ui/base/template_expressions_unittest.cc
index e254137e..6f82f387f 100644
--- a/ui/base/template_expressions_unittest.cc
+++ b/ui/base/template_expressions_unittest.cc
@@ -275,17 +275,6 @@
 
   // All these cases should fail.
   const TestCase kTestCases[] = {
-      // 2 HTML template strings are not allowed.
-      {"Polymer({\n"
-       "  _template: html`\n"
-       "    <span>Hello</span>\n"
-       "  `,\n"
-       "  _template: html`\n"
-       "    <div>World</div>\n"
-       "  `,\n"
-       "  is: 'foo-element',\n"
-       "});",
-       ""},
       // Nested templates not allowed.
       {"Polymer({\n"
        "  _template: html`\n"
@@ -349,4 +338,54 @@
   }
 }
 
+TEST(TemplateExpressionsTest, JSMultipleTemplates) {
+  TemplateReplacements substitutions;
+  substitutions["test"] = "word";
+  substitutions["5"] = "number";
+
+  const TestCase kTestCases[] = {
+      // Only the second template has substitutions
+      {"Polymer({\n"
+       "  _template: html`<div>Hello</div>`,\n"
+       "  is: 'foo-element',\n"
+       "});"
+       "Polymer({\n"
+       "  _template: html`<div>$i18n{5}$i18n{test}</div>`,\n"
+       "  is: 'bar-element',\n"
+       "});",
+       "Polymer({\n"
+       "  _template: html`<div>Hello</div>`,\n"
+       "  is: 'foo-element',\n"
+       "});"
+       "Polymer({\n"
+       "  _template: html`<div>numberword</div>`,\n"
+       "  is: 'bar-element',\n"
+       "});"},
+      // 2 templates, both with substitutions.
+      {"Polymer({\n"
+       "  _template: html`<div>$i18n{test}</div>`,\n"
+       "  is: 'foo-element',\n"
+       "});"
+       "Polymer({\n"
+       "  _template: html`<div>$i18n{5}</div>`,\n"
+       "  is: 'bar-element',\n"
+       "});",
+       "Polymer({\n"
+       "  _template: html`<div>word</div>`,\n"
+       "  is: 'foo-element',\n"
+       "});"
+       "Polymer({\n"
+       "  _template: html`<div>number</div>`,\n"
+       "  is: 'bar-element',\n"
+       "});"}};
+
+  std::string formatted;
+  for (const TestCase test_case : kTestCases) {
+    ASSERT_TRUE(ReplaceTemplateExpressionsInJS(test_case.js_in, substitutions,
+                                               &formatted));
+    EXPECT_EQ(test_case.expected_out, formatted);
+    formatted.clear();
+  }
+}
+
 }  // namespace ui
diff --git a/ui/ozone/demo/BUILD.gn b/ui/ozone/demo/BUILD.gn
index e76ca1f..f7530e8 100644
--- a/ui/ozone/demo/BUILD.gn
+++ b/ui/ozone/demo/BUILD.gn
@@ -4,7 +4,7 @@
 
 import("//gpu/vulkan/features.gni")
 if (is_fuchsia) {
-  import("//build/config/fuchsia/rules.gni")
+  import("//build/config/fuchsia/generate_runner_scripts.gni")
 }
 
 group("demo") {
diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn
index b92fe5397..1b7d70e8 100644
--- a/ui/views/BUILD.gn
+++ b/ui/views/BUILD.gn
@@ -639,6 +639,7 @@
       "corewm/tooltip.h",
       "corewm/tooltip_aura.h",
       "corewm/tooltip_controller.h",
+      "corewm/tooltip_win.h",
       "event_monitor_aura.h",
       "touchui/touch_selection_controller_impl.h",
       "touchui/touch_selection_menu_runner_views.h",
@@ -666,6 +667,7 @@
       "corewm/cursor_height_provider_win.cc",
       "corewm/tooltip_aura.cc",
       "corewm/tooltip_controller.cc",
+      "corewm/tooltip_win.cc",
       "drag_utils_aura.cc",
       "event_monitor_aura.cc",
       "metrics_aura.cc",
diff --git a/ui/views/corewm/tooltip_win.cc b/ui/views/corewm/tooltip_win.cc
new file mode 100644
index 0000000..971e0dd
--- /dev/null
+++ b/ui/views/corewm/tooltip_win.cc
@@ -0,0 +1,178 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/views/corewm/tooltip_win.h"
+
+#include "base/i18n/rtl.h"
+#include "base/logging.h"
+#include "base/win/windowsx_shim.h"
+#include "ui/base/l10n/l10n_util_win.h"
+#include "ui/display/display.h"
+#include "ui/display/screen.h"
+#include "ui/display/win/screen_win.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/system_fonts_win.h"
+#include "ui/views/corewm/cursor_height_provider_win.h"
+
+namespace views {
+namespace corewm {
+
+TooltipWin::TooltipWin(HWND parent)
+    : parent_hwnd_(parent), tooltip_hwnd_(nullptr), showing_(false) {
+  memset(&toolinfo_, 0, sizeof(toolinfo_));
+  toolinfo_.cbSize = sizeof(toolinfo_);
+  toolinfo_.uFlags = TTF_IDISHWND | TTF_TRACK | TTF_ABSOLUTE;
+  toolinfo_.uId = reinterpret_cast<UINT_PTR>(parent_hwnd_);
+  toolinfo_.hwnd = parent_hwnd_;
+  toolinfo_.lpszText = nullptr;
+  toolinfo_.lpReserved = nullptr;
+  SetRectEmpty(&toolinfo_.rect);
+}
+
+TooltipWin::~TooltipWin() {
+  if (tooltip_hwnd_)
+    DestroyWindow(tooltip_hwnd_);
+}
+
+bool TooltipWin::HandleNotify(int w_param, NMHDR* l_param, LRESULT* l_result) {
+  if (tooltip_hwnd_ == nullptr)
+    return false;
+
+  switch (l_param->code) {
+    case TTN_POP:
+      showing_ = false;
+      return true;
+    case TTN_SHOW:
+      *l_result = TRUE;
+      PositionTooltip();
+      showing_ = true;
+      return true;
+    default:
+      break;
+  }
+  return false;
+}
+
+bool TooltipWin::EnsureTooltipWindow() {
+  if (tooltip_hwnd_)
+    return true;
+
+  tooltip_hwnd_ =
+      CreateWindowEx(WS_EX_TRANSPARENT | l10n_util::GetExtendedTooltipStyles(),
+                     TOOLTIPS_CLASS, nullptr, TTS_NOPREFIX | WS_POPUP, 0, 0, 0,
+                     0, parent_hwnd_, nullptr, nullptr, nullptr);
+  if (!tooltip_hwnd_) {
+    PLOG(WARNING) << "tooltip creation failed, disabling tooltips";
+    return false;
+  }
+
+  MaybeOverrideFont();
+
+  SendMessage(tooltip_hwnd_, TTM_ADDTOOL, 0,
+              reinterpret_cast<LPARAM>(&toolinfo_));
+  return true;
+}
+
+void TooltipWin::PositionTooltip() {
+  gfx::Point screen_point =
+      display::win::ScreenWin::DIPToScreenPoint(location_);
+  const int cursoroffset = GetCurrentCursorVisibleHeight();
+  screen_point.Offset(0, cursoroffset);
+
+  DWORD tooltip_size = SendMessage(tooltip_hwnd_, TTM_GETBUBBLESIZE, 0,
+                                   reinterpret_cast<LPARAM>(&toolinfo_));
+  const gfx::Size size(LOWORD(tooltip_size), HIWORD(tooltip_size));
+
+  const display::Display display(
+      display::Screen::GetScreen()->GetDisplayNearestPoint(location_));
+
+  gfx::Rect tooltip_bounds(screen_point, size);
+  tooltip_bounds.AdjustToFit(
+      display::win::ScreenWin::DIPToScreenRect(parent_hwnd_,
+                                               display.work_area()));
+  SetWindowPos(tooltip_hwnd_, nullptr, tooltip_bounds.x(), tooltip_bounds.y(),
+               0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
+
+  MaybeOverrideFont();
+}
+
+void TooltipWin::MaybeOverrideFont() {
+  gfx::win::FontAdjustment font_adjustment;
+  const HFONT old_font = GetWindowFont(tooltip_hwnd_);
+
+  // Determine if we need to override the font.
+  if ((!override_font_.get() || override_font_.get() != old_font) &&
+      l10n_util::NeedOverrideDefaultUIFont(
+          &font_adjustment.font_family_override, &font_adjustment.font_scale)) {
+    // Determine if we need to regenerate the font.
+    // There are a number of situations under which Windows can replace the
+    // font in a tooltip, but we don't actually need to regenerate our override
+    // font unless the underlying text/DPI scale of the window has changed.
+    const float current_scale =
+        display::win::ScreenWin::GetScaleFactorForHWND(tooltip_hwnd_);
+    if (!override_font_.get() || current_scale != override_scale_) {
+      override_font_.reset(
+          gfx::win::AdjustExistingSystemFont(old_font, font_adjustment));
+      override_scale_ = current_scale;
+    }
+
+    // Override the font in the tooltip.
+    SetWindowFont(tooltip_hwnd_, override_font_.get(), FALSE);
+  }
+}
+
+int TooltipWin::GetMaxWidth(const gfx::Point& location) const {
+  const gfx::Point screen_point =
+      display::win::ScreenWin::DIPToScreenPoint(location);
+  display::Display display(
+      display::Screen::GetScreen()->GetDisplayNearestPoint(screen_point));
+  const gfx::Rect monitor_bounds = display.bounds();
+  return (monitor_bounds.width() + 1) / 2;
+}
+
+void TooltipWin::SetText(aura::Window* window,
+                         const base::string16& tooltip_text,
+                         const gfx::Point& location) {
+  if (!EnsureTooltipWindow())
+    return;
+
+  // See comment in header for details on why |location_| is needed.
+  location_ = location;
+
+  base::string16 adjusted_text(tooltip_text);
+  base::i18n::AdjustStringForLocaleDirection(&adjusted_text);
+  toolinfo_.lpszText = const_cast<WCHAR*>(adjusted_text.c_str());
+  SendMessage(tooltip_hwnd_, TTM_SETTOOLINFO, 0,
+              reinterpret_cast<LPARAM>(&toolinfo_));
+
+  int max_width = GetMaxWidth(location_);
+  SendMessage(tooltip_hwnd_, TTM_SETMAXTIPWIDTH, 0, max_width);
+}
+
+void TooltipWin::Show() {
+  if (!EnsureTooltipWindow())
+    return;
+
+  SendMessage(tooltip_hwnd_, TTM_TRACKACTIVATE,
+              TRUE, reinterpret_cast<LPARAM>(&toolinfo_));
+
+  // Bring the window to the front.
+  SetWindowPos(tooltip_hwnd_, HWND_TOPMOST, 0, 0, 0, 0,
+               SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOSIZE);
+}
+
+void TooltipWin::Hide() {
+  if (!tooltip_hwnd_)
+    return;
+
+  SendMessage(tooltip_hwnd_, TTM_TRACKACTIVATE, FALSE,
+              reinterpret_cast<LPARAM>(&toolinfo_));
+}
+
+bool TooltipWin::IsVisible() {
+  return showing_;
+}
+
+}  // namespace corewm
+}  // namespace views
diff --git a/ui/views/corewm/tooltip_win.h b/ui/views/corewm/tooltip_win.h
new file mode 100644
index 0000000..9ed24d3
--- /dev/null
+++ b/ui/views/corewm/tooltip_win.h
@@ -0,0 +1,84 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_VIEWS_COREWM_TOOLTIP_WIN_H_
+#define UI_VIEWS_COREWM_TOOLTIP_WIN_H_
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include "base/compiler_specific.h"
+#include "base/macros.h"
+#include "base/optional.h"
+#include "base/strings/string16.h"
+#include "base/win/scoped_gdi_object.h"
+#include "ui/gfx/geometry/point.h"
+#include "ui/views/corewm/tooltip.h"
+
+namespace views {
+namespace corewm {
+
+// Implementation of Tooltip that uses the native win32 control for showing the
+// tooltip.
+class VIEWS_EXPORT TooltipWin : public Tooltip {
+ public:
+  explicit TooltipWin(HWND parent);
+  ~TooltipWin() override;
+
+  // HandleNotify() is forwarded from DesktopWindowTreeHostWin to keep the
+  // native tooltip in sync.
+  bool HandleNotify(int w_param, NMHDR* l_param, LRESULT* l_result);
+
+ private:
+  // Ensures |tooltip_hwnd_| is valid. Returns true if valid, false if there
+  // a problem creating |tooltip_hwnd_|.
+  bool EnsureTooltipWindow();
+
+  // Sets the position of the tooltip.
+  void PositionTooltip();
+
+  // Might override the font size for localization (e.g. Hindi).
+  void MaybeOverrideFont();
+
+  // Tooltip:
+  int GetMaxWidth(const gfx::Point& location) const override;
+  void SetText(aura::Window* window,
+               const base::string16& tooltip_text,
+               const gfx::Point& location) override;
+  void Show() override;
+  void Hide() override;
+  bool IsVisible() override;
+
+  // Font we're currently overriding our UI font with.
+  // Should outlast |tooltip_hwnd_|.
+  base::win::ScopedHFONT override_font_;
+
+  // The window |tooltip_hwnd_| is parented to.
+  HWND parent_hwnd_;
+
+  // Shows the tooltip.
+  HWND tooltip_hwnd_;
+
+  // Used to modify the tooltip.
+  TOOLINFO toolinfo_;
+
+  // Is the tooltip showing?
+  bool showing_;
+
+  // Location to show the tooltip at. In order to position the tooltip we need
+  // to know the size. The size is only available from TTN_SHOW, so we have to
+  // cache it.
+  gfx::Point location_;
+
+  // What the scale was the last time we overrode the font, to see if we can
+  // re-use our previous override.
+  float override_scale_ = 0.0f;
+
+  DISALLOW_COPY_AND_ASSIGN(TooltipWin);
+};
+
+}  // namespace corewm
+}  // namespace views
+
+#endif  // UI_VIEWS_COREWM_TOOLTIP_WIN_H_
diff --git a/ui/views/views_features.cc b/ui/views/views_features.cc
index 65609e6..4f2750ce 100644
--- a/ui/views/views_features.cc
+++ b/ui/views/views_features.cc
@@ -11,6 +11,12 @@
 
 // Please keep alphabetized.
 
+#if defined(OS_WIN)
+// Uses aura tooltips instead of the native comctl32 tooltips on Windows.
+const base::Feature kEnableAuraTooltipsOnWindows{
+    "EnableAuraTooltipsOnWindows", base::FEATURE_ENABLED_BY_DEFAULT};
+#endif  // OS_WIN
+
 // Increases corner radius on Dialogs for the material design refresh.
 // TODO(sajadm): Remove this feature flag when platform inconsistencies
 // have been fixed as recorded on: https://crbug.com/932970
diff --git a/ui/views/views_features.h b/ui/views/views_features.h
index 3c064f7..de370cbf 100644
--- a/ui/views/views_features.h
+++ b/ui/views/views_features.h
@@ -6,12 +6,17 @@
 #define UI_VIEWS_VIEWS_FEATURES_H_
 
 #include "base/feature_list.h"
+#include "build/build_config.h"
 #include "ui/views/views_export.h"
 
 namespace views {
 namespace features {
 
 // Please keep alphabetized.
+#if defined(OS_WIN)
+VIEWS_EXPORT extern const base::Feature kEnableAuraTooltipsOnWindows;
+#endif  // OS_WIN
+
 VIEWS_EXPORT extern const base::Feature kEnableMDRoundedCornersOnDialogs;
 VIEWS_EXPORT extern const base::Feature kEnableViewPaintOptimization;
 
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
index 2f78bf6..b5041a5 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
@@ -31,6 +31,8 @@
 #include "ui/gfx/native_widget_types.h"
 #include "ui/gfx/path_win.h"
 #include "ui/views/corewm/tooltip_aura.h"
+#include "ui/views/corewm/tooltip_win.h"
+#include "ui/views/views_features.h"
 #include "ui/views/views_switches.h"
 #include "ui/views/widget/desktop_aura/desktop_drag_drop_client_win.h"
 #include "ui/views/widget/desktop_aura/desktop_native_cursor_manager.h"
@@ -92,7 +94,8 @@
       drag_drop_client_(nullptr),
       should_animate_window_close_(false),
       pending_close_(false),
-      has_non_client_view_(false) {}
+      has_non_client_view_(false),
+      tooltip_(nullptr) {}
 
 DesktopWindowTreeHostWin::~DesktopWindowTreeHostWin() {
   desktop_native_widget_aura_->OnDesktopWindowTreeHostDestroyed(this);
@@ -163,7 +166,12 @@
 void DesktopWindowTreeHostWin::OnWidgetInitDone() {}
 
 std::unique_ptr<corewm::Tooltip> DesktopWindowTreeHostWin::CreateTooltip() {
-  return std::make_unique<corewm::TooltipAura>();
+  if (base::FeatureList::IsEnabled(features::kEnableAuraTooltipsOnWindows))
+    return std::make_unique<corewm::TooltipAura>();
+
+  DCHECK(!tooltip_);
+  tooltip_ = new corewm::TooltipWin(GetAcceleratedWidget());
+  return base::WrapUnique(tooltip_);
 }
 
 std::unique_ptr<aura::client::DragDropClient>
@@ -990,6 +998,12 @@
     compositor()->ScheduleRedrawRect(invalid_rect);
 }
 
+bool DesktopWindowTreeHostWin::HandleTooltipNotify(int w_param,
+                                                   NMHDR* l_param,
+                                                   LRESULT* l_result) {
+  return tooltip_ && tooltip_->HandleNotify(w_param, l_param, l_result);
+}
+
 void DesktopWindowTreeHostWin::HandleMenuLoop(bool in_menu_loop) {
   if (in_menu_loop) {
     tooltip_disabler_ = std::make_unique<wm::ScopedTooltipDisabler>(window());
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
index e63ced1..b195b58 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
@@ -37,6 +37,10 @@
 class HWNDMessageHandler;
 class NonClientFrameView;
 
+namespace corewm {
+class TooltipWin;
+}
+
 namespace test {
 class DesktopWindowTreeHostWinTestApi;
 }
@@ -209,6 +213,9 @@
   void HandleInputLanguageChange(DWORD character_set,
                                  HKL input_language_id) override;
   void HandlePaintAccelerated(const gfx::Rect& invalid_rect) override;
+  bool HandleTooltipNotify(int w_param,
+                           NMHDR* l_param,
+                           LRESULT* l_result) override;
   void HandleMenuLoop(bool in_menu_loop) override;
   bool PreHandleMSG(UINT message,
                     WPARAM w_param,
@@ -281,6 +288,10 @@
   // True if the window should have the frame removed.
   bool remove_standard_frame_;
 
+  // Owned by TooltipController, but we need to forward events to it so we keep
+  // a reference.
+  corewm::TooltipWin* tooltip_;
+
   // Visibility of the cursor. On Windows we can have multiple root windows and
   // the implementation of ::ShowCursor() is based on a counter, so making this
   // member static ensures that ::ShowCursor() is always called exactly once
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
index c1dc0c75..a4649b8 100644
--- a/ui/views/win/hwnd_message_handler.cc
+++ b/ui/views/win/hwnd_message_handler.cc
@@ -2409,6 +2409,12 @@
   return 0;
 }
 
+LRESULT HWNDMessageHandler::OnNotify(int w_param, NMHDR* l_param) {
+  LRESULT l_result = 0;
+  SetMsgHandled(delegate_->HandleTooltipNotify(w_param, l_param, &l_result));
+  return l_result;
+}
+
 void HWNDMessageHandler::OnPaint(HDC dc) {
   // Call BeginPaint()/EndPaint() around the paint handling, as that seems
   // to do more to actually validate the window's drawing region. This only
diff --git a/ui/views/win/hwnd_message_handler.h b/ui/views/win/hwnd_message_handler.h
index a67e0e7..cbc7961 100644
--- a/ui/views/win/hwnd_message_handler.h
+++ b/ui/views/win/hwnd_message_handler.h
@@ -444,6 +444,7 @@
     CR_MSG_WM_NCCREATE(OnNCCreate)
     CR_MSG_WM_NCHITTEST(OnNCHitTest)
     CR_MSG_WM_NCPAINT(OnNCPaint)
+    CR_MSG_WM_NOTIFY(OnNotify)
     CR_MSG_WM_PAINT(OnPaint)
     CR_MSG_WM_SETFOCUS(OnSetFocus)
     CR_MSG_WM_SETICON(OnSetIcon)
@@ -501,6 +502,7 @@
   void OnNCPaint(HRGN rgn);
   LRESULT OnNCUAHDrawCaption(UINT message, WPARAM w_param, LPARAM l_param);
   LRESULT OnNCUAHDrawFrame(UINT message, WPARAM w_param, LPARAM l_param);
+  LRESULT OnNotify(int w_param, NMHDR* l_param);
   void OnPaint(HDC dc);
   LRESULT OnReflectedMessage(UINT message, WPARAM w_param, LPARAM l_param);
   LRESULT OnScrollMessage(UINT message, WPARAM w_param, LPARAM l_param);
diff --git a/ui/views/win/hwnd_message_handler_delegate.h b/ui/views/win/hwnd_message_handler_delegate.h
index ddc640e..45c4e5b2 100644
--- a/ui/views/win/hwnd_message_handler_delegate.h
+++ b/ui/views/win/hwnd_message_handler_delegate.h
@@ -221,6 +221,11 @@
   // Called to compel the delegate to paint |invalid_rect| accelerated.
   virtual void HandlePaintAccelerated(const gfx::Rect& invalid_rect) = 0;
 
+  // Called to forward a WM_NOTIFY message to the tooltip manager.
+  virtual bool HandleTooltipNotify(int w_param,
+                                   NMHDR* l_param,
+                                   LRESULT* l_result) = 0;
+
   // Invoked on entering/exiting a menu loop.
   virtual void HandleMenuLoop(bool in_menu_loop) = 0;
 
diff --git a/ui/webui/resources/cr_elements/BUILD.gn b/ui/webui/resources/cr_elements/BUILD.gn
index c3a7ff4..d463d3ec 100644
--- a/ui/webui/resources/cr_elements/BUILD.gn
+++ b/ui/webui/resources/cr_elements/BUILD.gn
@@ -91,6 +91,12 @@
   html_type = "style-module"
 }
 
+polymer_modulizer("cr_page_host_style_css") {
+  js_file = "cr_page_host_style_css.m.js"
+  html_file = "cr_page_host_style_css.html"
+  html_type = "style-module"
+}
+
 polymer_modulizer("shared_vars_css") {
   js_file = "shared_vars_css.m.js"
   html_file = "shared_vars_css.html"
@@ -136,6 +142,7 @@
   deps = [
     ":action_link_css_module",
     ":cr_icons_css_module",
+    ":cr_page_host_style_css_module",
     ":hidden_style_css_module",
     ":icons_module",
     ":md_select_css_module",
diff --git a/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js b/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js
index ddc9f58..fb555d65 100644
--- a/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js
+++ b/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js
@@ -265,14 +265,14 @@
       return;
     }
 
-    // Accept Enter keys from either the dialog, or a child input or cr-input
-    // element (but consider that the event may have been retargeted).
-    const origTarget = e.composedPath()[0];
-    const accept = e.target == this || origTarget.tagName == 'CR-INPUT' ||
-        (origTarget.tagName == 'INPUT' &&
-         // <cr-input> can only be text-like; apply the same limit to <input> so
-         // that e.g. enter on a checkbox does not submit the dialog.
-         ['text', 'password', 'number', 'search'].includes(origTarget.type));
+    // Accept Enter keys from either the dialog itself, or a child cr-input,
+    // considering that the event may have been retargeted, for example if the
+    // cr-input is nested inside another element. Also exclude inputs of type
+    // 'search', since hitting 'Enter' on a search field most likely intends to
+    // trigger searching.
+    const accept = e.target === this ||
+        e.composedPath().some(
+            el => el.tagName == 'CR-INPUT' && el.type != 'search');
     if (!accept) {
       return;
     }
diff --git a/ui/webui/resources/cr_elements_resources_v3.grdp b/ui/webui/resources/cr_elements_resources_v3.grdp
index 39d855b..4185ee4 100644
--- a/ui/webui/resources/cr_elements_resources_v3.grdp
+++ b/ui/webui/resources/cr_elements_resources_v3.grdp
@@ -61,6 +61,11 @@
          use_base_dir="false"
          type="BINDATA"
          compress="gzip" />
+  <include name="IDR_CR_ELEMENTS_CR_PAGE_HOST_STYLE_CSS_M_JS"
+         file="${root_gen_dir}/ui/webui/resources/cr_elements/cr_page_host_style_css.m.js"
+         use_base_dir="false"
+         type="BINDATA"
+         compress="gzip" />
   <include name="IDR_CR_ELEMENTS_CR_LAZY_RENDER_M_JS"
          file="${root_gen_dir}/ui/webui/resources/cr_elements/cr_lazy_render/cr_lazy_render.m.js"
          use_base_dir="false"
